一款自动化Host碰撞工具
简介
自动化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 string Hosts in file to test -I string Nginx Ip in file to test -O string Output File (default "result.txt") -T int Thread for Http connection. (default 3) -U Open to send random UserAgent to avoid bot detection. -d string Host to test -i string Nginx IP -t int Timeout for Http connection. (default 5) -v Show hostscan version
运行截图
使用的测试环境是下一小节中介绍的
Host 碰撞成功
碰撞返回 400
测试环境
Docker
docker pull vultarget/host_collisiondocker run -it -p 3333:8080 --rm vultarget/host_collision
Nginx 配置
反代服务器 (核心)
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初始页面
下载地址:
https://github.com/cckuailong/hostscan
文章来源:HACK之道
黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!
如侵权请私聊我们删文
END