Configurando o docker owasp / zap em uma instância do AWS EC2 e conectando-se a ela

1
Eu tenho arrancado meu cabelo nos últimos dias sobre isso.

Eu tenho uma instância do EC2 ligada ao Ubuntu e configurei minha instância do AWS para que todo o tráfego que acessa a porta 8088 e 8090 seja permitido. Indo de neste link , achei que seria fácil simplesmente usar a GUI com meu navegador, já que não tenho acesso à GUI na minha instância do EC2. Então eu corro este comando (do tutorial):

docker run -u zap -p 8088:8088 -p 8090:8090 -i owasp/zap2docker-stable zap-webswing.sh

Começa sem dizer nada. Mas quando eu vou para o meu EC2 IP público com a porta 8088 , acabo de receber um erro dizendo "Este site não pode ser acessado". Eu configurei com sucesso o jenkins nessa instância do EC2 em uma porta diferente, e isso é acessível ... por isso não tenho certeza porque não consigo acessar essa porta ao tentar executar o OWASP / ZAP.

Quando executo sudo iptables -t nat -L -n , obtenho o seguinte:

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0
MASQUERADE  tcp  --  172.17.0.2           172.17.0.2           tcp dpt:8088

Chain DOCKER (2 references)
target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8088 to:172.17.0.2:8088

Eu não sou muito bom com esse tipo de coisa ... então não tenho ideia do que realmente está acontecendo ou do que preciso mudar? Mas existe mesmo assim que eu posso iniciar o OWASP / ZAP e fazê-lo funcionar quando eu for ao meu IP público e à porta que eu especifiquei?

    
por Alex 25.02.2017 / 01:31

1 resposta

0

Desculpe apresentar essa pergunta antiga, mas tive problemas com a execução do ZAP dentro de um contêiner docker no passado (realmente, AWS ECS). No meu caso, eu realmente não queria definir a porta antes do tempo (deixar o Docker gerenciar a porta especificamente, já que eu poderia estar executando mais de uma instância zap no mesmo host - precisávamos faça isso em um ambiente de CI e as coisas ficarão estranhas se você migrar para o AWS ECS). Houve dois problemas que descobri com o listener ZAP + Docker + Random Port:

  1. O ZAP só escutará na porta que você especificar, e se uma solicitação de entrada for para uma porta diferente , o ZAP simplesmente ignorará o tráfego, com um resultado semelhante a "Este site não pode ser alcançado "
  2. Por corolário, ele também só ouvirá o tráfego originado com o mesmo hostname . Então, o ZAP acha que está ouvindo localhost e qualquer tráfego que pareça ser destinado a algo diferente de localhost ele ignora.

Eu acho que os dois são realmente os mesmos. No meu caso, eu tive que trapacear para que funcionasse. Eu tive que adicionar um proxy reverso nginx para o contêiner zap (eu usei nginx porque é leve e fácil de configurar para isso). Basicamente, o fluxo parecia algo como:

Eu - > nginx no container - (reescreve o cabeçalho do host para localhost:8080 ) - > Ouvinte ZAP

Não havia outro processamento no lado do nginx, apenas literalmente "ouça o tráfego em uma porta fixa (o Docker gerencia a porta externa ), reescreva os cabeçalhos do host em localhost:8080 e envie o tráfego para localhost:8080 (onde o ZAP estava escutando). É meio hacky, mas funcionou para mim.

    
por 14.03.2018 / 17:11