Arquivo da categoria ‘seguranca’

Clique aqui e veja nosso novo site

Nos Ultimos tempos, o tipo de ataque mais comum entre hackers malvados, é a terrível sql injection. Em Que o hacker injeta um código malicioso no site,sistema(…), e consegui explorar o site, e conseguir diversas informações no site.

Os administradores de sites hoje em dia não estão si preocupando tanto quanto deveriam com a questão de segurança.  Alguns, não é porque não si preocupam e sim porque não dão conta de si proteger contra estes ataques.

Então este que é o meu propósito hoje. É ensinar as pessoas si precaverem do pior, que pode acontecer.

Esse código é muito simples para quem conhece alguma coisa de php.

Código php:

<?php

//si cod que vou pegar via post nao for numero, entao manda para uma pagina de error; caso o link der erro entao da em exit na pagina

if(!is_numeric($_POST[‘cod’]){

header(“location:error.php”);

exit;

}else{//caso contrario o codigo for numero entao pega o cod via post

$cod    =$_POST[‘cod’];

}

if((isset($_POST[‘nome’]) && ($_POST[‘nome’]==””)){//si existe um post chamado nome e neste post nao estiver nada nele, entao da erro

header(“location:error.php”);

exit;

}

//Aqui vamos comecar a segurança do site, nao podera entrar nenhum caracter especial via post, assim bloquiará os ataques de sqlinjection

//a funcao str_replace, é para substituir caracteres de alguma coisa

$nome  =$_POST[‘nome’];

$nome  =str_replace(“‘”,””, $nome);

$nome  =str_replace(“+”,””,$nome);

$nome  =str_replace(“@”,””,$nome);

$nome  =str_replace(“(“,””,$nome);

$nome  =str_replace(“)”,””,$nome);

$nome  =str_replace(“&”,””,$nome);

$nome  =str_replace(“=”,””,$nome);

$nome  =str_replace(“!”,””,$nome);

$nome  =str_replace(“#”,””,$nome);

$nome  =str_replace(“%”,””,$nome);

$nome  =str_replace(“*”,””,$nome);

$nome  =str_replace(“.”,””,$nome);

$nome  =str_replace(“,”,””,$nome);

//Aqui podemos selecionar o banco de forma nomal, sem precisar de medo desta query

mysql_select_db($database_local, $local);

$query_rr = sprintf(“SELECT cod, nome, descricao, codigo FROM postss WHERE cod=’$cod’ and where nome=’$nome'”);

//acima eu selecionei cod,nome,descricao e o codigo da tabela postss em que o cod seja igual ao que nos pegamos via post, e o nome seja //igual ao que nos pegamos via post

$rr = mysql_query($query_rr, $local) or die(mysql_error());

$row_rr = mysql_fetch_assoc($rr);

?>

Conclusão

Esse código foi para mostrar para os administradores de sites que dependendo do assunto, é “fácil si proteger”(Entre aspas, é claro).

Obs.: SI alguém não entender nada deste código, faça as perguntas aqui.

~bye~ Juancarloscunha

Anúncios

Nos tempos de hoje, uma das formas mais utilizadas para esconder e não perder dados, é a forma de registrar uma sessão, Ou cookie, que não será neste post que eu falarei sobre ele.

Session(sessão) é uma variável criada e colocada em algum lugar do navegador de internet, e quando precisa usar essa mesma variável, então o programador cria um código simples para reutilizar esta mesma variável, porem, como tudo tem seu lado bom e seu lado ruim, estas sessões si forem usadas de modo correto, funciona perfeitamente sem correr muitos riscos de uma invasão no site ou algo do tipo.

Esta variável de sessão é desfeita quando o navegador é fechado(obvio, até o nome fala, variável dia sessão).

Vou colocar aqui um código de um sistema vulnerável a ataques via sessão:

Código da pagina login.php:

<?php

//neste exemplo vou citar a sessao chamada ‘nivel’, que é o nível de permissão do user

session_register(‘nivel’);

$_SESSION[‘nivel’]=$nivel_permissao;

//a variável nível_permissao, foi pegada do banco de dados,”exemplo”

?>

Codido index.php:

<?php

/*esta outra pagina ira pegar a sessao registrada e pega também o código do usuário que

Que na maioria das vezes são pegos por sessão ou cookie */

$nivel =$_SESSION[‘nivel’];

$cod_user =$_SESSION[‘cod_user’];

//isto é um nível de permissão para os usuarios

/* se o usuario nao estiver com o nivel de permissao (ADM) OU MELHOR nivel de administrador, entao a pessoa nao entra na pagina, agora si ela estiver o nivel de permissao de administrador*/

if($nivel != “ADM”){

header(“location:error.php”);

exit;

}else if($nivel ==”ADM”){

header(“location:/admin/crm.php”);

}else{

exit;

}

?>

//—————————————————————-à

Na pagina acima, nós vimos uma pagina com session vulnerável.

Agora vem a parte boa do ensinamento.

Como explorar esta falha ? alguém sabe?

Isso é mais fácil do que todos pensam ou possam imaginar.

Si você é um usuário do sistema e não tem acesso de administrador, quando você entrar na pagina index.php que tem a validação ele jogará você para uma pagina de erro.

Então ta, Lembra que la no inicio na primeira pagina, login.php. Ele registrou uma

Session com o tipo do usuário. Então para burlar isso… independente do navegador, exclua todos os registros de autenticação do navegador, pois entre elas estará a nossa que registramos ao logar no sistema.. Depois de ter excluido todas as autenticações do navegador, Crie uma pagina em php, registrando uma sessão com o mesmo nome da sessão do “sistema”, porem, agora vamos jogar o valor “ADM” dentro da sessão. FICARÁ MAIS OU MENOS ASSIM:

Código:

<?php

$nivel=”ADM”;

session_register(‘nivel’);

$_SESSION[‘nivel’]=$nivel;

?>

//————————————————————à

Depois disso, basta entrar diretamente na pagina que voce quer os privilegios, que eles estarao todos ao seu dispor. HEHE

Vou tentar explicar em outro tutorial como si defender destes ataques

~By~ Juancarloscunha

Qualquer duvida, Basta perguntar. Si gostou comente, ou si achou algum erro no meu tutorial, mande-o para mim corrigir