背景介绍
FoxyProxy 已经是很好用的 Firefox 插件了,但是缺少键盘快捷键切换代理让使用体验变得很麻烦。
举例说明,FoxyProxy 设置了 4 个代理,分别是 Socks,none,BurpSuite 以及 ZAP。
Socks 你懂的,none 代表无需代理,BurpSuite 和 ZAP 是在测试 webapp 的时候使用(TryHackMe HackTheBox)。Burp 和 ZAP 我经常配合使用。麻烦事情就来了,如果每次使用 Burp 和 ZAP 的时候,都要手动切换,效率真的太低了。
幸好 FoxyProxy 有正则规则可以将 URL 自动分配给相匹配的代理。
因此我做了一个脚本,将每次的 IP 对应生成的域名写入到 /etc/hosts
文件,然后根据域名来匹配规则,自动切换到相应的代理。
解决方案
Socks 代理不说了,各位自己添加相应的白名单和黑名单即可。
只说 Burp 和 ZAP 的思路,大家自己尝试。
这是 Burp 代理的设置:
这是 Burp 代理的规则:
ZAP 代理类似,这是设置:
这是规则:
因此,只要给浏览器的 URL 匹配 xx.burp.thm
,就自动启用 Burp 代理,只要是 xx.zap.thm
就自动启用 ZAP 代理。
那么剩下就是域名和 IP 地址的解析问题了。通常 TryHackMe 和 HackTheBox 这些都只提供 IP 地址,所以只需要将对应 IP 和域名写入 /etc/hosts
即可。
脚本如下。
#!/usr/bin/env bash
sudo sed -i '' -e :a -e '$d;N;2,3ba' -e 'P;D' /etc/hosts
# first argument is IP, second argument is subdomain name
echo -e "$1\t\t$2.none.thm" | sudo tee -a /etc/hosts
echo -e "$1\t\t$2.zap.thm" | sudo tee -a /etc/hosts
echo -e "$1\t\t$2.burp.thm" | sudo tee -a /etc/hosts
运行脚本提供两个参数,第一个是目标 IP, 第二个是子域名。也就是上面所说 xx
的部分。
比如说运行
./script.sh 2.2.2.2 opr
脚本会删除 hosts 文件最后3行,然后增加新的解析关系如下。
2.2.2.2 opr.none.thm
2.2.2.2 opr.zap.thm
2.2.2.2 opr.burp.thm
脚本的功能自行修改。思路就是这样。
那么现在就可以在浏览器使用域名访问目标机器了,并且无需手动,自由切换代理。
注意事项
另外,BurpSuite 很搞笑,默认设置不能解析域名。比如使用 bp.burp.thm
来访问目标机器,会显示 unkown host
最后无法访问。
这里必须单独在 Burp 中设置解析才行。
填入相应的域名和 IP 即可。
现在可以正常解析了。
现在,访问 bp.none.thm
,自动启动 none
代理;访问 bp.burp.thm
,自动启动 Burp
代理;访问 bp.zap.thm
,自动启动 ZAP
代理;访问其他,自动启动 socks
代理。
Burp 的行为还不清楚为什么会导致无法解析,再研究。至少现在用起来顺手多了。