[EM CONSTRUÇÃO]:hammer:
Descrição e solução de LABs da Burp Academy.- Authentication
- Business logic vulnerabilities
- Clickjacking
- CORS
- Cross-Site-Scripting
- CSRF
- File upload vulnerabilities
- Information disclosure
- OAuth authentication
- Server-side request forgery (SSRF)
- SQL injection
- WebSockets
- XML external entity (XXE) injection
Visualizar LABs
Este LAB possui uma configuração incorreta de CORS e confia em todas origens. Para solucionar o LAB, codifique um código JavaScript que utilize CORS para obter a API Key do administrador e o envie para o servidor de exploit. Este LAB é solucionado quando a API Key do administrador é submetida.
💡
- Autentique e acesse a área do usuário.
- É possível identificar o uso do seguinte endpoint:
GET /accountDetails
- Este endpoint retorna a API Key do usuário autenticado:
{
"username": "wiener",
"email": "",
"apikey": "BDKD9r0wSagpq7fIN6DlyMkmVd8BPVWs",
"sessions": [
"VB2znrX8xyrGsfeFTCb7Dv1VBkL5DTuQ"
]
}
- Programe um código JavaScript para realizar uma requisição GET para o endpoint identificado e obter a API Key.
- Este código também deve enviar a API Key para o servidor de exploit.
- O código deve ser armazenado no servidor de exploit e entregue para a vítima.
- Após o último passo, a API Key deve aparecer no log do servidor de exploit:
GET /?apikey=V8YQnKjWB8oGz0YD6tjO4r8V8itPe6Jc
Visualizar LABs
Este LAB possui mensagens de erro detalhadas que expõem o uso de uma versão vulnerável de um framework de terceiros. Para solucionar o LAB, obtenha e envie o número da versão deste framework.
💡
- Acesse os detalhes de qualquer produto do catálogo.
- Uma chamada GET com o parâmetro
productId
é realizada:
GET /product?productId=2
- Substitua o parâmetro por um caractere especial qualquer:
GET /product?productId='
- Reenvie a chamada com o parâmetro alterado.
- Uma mensagem de erro detalhada será recebida, observando a última linha da mensagem, é possível identificar a versão do Apache Struts utilizada.
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833)
Apache Struts 2 2.3.31
- Para solucionar o LAB, submeta a versão identificada.
Este LAB contém uma página de debug que expõe informação sensível da aplicação. Para solucionar o LAB, obtenha e envie a variável de ambiente SECRET_KEY
.
💡
- Busque por comentários na página, é possível identificar o comentário.
<!-- <a href=/cgi-bin/phpinfo.php>Debug -->
- Acesse a página presente no comentário, no caso
/cgi-bin/phpinfo.php
. - Na página acessada é possível visualizar a variável de ambiente
SECRET_KEY
. - Para solucionar o LAB, submeta o valor da variável encontrada.
Este LAB vaza seu código fonte através de arquivos de backup que estão em um diretório escondido. Para solucionar o LAB, identifique e envie a senha do banco de dados, que esta fixa e exposta no código.
💡
- Enumerando os diretórios da aplicação, é possível identificar o diretório
backup
. - Acesse o diretório descoberto, onde é possível visualizar o arquivo
ProductTemplate.java.bak
. - Acesse o arquivo identificado.
- No código, é possível identificar os dados de conexão do banco de dados, sendo possível obter a senha de acesso.
ConnectionBuilder connectionBuilder = ConnectionBuilder.from(
"org.postgresql.Driver",
"postgresql",
"localhost",
5432,
"postgres",
"postgres",
"kw9ce735cw5r1r1syf3cxkx0dar4zp29"
- Para solucionar o LAB, submeta a senha do banco de dados.
A interface administrativa deste LAB tem uma vulnerabilidade de bypass na autenticação, porém é impraticável explorar sem conhecimento do cabeçalho HTTP customizado utilizado pelo front-end.
Para solucionar o LAB, obtenha o cabeçalho e utilize-o para bypassar a autenticação. Acesse o painel administrativo e delete a conta do Carlos.
💡
- Autentique utilizando o usuário e senha
wiener:peter
. - Envie uma requisição com método HTTP TRACE para o endpoint
/admin
. - Observando a resposta é possível identificar o cabeçalho
X-Custom-IP-Authorization: 189.54.133.189
. - Envie outra requisição para o endpoint
/admin
mas desta vez com método GET e o cabeçalho obtido anteriormente com o IP127.0.0.1
. - A chamada ficará desta forma e sua resposta apresentará o painel administrativo
GET /admin HTTP/1.1
[...]
X-Custom-IP-Authorization: 127.0.0.1
- Para solucionar o LAB, delete o usuário de Carlos.
Este LAB expõe informação sensível através do seu histórico de controle de versão. Para solucionar este LAB, obtenha a senha do usuário administrador, realize login e delete a conta de Carlos.
💡
- Realize o mapeamento da URL do LAB, o diretório
./git
será identificado. - Verifique o conteúdo do arquivo
COMMIT_EDITMSG
, é possível identificar uma frase que indica que a senha do administrador estava fixa no código.
Remove admin password from config
- Realize download dos arquivos presentes na pasta
objects
. - Utilizando Python é possível ler o conteúdo dos objetos GIT baixados (Código).
- O programa python irá retornar a linha de código que expõe a senha do administrador:
'b'blob 36\x00ADMIN_PASSWORD=322ix05781cxs4gp4nvn\n'
- Para solucionar o LAB, autentique-se com o usuário
administrator
utilizando a senha obtida e delete o usuáriocarlos
.