自动化Host碰撞工具,帮助红队快速扩展网络边界,获取更多目标点
很多时候,访问目标网站时,使用其真实IP无法访问,只有域名才能访问到后端业务服务。这是因为反代服务器(如nginx)配置了禁止直接IP访问。
nginx后面的业务有时是隐藏的:
不开放到外网的业务,如测试业务
原来DNS解析到外网,但是后来删除了A记录(nginx后的业务没删除,转移到了内网访问)
怎么访问这些隐藏的业务呢?这就需要今天的主角登场了--Host碰撞技术
./hostscan -d test.com -i 127.0.0.1:3333./hostscan -D input/hosts.txt -I input/ips.txt -O out/output.txt -T 5 -t 10请下载release中对应平台的版本运行
注意
默认并发数为3, 如果网络环境良好,请适当调大以增加速度,最高可以设置成rlimit数值
默认UserAgent使用的是golang-hostscan/xxxx,可能留存扫描痕迹,可以使用参数'-U'来使用随机UA
现已支持输入大文件的支持,无需担心OOM
hostscan --help/ )( \ / \ / ___)(_ _)/ ___) / __) / _\ ( ( \) __ (( O )\___ \ )( \___ \( (__ / \/ /\_)(_/ \__/ (____/ (__) (____/ \___)\_/\_/\_)__)Usage of hostscan:-D stringHosts in file to test-I stringNginx Ip in file to test-O stringOutput File (default "result.txt")-T intThread for Http connection. (default 3)-U Open to send random UserAgent to avoid bot detection.-d stringHost to test-i stringNginx IP-t intTimeout for Http connection. (default 5)-v Show hostscan version
使用的测试环境是下一小节中介绍的
Host 碰撞成功
碰撞返回 400
docker pull vultarget/host_collisiondocker run -it -p 3333:8080 --rm vultarget/host_collision
server {listen 8080 default_server;server_name _;return 400;}server {listen 8080;server_name test.com;location / {proxy_pass http://127.0.0.1:80;proxy_redirect off;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;root html;index index.html index.htm;}access_log logs/test.com.log;}
第一个server表示 host为空时,会返回400
第二个server表示 nginx会根据传入的host进行服务转发,访问test.com访问的业务为 127.0.0.1:80 上的服务
server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}}
简单的nginx初始页面
工具下载地址