Codigo vulneravel a SQL Injetion

Enviada por Raul 
Raul
Codigo vulneravel a SQL Injetion
24 de December de 2016 às 12:38AM
Olá, sou novo no forum, bom vamos aoo que interessa.
Estou criando um sistema em PHP, agora fui fazer uns testes de vulnerabilidades nele, e ele me apontou 2 vezes em SQL Injction o que eu não entendi muito bem, vamos aos fatos

Aplicação desenvolvida em PHP Orientado a Objetos 7.0.9 PDO
só o PDO em si, pelo que aprendi quando estudava já anulava praticamente a injeção de sql, ok, tudo bem, vou mostrar o print do ocorrido usando a ferramenta chamada (acunetix)

print da verificação => http://prntscr.com/dnc1gb <= ele detectou que é possivel SQL injetion em Arquivo css?

prints

http://prntscr.com/dnc1gb
http://prnt.sc/dnc1n3

segundo fato, eu vi que ele retornou um resultado verdadeiro quando se pesquisa em OR, ex: 1 or 1, porem isso não me parece possivel no PDO

Attack details
URL encoded POST input logar was set to -1' or 34 = '32

This vulnerability affects /imagens/icons/.
Discovered by: Scripting (Blind_Sql_Injection.script).
Attack details
HTTP Header input via was set to -1" or 23 = "20

realmente não entendi muito bem, minha pasta de imagens é vulneravel a SQL Injection??? como assim???

esse botão Logar ele não recebe verificação, ele é apenas o gatilho para executar o script de login

usei sqlmap e não conseguir passar de forma alguma!

aqui agora o script e o formulário

eu queria primeiro pedir desculpas por postar assim, mas creio que aqui não da para editar, se tiver desobedecendo alguma regra, sinceramente desculpas.


IF(ISSET($_POST['logar'])){
$nome = filter_input(INPUT_POST, 'nome' ,FILTER_SANITIZE_STRING ,FILTER_FLAG_ENCODE_AMP);
$senha = filter_input(INPUT_POST, 'senha',FILTER_SANITIZE_STRING ,FILTER_FLAG_ENCODE_AMP);
IF ($nome == "" || $senha == ""){
$errors .= "✖ Campos vasios!<br>";
}ELSE IF($nome != "" && $senha != ""){
$userPDo = new UsuarioPdo();
$dados = $userPDo->estou_banido($nome);
if($dados == TRUE){
$sessao = new Sessao();
$sessao->banSessao();
}else{
$_username = $nome;
$header = new HeaderPdo();
$_password = $header->criptografia_Hash_MD5($senha);
$usuario = new Usuario($_username, $_password);
$tentativa = new UsuarioPdo();
$logou = $tentativa->fazer_login($usuario);
IF($logou == TRUE){
$sessao = new Sessao();
$sessao->carregaSessao($logou);
}else{
$errors .="✖ Dados invalidos!";
}
}
}
}

formulario;

<form method="POST" action="">
<table>
<tr>
<td colspan="2"><h1 style="margin-bottom: 25px;">▾ Fazer Login</h1></td>
</tr>
<tr>
<td><div style="
border-top-left-radius: 3px; border-bottom-left-radius: 3px;
margin-left: 20px; width:40px; height:40px; background: white;">
<img class="icon_login"src="imagens/icons/index/user.png" alt=""/></div></td>
<td><input class="campo_texto" name="nome" min="4" max="15" placeholder="Usuário" type="text"></td>
</tr>
<tr>
<td><div style="
border-top-left-radius: 3px; border-bottom-left-radius: 3px;
margin-left: 20px; width:40px; height:40px; background: white;">
<img class="icon_login" src="imagens/icons/index/password.png" alt=""/></div></td>
<td><input class="campo_texto" name="senha" min="1" max="15" placeholder="************" type="password"></td>
</tr>
<tr>
<td colspan="2"><input class="campo_btn" type="submit" name="logar" value="➲ Confirmar Login"</td>
</tr>
<tr>
<td colspan="2">
<p class="resposta">
<i class="fa fa-check-circle" aria-hidden="true"></i> Ao fazer login no <?php echo NOMEHOTEL ?>, você concorda com todas as regras e termos de uso.
</p>
</td>
</tr>
</table>
<p style="color:red; font-family: verdana; font-weight: bold; padding-left: 20px; padding-top: 30px;"><?php echo $errors; ?></p>
</form>
Eduardo Molina
Re: Codigo vulneravel a SQL Injetion
28 de December de 2016 às 01:15PM
Pela imagem que mandou o erro esta em CSS, e imagem, o recurso que tu utilizou para o teste deve estar meio caduco. Ja experimentou outro meio de analisar o código.
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.