Un tamper en SQLMAP es un script que permite modificar las consultas de una forma que no sean intrusivas para un WAF y así poder intentar evadirlo. La mayoría de las veces tendremos que combinar varios tamper. En este momento SQLMAP dispone de más de 40 variaciones de tamper, así que si realmente necesitamos evadir un WAF vamos a tener que pasar un buen rato leyendo la funcionalidad de cada uno y viendo como se comporta.





La lista de tampers la podemos encontrar en el repositorio oficial en Github de Sqlmap: https://github.com/sqlmapproject/sqlmap/tree/master/tamper Al entrar en cada uno de ellos podremos leer su código, además de la respectiva cadena de documentación en la función de tampering que nos permitirá saber cómo se comporta y contra qué sistemas fue probado. Por ejemplo, entremos al tamper chardoubleencode.py:





Podemos leer la cadena de documentación del tamper y una nota que nos indica que es útil para hacer bypass de WAF que no hacen doble decoding (Es decir, un tamper se encarga de "encodear" una URL para que el WAF no la vea como algo malicioso. Sin embargo, es posible que el WAF haga un decoding de dicha URL con el fin de detectar si podría ser un intento de explotar una vulnerabilidad y es aquí donde entra nuestro tamper a hacer un "doble encoding". Así, si el WAF solo hace decoding una vez nuestro tamper podrá intentar evadirlo).


Algunos de los tampers más interesantes podrían ser space2hash.py, space2mysqlblank.py, percentage.py (Específico para aplicaciones ASP), modsecurityversioned.py (Específico para MySQL y que puede ser útil para evadir ModSecurity).


Para usar un tamper tan solo es necesario utilizar el parametro --tamper y el nombre de este. Un ejemplo de inyección con el tamper chardoubleencode.py sería:



/sqlmap.py -u http://vulnerableone.com/test.php?fd=1 --dbms "MySQL" -p "fd" --tamper "chardoubleencode.py" --dbs






Para saber que tamper usar y cuando usarlo no hace falta otra cosa que empezar a ver la ayuda de cada uno y, sin duda, practicar, practicar y practicar