Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Vulnerabilidades em Aplicações Web

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Tutorial Vulnerabilidades em Aplicações Web

    Falhas XSS e XSRF

    Este tipo de falhas consiste em injectar código (normalmente JavaScript ou VBscript) no browser do utilizador, alterando o código da página, podendo assim levar ao roubo de informações. Erros em validações de parâmetros enviados pelo método GET ou POST são o principal motor deste tipo de falha.

    Exemplo de código que não faz qualquer tipo de validação aos parâmetros enviados:

    Código:

    <HTML>
    <head>
    <title>Falha de XSS</title>
    </head>
    <body>
    <h1>Pesquisa</h1>
    <form action=”<?php echo $_SERVER['PHP_SELF']; ?>” method=”GET”>
    <input type=”text” name=”pesquisa” /><br /><br />
    <input type=”submit” name=”botao” value=”Pesquisar!” />
    </form>
    <?php
    if(!empty($_GET)){
    echo “Está a pesquisar por: “.$_GET['pesquisa'];
    }
    ?>
    </body>
    </HTML>


    Neste pequeno script em PHP, poderíamos “brincar” um bocadinho com o utilizador, fazendo-o clicar, por exemplo, neste link:

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    <!--[if gte vml 1]> <![endif]--><!--[if !vml]--><!--[endif]-->

    Neste caso, o script era inofensivo e limitou-se a abrir aquela janela a dizer “xss!”, mas poderia ter sido usado em conjunto com XSRF para roubo de cookies, por exemplo.
    As falhas de XSRF são, nada mais nada menos, que um tipo de ataques XSS, onde a página é alterada para enganar o utilizador e roubar informação. A análise a um ataque XSRF, neste caso no popular Hi5, pode ser visto aqui Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    As falhas de XSS e XSRF podem ser evitadas usando, por exemplo, uma função para remover tags HTML (ver a função strip_tags() no manual do PHP: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...) ou para trocar certos caracteres pelo seu HTML entity (ver a função htmlentities() no manual do PHP:

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...).
    Last edited by bolinhaxp; 08-12-2009, 12:46.

  • Font Size
    #2
    Falhas de injecção e Insecure Direct Object Reference

    Falhas de injecção e Insecure Direct Object Reference

    Injecção de SQL é das vulnerabilidades mais conhecidas (senão a mais conhecida) pela Internet. Pequenos erros de validação podem se revelar catastróficos e extremamente embaraçantes. A título de exemplo, a Microsoft do Reino Unido foi vítima da exploração de uma vulnerabilidade de injecção de SQL Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    Exemplo de código vulnerável:
    <!--[if !supportLineBreakNewLine]-->
    <!--[endif]-->

    Código:

    <HTML>
    <head>
    <title>Falha de SQL Injection</title>
    </head>
    <body>
    <h1>Pesquisa</h1>
    <form action=”<?php echo $_SERVER['PHP_SELF']; ?>” method=”POST”>
    <input type=”text” name=”pesquisa” /><br /><br />
    <input type=”submit” name=”botao” value=”Pesquisar!” />
    </form>
    <?Php
    $link = mysql_connect (’localhost’, ‘mysql_user’, ‘mysql_password’);
    mysql_select_db (”site”);
    $res = mysql_query (”SELECT id, uniq FROM blog WHERE tags LIKE ‘%”.$_POST ['pesquisa']. “%’”);
    while (($r = mysql_fetch_array ($res))){
    echo ‘<a href=”post.php?id=’.$r['id'].’”>’.$r['uniq'].”</a><br />”;
    }
    ?>
    </body>
    </HTML>


    Ao escrever na pesquisa “‘ UNION SELECT id, uniq FROM logins#” (sem aspas), poderia obter os IDs dos utilizadores (o nome de utilizador, por exemplo), e o hash da sua palavra-passe (o campo uniq). Em casos em que exista também uma falha de “má arquivação” de dados sensíveis, como arquivar palavra-passe e não o hash resultante da passagem da palavra-passe por um algoritmo de hash ir-se-ia obter a palavra-passe “sem qualquer espinha”, evitando o recurso a ataques de força bruta ou de dicionário a algoritmos de hash inseguros (o uso de “criptografia insegura”) como o MD5 ou o SHA-1.
    Em PHP, existe uma forma bastante simples de evitar injecção de SQL: usar a função mysql_real_escape_string () (manual do PHP: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...) para fazer “escape” dos caracteres perigosos que vêm do utilizador.

    As falhas de injecção não são, porém, apenas de SQL. As vulnerabilidades de Insecure Direct Object Reference abrem portas à injecção de código na aplicação em si. Estes tipos de vulnerabilidades são vistas principalmente em aplicações PHP de programadores inexperientes.

    Comment


    • Font Size
      #3
      Exemplo de uma falha de Insecure Direct Object Reference:

      Exemplo de uma falha de Insecure Direct Object Reference:
      Código:

      <html>
      <head>
      <title>Falha de code injection</title>
      </head>
      <body>
      <h1>Escolha de lingua</h1>
      <form action=”<?php echo $_SERVER['PHP_SELF']; ?>” method=”GET”>
      <select name=”lingua”>
      <option>PT</option>
      <option>EN</option>
      </select>
      <input type=”submit” name=”botao” value=”Navegar!” />
      </form>
      <?php
      if(!empty($_GET['lingua'])){
      include $_GET['lingua'].”.index.php”;
      }
      ?>
      </body>
      </html>


      Ao escrever no URL, por exemplo, Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar..., o ficheiro que seria incluído seria, na verdade, o Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar.... Usando uma shell C99, poderia criar, apagar ou alterar ficheiros, “matar” processos no servidor ou desligá-lo. Este tipo de falhas é normalmente denominado de Remote File Inclusion (RFI). Usando um pouco de “engenharia social”, poder-se-ia fazer um URL de redireccionamento no TinyURL para uma página com código para roubar dados do utilizador. Em conjunto com falhas no handling de sessões, poderia apoderar-me da sessão do utilizador no site, e navegar no mesmo como se fosse a “vítima”.
      Para evitar este tipo de falhas, é aconselhável usar estruturas de controlo, como if…elseif…else ou o switch:

      Código:

      $pagina = $_GET ['pag'];
      if($pagina == ‘contacto’){
      include “contacto.php”;
      }elseif($pagina == ‘ajuda’){
      include “ajuda.php”;
      }else{
      include “main.php”;
      }


      <!--[if !supportLineBreakNewLine]-->
      <!--[endif]-->

      Código:

      switch($_GET['pag']){
      case ‘contacto’:
      include “contacto.php”;
      break;
      case ‘ajuda’:
      include “ajuda.php”;
      break;
      default:
      include “main.php”;
      break;
      }

      Comment


      • Font Size
        #4
        vlw amigo vc me deu um luz parabens cara...
        Ganhe Dinheiro na Internet

        GANHE DE 160 REAIS ATÉ 800 REAIS AO MÊS

        !telexfree!
        www.telexfree.com/eguipesl

        BBOM
        www.bbom.com.br/equipelite

        www.bbom.com.br/equipemeta

        Comment


        • Font Size
          #5
          legal , mas pra mim que to começando ta meio foda de entender !
          kk
          flw
          Nao Participa ainda ?
          * Comunidade Elite Defacer


          Elite Defacer
          Hackeralp - 5ubZer0 - $cr34m()

          Comment


          • Font Size
            #6
            Otimo tuto mano

            vlw
            sigpic


            Comment


            • Font Size
              #7
              Valew Por Compartilha
              Vlw
              sigpic

              "Desde que a humanidade foi agraciada com um talento para cultivar crenças, o absurdo é mais facilmente aceito do que o óbvio."



              Comment


              • Font Size
                #8
                Nota 10 valeu power!

                go >> form action=adm.php

                Comment

                X
                Working...
                X