渗透测试学习—HTB靶机之Base
这是HTB的Starting Point实验室中第九台靶机,主要根据官方提供的writeup来练习,中间穿插一些自己的理解和工具使用扩展。
一、环境配置
-
工具准备
kali linux 2020.1 vmware虚拟机,配置为hostonly模式,共享宿主机网卡上网;
firefox浏览器(kali linux自带);
Base靶机IP地址:10.10.10.48;(VIP可用) -
网络连接,按照说明连接到Starting Point实验室。
二、开始渗透
1. 信息收集
使用nmap扫描发现靶机开放了22和80端口。
在浏览器中访问靶机的80端口,出现一个网页,除了LOGIN菜单外其他菜单点击没反应。
使用网站目录**工具对网站目录进行枚举,此处使用gobuster。(需要apt安装)
发现了两个感兴趣的目录/login和/_uploaded(可能支持上传文件),点击网页上LOGIN菜单,发现url为10.10.10.48/login/login.php,查看/login目录中的其他内容。
login目录中还有config.php和login.php.swp(使用vim、nano之类的工具编辑文件非正常退出会生成.swp文件),config.php暂时不知用途,从名称看应该是配置类文件。
点击下载login.php.swp文件到本地,该文件无法直接使用文本工具查看,可以使用strings命令查看。
在最后会看到如下内容,这段代码根据存储在config.php中的变量来检查用户输入的用户名/密码组合,以查看它们是否匹配。
其中以下代码使用strcmp字符串匹配函数来检查用户名和密码,这是不安全的,可以轻松地绕开。 因为如果给strcmp一个空数组与存储的密码进行比较,它将返回null。 在PHP中,==
运算符仅检查变量的值是否相等,而NULL的值等于0。编写此值的正确方法是使用===
运算符,该运算符同时检查值和类型。
2. 获取用户shell
设置浏览器代理,启用burpsuite拦截页面登录请求,并修改为username和password参数数组类型,并发送请求到靶机。
请求成功发送后浏览器跳转到了upload.php页面,出现了上传文件的页面。
到这里可以使用之前靶机中使用过的方法了,修改IP地址后上传用于建立反向连接的php文件,kali linux中启动netcat监听,访问上传的文件,kali linux中收到webshell。
修改端口
kali linux中启动监听
上传rev.php文件到靶机目录中。
浏览器中访问上传的文件。
kali linux中收到反向连接,获取了webshell。
有了webshell中在系统中枚举发现存在一个john用户,该用户家目录中有user.txt文件,但此shell无访问权限,
前面查看/login目录中有一个config.php文件,此时可以查看它的内容。
发现了一组用户名和密码。靶机开启了22端口,可以使用此密码尝试登录john用户。
登录成功,获取了john用户家目录中的user.txt文件内容。
也可以在当前webshell中使用python -c 'import pty; pty.spawn("/bin/bash")'
命令获取bash然后su到john用户。
3. 权限提升
获得了用户shell之后,要想办法提升权限到root用户以获取root.txt。
查看当前用户id和sudo权限后发现,用户具有以root用户身份执行find命令的权限。而find命令的-exec参数是可以使用root身份运行bash的。
执行find命令后获得了root用户的shell,并获取了root.txt中的flag。