Evitando SQL INJECTION CON .htaccess


El día domingo 6 de octubre un día común y corriente recibí la noticia que uno de los sitios web de un amigo había sido vulnerado, el sitio primeramente creado en Joomla 1.6 (no actualizado) fue vulnerado bajo la falla que permite registrarte como administrador pudiendo subir facilmente archivos php, htaccess entre otros (por suerte el lammer que vulnero la seguridad era muy inexperto). Revisando los logs del sistema pude darme cuenta de los archivos que habían sido modificados entre ellos el index, subió algunas "php shells" en diferentes carpetas para tener acceso cuando le diera la gana (una vez mas el muy inexperto siendo tan obvio), al ver que el sitio estaba lleno de "php shells" decidí conversar con otro amigo (el proveedor del hosting) para que este realice la restauración previo al ataque, así poder parchar el sitio y poner ciertos htaccess evitando sobre todo inyecciones sql.
El tema no es tan complicado (para los conocedores del tema) los CMS son herramientas bastante útiles, que a muchos nos ahorran mucho tiempo y nos dan una solución bastante pronta, robusta y sobre todo GRATIS, pero que con estos CMS? son seguros?. La respuesta es no, no son nada seguros, pero es ahí donde podemos intervenir y hacerlo casi seguros (escribo casi porque nada es 100% en la red).

Dejare aquí un pequeño script de como evitar una inyección sql con .htaccess

Comentarios

  1. Hola amigo, deseo saber si este .htaccess que me encontre es 100% seguro:
    php_flag safe_mode on

    php_flag expose_php off

    php_flag display_errors off

    ServerSignature Off

    RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK|DEBUG) [NC]

    RewriteRule ^(.*)$ - [F,L]

    RewriteCond %{REQUEST_URI} (timthumb\.php|phpthumb\.php|thumb\.php|thumbs\.php) [NC]

    RewriteRule . - [S=1]

    RewriteBase /

    RewriteCond %{HTTP_USER_AGENT} ^Anarchie [OR]

    RewriteCond %{HTTP_USER_AGENT} ^ASPSeek [OR]

    RewriteCond %{HTTP_USER_AGENT} ^attach [OR]

    RewriteCond %{HTTP_USER_AGENT} ^autoemailspider [OR]

    RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]

    RewriteCond %{HTTP_USER_AGENT} ^Xenu [OR]

    RewriteCond %{HTTP_USER_AGENT} ^Zeus.*Webster [OR]

    RewriteCond %{HTTP_USER_AGENT} ^Zeus

    RewriteCond %{HTTP_USER_AGENT} (libwww-perl|wget|python|nikto|curl|scan|java|winhttp|clshttp|loader) [NC,OR]

    RewriteCond %{HTTP_USER_AGENT} (<|>|'|%0A|%0D|%27|%3C|%3E|) [NC,OR]

    RewriteCond %{HTTP_USER_AGENT} (;|<|>|'|"|\)|\(|%0A|%0D|%22|%27|%28|%3C|%3E|).*(libwww-perl|wget|python|nikto|curl|scan|java|winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) [NC,OR]

    RewriteCond %{THE_REQUEST} \?\ HTTP/ [NC,OR]

    RewriteCond %{THE_REQUEST} \/\*\ HTTP/ [NC,OR]

    RewriteCond %{THE_REQUEST} etc/passwd [NC,OR]

    RewriteCond %{THE_REQUEST} cgi-bin [NC,OR]

    RewriteCond %{THE_REQUEST} (%0A|%0D) [NC,OR]

    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]

    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]

    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC,OR]

    RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC,OR]

    RewriteCond %{QUERY_STRING} (\.\./|\.\.) [OR]

    RewriteCond %{QUERY_STRING} ftp\: [NC,OR]

    RewriteCond %{QUERY_STRING} http\: [NC,OR]

    RewriteCond %{QUERY_STRING} https\: [NC,OR]

    RewriteCond %{QUERY_STRING} \=\|w\| [NC,OR]

    RewriteCond %{QUERY_STRING} ^(.*)/self/(.*)$ [NC,OR]

    RewriteCond %{QUERY_STRING} ^(.*)cPath=http://(.*)$ [NC,OR]

    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]

    RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]

    RewriteCond %{QUERY_STRING} (\<|%3C).*iframe.*(\>|%3E) [NC,OR]

    RewriteCond %{QUERY_STRING} (<|%3C)([^i]*i)+frame.*(>|%3E) [NC,OR]

    RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]

    RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [NC,OR]

    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]

    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]

    RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>).* [NC,OR]

    RewriteCond %{QUERY_STRING} (NULL|OUTFILE|LOAD_FILE) [OR]

    RewriteCond %{QUERY_STRING} (\./|\../|\.../)+(motd|etc|bin) [NC,OR]

    RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR]

    RewriteCond %{QUERY_STRING} (<|>|'|%0A|%0D|%27|%3C|%3E|) [NC,OR]

    RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR]

    RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]

    RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC,OR]

    RewriteCond %{QUERY_STRING} (;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|).*(/\*|union|select|insert|drop|delete|update|cast|create|char|convert|alter|declare|order|script|set|md5|benchmark|encode) [NC,OR]

    RewriteCond %{QUERY_STRING} (sp_executesql) [NC]

    RewriteRule ^(.*)$ - [F,L]

    ResponderEliminar

Publicar un comentario

Entradas populares