Skip to content

p1ngul1n0/BurpAcademyLABs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laboratórios da Burp Academy


[EM CONSTRUÇÃO]:hammer:

Descrição e solução de LABs da Burp Academy.

Sumário

Authentication

Business logic vulnerabilities

Clickjacking

CORS

Visualizar LABs

CORS vulnerability with basic origin reflection

Descrição

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.

Solução

💡
  1. Autentique e acesse a área do usuário.
  2. É possível identificar o uso do seguinte endpoint:

GET /accountDetails

  1. Este endpoint retorna a API Key do usuário autenticado:
 {
   "username": "wiener",
   "email": "",
   "apikey": "BDKD9r0wSagpq7fIN6DlyMkmVd8BPVWs",
   "sessions": [
     "VB2znrX8xyrGsfeFTCb7Dv1VBkL5DTuQ"
   ]
 }
  1. Programe um código JavaScript para realizar uma requisição GET para o endpoint identificado e obter a API Key.
  2. Este código também deve enviar a API Key para o servidor de exploit.
  3. O código deve ser armazenado no servidor de exploit e entregue para a vítima.
  4. Após o último passo, a API Key deve aparecer no log do servidor de exploit:

GET /?apikey=V8YQnKjWB8oGz0YD6tjO4r8V8itPe6Jc

Cross-Site-Scripting

CSRF

File upload vulnerabilities

Information disclosure

Visualizar LABs

Information disclosure in error messages

Descrição

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.

Solução

💡
  1. Acesse os detalhes de qualquer produto do catálogo.
  2. Uma chamada GET com o parâmetro productId é realizada:

GET /product?productId=2

  1. Substitua o parâmetro por um caractere especial qualquer:

GET /product?productId='

  1. Reenvie a chamada com o parâmetro alterado.
  2. 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

  1. Para solucionar o LAB, submeta a versão identificada.

Information disclosure on debug page

Descrição

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.

Solução

💡
  1. Busque por comentários na página, é possível identificar o comentário.

<!-- <a href=/cgi-bin/phpinfo.php>Debug -->

  1. Acesse a página presente no comentário, no caso /cgi-bin/phpinfo.php.
  2. Na página acessada é possível visualizar a variável de ambiente SECRET_KEY.
  3. Para solucionar o LAB, submeta o valor da variável encontrada.

Source code disclosure via backup files

Descrição

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.

Solução

💡
  1. Enumerando os diretórios da aplicação, é possível identificar o diretório backup.
  2. Acesse o diretório descoberto, onde é possível visualizar o arquivo ProductTemplate.java.bak.
  3. Acesse o arquivo identificado.
  4. 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"
  1. Para solucionar o LAB, submeta a senha do banco de dados.

Authentication bypass via information disclosure

Descrição

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.

Solução

💡
  1. Autentique utilizando o usuário e senha wiener:peter.
  2. Envie uma requisição com método HTTP TRACE para o endpoint /admin.
  3. Observando a resposta é possível identificar o cabeçalho X-Custom-IP-Authorization: 189.54.133.189.
  4. Envie outra requisição para o endpoint /admin mas desta vez com método GET e o cabeçalho obtido anteriormente com o IP 127.0.0.1.
  5. 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  
  1. Para solucionar o LAB, delete o usuário de Carlos.

Information disclosure in version control history

Descrição

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.

Solução

💡
  1. Realize o mapeamento da URL do LAB, o diretório ./git será identificado.
  2. 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

  1. Realize download dos arquivos presentes na pasta objects.
  2. Utilizando Python é possível ler o conteúdo dos objetos GIT baixados (Código).
  3. O programa python irá retornar a linha de código que expõe a senha do administrador:

'b'blob 36\x00ADMIN_PASSWORD=322ix05781cxs4gp4nvn\n'

  1. Para solucionar o LAB, autentique-se com o usuário administrator utilizando a senha obtida e delete o usuário carlos.

Links Utéis

OAuth authentication

Server-side request forgery (SSRF)

SQL injection

WebSockets

XML external entity (XXE) injection