自动化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 pull vultarget/host_collision
docker 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初始页面
下载地址:
https://github.com/cckuailong/hostscan
文章来源:HACK之道
黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!
如侵权请私聊我们删文
END
多一个点在看多一条小鱼干