{"id":759,"date":"2013-08-21T13:02:08","date_gmt":"2013-08-21T19:02:08","guid":{"rendered":"https:\/\/www.lastdragon.net\/?p=759"},"modified":"2013-08-21T13:49:44","modified_gmt":"2013-08-21T19:49:44","slug":"mod_rewrite-raking-en-google-seguridad-por-obscuridad-y-anti-sql-inyeccion","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=759","title":{"rendered":"Mod_Rewrite Raking en Google, Seguridad por obscuridad y anti SQL Inyecci\u00f3n."},"content":{"rendered":"<p>La reescritura de una URL esta presente en la mayor\u00eda de los servidores WEB, en este articulo hablare de Apache WebServer.<\/p>\n<p>Lo impresionante no es reescribir la URL, eso suena como algo muy aburrido, lo verdaderamente \u00fatil es que hacer con la reescritura y como usarla a nuestro favor.<\/p>\n<p>Tradicionalmente la reescritura se usa con fines muy est\u00e9ticos, la mayor\u00eda de los sitios din\u00e1micos en internet y los m\u00e1s conocidos basados en PHP hacen que se vea horrible el manejo de las URL<\/p>\n<p>http:\/\/algunsitio.com\/categoria.php?categoria=1&#038;orden=numerico<\/p>\n<p>No solo se ve horrible la URL con todos esos par\u00e1metros sino que adem\u00e1s un atacante la ve y sabe que el archivo categor\u00eda.php por lo tanto es PHP lo que hay que atacar, luego sabe que ah\u00ed hay 2 par\u00e1metros  y que posiblemente est\u00e1n conectados una consulta SQL por lo que no dudar\u00eda en intentar inyectar algo<\/p>\n<p>Con la reescritura la URL podr\u00eda quedar posiblemente as\u00ed:<\/p>\n<p>http:\/\/algunsitio.com\/categoria1\/ordenum.html<\/p>\n<p>El cambio es brutal, lo primero que se piensa al ver esa url es que el sitio es est\u00e1tico un simple archivo .html que no hace nada que no consulta nada, obvio si estas en una p\u00e1gina responsiva y ves que en un formulario metes datos y luego te encuentras con una URL .html que est\u00e1 adaptada a tus datos pensaras que algo din\u00e1mico tiene que tener \u00bfpero que es?<\/p>\n<p>Pic\u00e1ndole podr\u00edas ver que el 1 cambia a otros n\u00fameros pero podr\u00eda pensarse que se trata de que hay muchas carpetas numeradas, al final no se sabe por OBSCURIDAD el nombre real del archivo que es categor\u00eda.php, ni que es un PHP igual podr\u00eda ser un CGI , Python, ASPX, podr\u00eda ser cualquier cosa. Incluso si te da verguenza decir que programas en PHP podrias reescribir tu url para que todos piensen qu eres pitonero o rubiero.<\/p>\n<p>Lo que el atacante no sabe es que no existe ning\u00fan directorio o carpeta  llamado categoria1 y tampoco sabe que no existe ese archivo html, si entrara a tu servidor y lo buscara jam\u00e1s lo encontrar\u00eda por qu\u00e9 no puede encontrar lo que no existe<\/p>\n<p>La reescritura se hace por medio de expresiones regulares, estas expresiones ponen una barrera tipo firewall en el servidor WEB por qu\u00e9 tiene que cumplirse una expresi\u00f3n regular para que ocurra la reescritura.<\/p>\n<p>Si un atacante descubriera que el directorio no existe y se diera cuenta que el par\u00e1metro es el n\u00famero del directorio. Si el cambia ese n\u00famero por una inyecci\u00f3n, la reescritura no se efect\u00faa debido a que ah\u00ed obligatoriamente debe haber un n\u00famero y no un car\u00e1cter para la inyecci\u00f3n, igual se podr\u00eda aplicar a cada par\u00e1metro.<\/p>\n<p>En este ejemplo se est\u00e1 reescribiendo datos de un archivo y de un m\u00e9todo GET, pero el mod_rewrite tambi\u00e9n intercepta y reescribe el stdin de los m\u00e9todos POST y tambi\u00e9n los puede reescribir, se pueden aplicar reglas para que cuando encuentre una secuencia t\u00edpica de una inyecci\u00f3n en el flujo de datos las descarte o las reescriba as\u00ed aunque un sitio es vulnerable no importa porque no pueden inyectar el QUERY y si lo hacen mod_rewrite lo intercepta frustrando a un atacante incluso jugando con sus sentimientos haci\u00e9ndole creer que puede lograr algo, cuando sabemos que no podr\u00e1.<\/p>\n<p>Las reglas de reescritura se pueden aplicar en los archivos .htaccess o en los archivos de configuraci\u00f3n de apache para hacerlos globales a todos los virtual host de apache.<\/p>\n<p>Originalmente la reescritura de URL se hizo por est\u00e9tica y para ranking de google, en los rank de google pesa m\u00e1s una p\u00e1gina est\u00e1tica por que saben que no va a cambiar una .html que una php asi que da cierta ventaja a la hora de indexar un sitio adem\u00e1s de los firewall que aplica a los servidores WEB<\/p>\n<p>Como ejemplo<\/p>\n<p><strong>RewriteRule ^archivo([1-9])s([a-c]).html oculto.php?v1=$1&#038;v2=$2<\/strong><\/p>\n<p>Esa expresi\u00f3n regular dice que es verdad SI\/IF en la URL existe una cadena \u201carchivo\u201d seguida de un numero obligatorio y ese n\u00famero tiene que ser cualquiera del 1 al 9 pero no contempla 0, despu\u00e9s del numero debe ir el car\u00e1cter s y despu\u00e9s de la s debe ir un car\u00e1cter en min\u00fasculas que puede ser a,b o c pero solo esas letras<\/p>\n<p>Si las condiciones se cumplen ocurre la reescritura, se llama al archivo oculto.php y el valor 1 es el resultado del primer par\u00e9ntesis, el valor 2 del segundo par\u00e9ntesis. Si la regla no se cumple ocurre un error 404 y el atacante nunca se entera que el archivo que en realidad hace la consulta se llama oculto.php<\/p>\n<p>Un video que muestra el efecto de la reescritura:<\/p>\n<p><iframe loading=\"lazy\" width=\"420\" height=\"315\" src=\"\/\/www.youtube.com\/embed\/wetMsHh5nOQ\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La reescritura de una URL esta presente en la mayor\u00eda de los servidores WEB, en este articulo hablare de Apache WebServer. Lo impresionante no es reescribir la URL, eso suena como algo muy aburrido, lo verdaderamente \u00fatil es que hacer con la reescritura y como usarla a nuestro favor. Tradicionalmente la reescritura se usa con&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,1],"tags":[],"class_list":["post-759","post","type-post","status-publish","format-standard","hentry","category-consultoria-y-manuales","category-personal"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/759","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=759"}],"version-history":[{"count":0,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/759\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}