![iptables 导致 GET 请求无限循环](https://linux22.com/image/625066/iptables%20%E5%AF%BC%E8%87%B4%20GET%20%E8%AF%B7%E6%B1%82%E6%97%A0%E9%99%90%E5%BE%AA%E7%8E%AF.png)
我正在尝试将 HTTP 流量从 80 重新路由到 8080 以供 Burp Suite 使用。
使用 iptables,我的命令是:
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to 127.0.0.1:8080
这样一来,流量确实被重新路由到端口 8080 并显示在 Burp 中。但是,GET 请求仍在加载,如果我禁用拦截,请求将充斥 Burp 历史记录,直到它已满。
我已经对 iptables 进行了完全刷新和重置,但没有任何效果。
编辑:经过进一步调查,我怀疑相同的请求在转发后不断返回到 Burp Suite。这可能是 Burp 的问题。帮忙?
更多信息:我在 ubuntu 13 虚拟机上执行此操作,并使用没有代理的 android 模拟器(在 VM 中运行)的浏览器进行测试。
答案1
如果我错了请纠正我,但 Burp Suite 是一个代理,因此对于每个连接,都会有另一个连接返回。您的第一个连接正在正确地重新路由到 Burp,然后,Burp 自己的出站连接也会被重新路由。您可以通过修改 iptables 规则来排除 Burp,如下所示:
iptables -t nat -A OUTPUT -p tcp --dport 80 ! --uid-owner <UID OF BURP PROCESS> -j DNAT --to 127.0.0.1:8080
当然,以不同于浏览器的用户身份运行 Burp 非常重要。如果我有更多详细信息或示例场景来描述您要完成的任务,我可能会给您更好的答案?
祝你好运。
编辑:有效的正确命令是
iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner ! --uid-owner 0 -j DNAT --to 127.0.0.1:8080
以 root 身份运行 Burp Suite 后。
答案2
我的解决方案是简单地说明 HTTP 请求的来源,并将所有路由限制为来自该 IP 地址的路由。
sudo iptables -t nat -A OUTPUT -p tcp -s 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8080
请求通过 burp 后,将不会再次被路由。
然而,这只适用于浏览器(我使用的是 Firefox)。
当我尝试使用 Android 模拟器执行此操作并将 iptable 规则更改为不同的源(如 10.0.2.1(模拟器的网关地址)、10.0.2.2、10.0.2.15)时,请求不会被路由。