Jump to content


Photo

Segurança Com Querystring


  • Faça o login para participar
7 replies to this topic

#1 gonacts

gonacts

    "Agora eu tb tenho um Tux..." =D

  • Usuários
  • 1030 posts
  • Sexo:Não informado

Posted 14/11/2006, 10:52

bom dia pessoal...

gostaria de saber até q ponto uma falha na programação das query strings podem "afetar" a integridade do site...

exemplo:

acessei um site q qnd eu passo um link na url ele inclui o site dentro do dele..
www.site.com.br/index.php?pagina=http://www.site2.com.br


gostaria de saber até q ponto alguma pessoa pode fazer um script "malicioso" que possa fazer a comunicação entre os 2 servidores de hospedagem...

e tb quais outras falhas de segurança q podem ser encontradas no php...

[]'s
"Ninguém é tão inteligente que não possa aprender e ninguém é tão burro que não possa ensinar.."
"As dúvidas engrandecem nossa sabedoria, mas não basta somente tirá-las, temos que entendê-las"

#2 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 14/11/2006, 15:18

Existe uma Defacing Tool escrita pelo r3v3ng4ns que é usada por vários grupos de defacers. Ela é usada justamente nessa falha de segurança que você citou. (PHP Injection)

A partir dela você pode criar/modificar/deletar diretórios, executar comandos shell (se o servidor permitir), definir permissão de arquivos (chmod), etc.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#3 boari

boari

    24 Horas

  • Usuários
  • 411 posts
  • Sexo:Masculino
  • Localidade:São joão Del Rei - Minas Gerais
  • Interesses:PHP, MySQL, SQL Server

Posted 14/11/2006, 17:01

Na verdade são várias que rolam na internet.

Se você deixar o cara incluir arquivos dentro do seu site fica fácil.
Deleta, muda, copia, enfim....faz o que quiser....

Sempre pego o relatório das tentativas que cada um faz em meus sites...

Não vou colocar o link da última aqui senão vira bagunça.... :D
Vai ter um monte de site sendo invadido... (n)

Mas na maioria são arquivos TXT que contém os códigos em php que quando incluídos na página dá pra fazer um inferno lá dentro. Tem um monte. Virou praga isso...

Tem alguns tópicos interessantes sobre isso aqui no fórum....

t+ (y)


Otavio Boari

#4 Dantetekanem

Dantetekanem

    Normal

  • Usuários
  • 74 posts
  • Sexo:Não informado

Posted 14/11/2006, 19:11

Eu fiz uma função tentando burlar esse tipo de invasão, e que não faça termos de criar dezenas de IFs.

