Estou trabalhando em um cliente muito limitado (baseado no Poky do Yocto Project), no qual quero redirecionar todas as solicitações http/https para minha outra máquina na mesma rede. Tenho nftables
disponÃvel no alvo e verifiquei isso, descartando com sucesso todos os pacotes direcionados para a porta 80.
sysctl net.ipv4.ip_forward
mostra 1
.
Tentei usar o seguinte script/lista de comandos nft:
nft flush ruleset
nft add table ip nat
nft add chain ip nat prerouting { type nat hook prerouting priority 0 \; }
nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }
nft add rule ip nat prerouting tcp dport 80 dnat to 10.0.0.2:8080
nft add rule ip nat prerouting tcp dport 443 dnat to 10.0.0.2:8080
nft add rule ip nat postrouting masquerade
nft list ruleset
Para testar a configuração, configurei o domÃnio test.test
para 10.0.0.2 (via /etc/hosts
) no cliente. Na minha segunda máquina, tenho o Burp escutando em todas as interfaces na porta 8080 e um servidor web simples na porta 80 ( python3 -m http.server 80
).
Então eu executo curl http://test.test
no cliente. Eu obtenho a listagem de diretórios da minha máquina Burp, mas nenhum redirecionamento pelo burp ocorre.
O que mais eu poderia tentar, para forçar todos os pacotes de saÃda para a porta 80 ou 443 a passarem pelo meu Burp. Problemas de certificado podem ser ignorados para a configuração base.
No meu caso de uso muito especÃfico, parece que preciso abordar a cadeia de saÃda, em vez da cadeia de pré-roteamento. A configuração a seguir funciona para mim:
O Stackexchange parece achar que esta é uma duplicata da pergunta original, então adicionarei um pouco mais de informação. Preciso usar o hook output neste caso, em vez de prerouting. Isso se torna aparente ao ler a descrição dos hooks (de https://wiki.nftables.org/wiki-nftables/index.php/Configuring_chains ):