<?PHP
// --------------------------------------------------------------------------------------------------
// Função QSS(Query String Segura)
// --------------------------------------------------------------------------------------------------
// :::::::::::::::::::::::::::::::::::  DESENVOLVIDA POR  :::::::::::::::::::::::::::::::::::::::::::
// Leonardo C. Pereira (Dante) [ www.leonardopereira.pt.to ] [ dantetekanem@hotmail.com ]
// --------------------------------------------------------------------------------------------------
// COMO FUNCIONA ////////////////////////////////////////////////////////////////////////////////////
// Inclui outras páginas dentro do seu website, obedecendo as seguintes regras.
// Que sejam das extensões permitidas por você, e que estejam no mesmo servidor que o sistema.
/////////////////////////////////////////////////////////////////////////////////////////////////////
// --------------------------------------------------------------------------------------------------
// MODO DE USAR /////////////////////////////////////////////////////////////////////////////////////
// QSS('pagina');
// Inclui os arquivos que vierem dentro da váriavel requisitada 'pagina'.
// Se for por exemplo o link(www.meusite.com/index.php?pagina=teste.php)
// Será pego o conteudo teste.php
/////////////////////////////////////////////////////////////////////////////////////////////////////
// --------------------------------------------------------------------------------------------------
// AVISOS ///////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
// Necessário PHP 4.x.x ou superior para funcionar.
// Caso for usar está função em seu website, por favor, deixe os devidos créditos ao autor(eu).
// --------------------------------------------------------------------------------------------------
function QSS($caminho){
$extP = array('php','html','htm','js','txt'); // As extensões permitidas para visualização
$qs = $_REQUEST[$caminho];
$p1 = explode("?",$qs);
$ar = explode(".",$p1[0]);
if(isset($qs)){
if(in_array($ar[sizeof($ar)-1],$extP) AND !eregi("http://|www.|ftp://",$p1[0]) AND file_exists($p1[0])){
include($qs);
}else{
// MENSAGEM DE ERRO DO SISTEMA PARA PÁGINAS INVÁLIDAS OU INEXISTENTES ///////////////////////////////
print('Erro, o caminho que você está tentando visualizar é dito como inseguro e perigoso para o nosso
sistema ou o arquivo é inexistente, por favor, tente outro caminho.<br/>
Arquivo tentando ser visualizado: <b>'.$qs.'</b><br/>O formato <b>'.$ar[sizeof($ar)-1].'</b>');
if(in_array($ar[sizeof($ar)-1],$extP)){
print(' é permitido pelo nosso sistema.<br/>');
}else{
foreach($extP as $array){$ext[]='<b>.'.$array.'</b>';}
print(' não é permitido pelo nosso sistema;<br/>Formatos permitidos: ('.implode(", ",$ext).');<br/>');
}
if(file_exists($qs)){
print('O arquivo <b>'.$qs.'</b> existe no nosso servidor.');
}else{
print('O arquivo <b>'.$qs.'</b> não existe no nosso servidor.');
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
}
}
// TESTANDO A FUNÇÃO NO SISTEMA, CHAMANDO ELA PELA QUERY STRING 'p' /////////////////////////////////
QSS('p');
/////////////////////////////////////////////////////////////////////////////////////////////////////
?>


Abraços !


Espero que ajude, é bem simples a função.

#5 boari

boari

    24 Horas

  • Usuários
  • 411 posts
  • Sexo:Masculino
  • Localidade:São joão Del Rei - Minas Gerais
  • Interesses:PHP, MySQL, SQL Server

Posted 16/11/2006, 08:50

Aqui eu uso assim:

<? 
if ($_GET[secao]=="") {
$_GET[secao]="principal";
} 
$verificacao = eregi("http|ftp|https|www|wget", $_GET[secao]);
if ($verificacao)
$_GET[secao]="ilegal";
include("$_GET[secao].php");
?>


Daí caso alguém tente incluir uma URL ele abre o arquivo ilegal.php

Dentro desse arquivo eu coloquei a função de pegar todos os dados do invasor e mandar pro meu e-mail.
Coloco isso em todos os sites que faço e sempre recebo vários dados por dia...rs


t+

#6 fly2k

fly2k

    Super Veterano

  • Usuários
  • 2262 posts
  • Sexo:Não informado

Posted 17/11/2006, 08:07

veja bem...
você pode até pegar o conteudo de outro site....mas não fazer um include....e sim ler o arquivo e repassar ao browser.....e claro...verificar a extensçao do que está sendo lido... pra você não repassar programas executáveis.... e outros!
Quer aprender PHP? -> www.manjaphp.com.br
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.

#7 LHPM

LHPM

    Novato no fórum

  • Usuários
  • 22 posts
  • Sexo:Não informado

Posted 12/01/2007, 16:46

Boa tarde, bem eu usei query em um site meu em menos de 2 semanas ele fizeram fdefacer nele vi no webtutorias que colocando apenas um . na frente do get resolvia o problema bom ams acho que não resolveu pois essa semana detoram ele de novo o codigo que uso é esse
<?


$paginas = array(

"principal"  => "principal.php",
);

$var = "principal";
$paginas = "$_GET[paginas].php";

if(isset($_GET['paginas'])) {
include ("./".$_GET['paginas'].".php"); }
else {
include ("./principal.php");
} ?>

passei o SSS no meu site e ele tb achou uma vunerabilidade de XSS , mas até agora não sei como corrigir. se alguem souber de algo.

abraços

#8 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 12/01/2007, 17:15

Eu, não entedi nada do que vc escreveu, so entedo que de alguma forma tão detornado seu site ...
É realmente esse seu código não bloqueia nada :assobio:

<?php
$paginas = array(
 "principal"  => "principal.phtmls",
 "games"	  => "jogos.phtmls",
 "contato"	=> "contato.phtmls"
);

if (isset($paginas[$_GET["paginas"]])) {
 include ("./" . $paginas[$_GET["paginas"]]);
} else {
 include ("./principal.phtmls");
}
?>

Tipo tenta trocar tbm a exten'são pra dificilcutar se não não adicante é so acessar via pasta e pronto ...



Boa tarde, bem eu usei query em um site meu em menos de 2 semanas ele fizeram fdefacer nele vi no webtutorias que colocando apenas um . na frente do get resolvia o problema bom ams acho que não resolveu pois essa semana detoram ele de novo o codigo que uso é esse

<?


$paginas = array(

"principal"  => "principal.php",
);

$var = "principal";
$paginas = "$_GET[paginas].php";

if(isset($_GET['paginas'])) {
include ("./".$_GET['paginas'].".php"); }
else {
include ("./principal.php");
} ?>

passei o SSS no meu site e ele tb achou uma vunerabilidade de XSS , mas até agora não sei como corrigir. se alguem souber de algo.

abraços






1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq