quinta-feira, 6 de maio de 2010

Ratproxy em portas não padrão ( 80 ou 443 )

Em alguns testes de segurança e auditoria em serviços Web precisamos utilizar ferramentas que nos auxiliam a realizar este processo, existem diversas ferramentas para isso, dentre elas estão o w3af, parosProxy, burpsuite, webscarab e o ratproxy. O ratproxy* trabalha como um proxy entre o browser do usuário (geralmente quem faz a auditoria) e o site/programa a ser auditado porem em algumas auditorias pode-se encontrar sites/programas que não rodam nas portas web padrão que são as portas 80 e 443, nesse caso ao tentar auditar um serviço que não roda nessas portas o ratproxy exibe a seguinte mensagem:

"[!] WARNING: Access to this port denied."

Segundo o desenvolvedor do projeto essa é uma feature implementada por questões de segurança, para evitar que o ratproxy seja utilizado como um portscan ou que sejam enviados pacotes para serviços não-HTTP porém essa implementação acaba nos limitando em determinadas auditorias onde precisamos testar um serviço web rodando em uma porta não padrão e para contornar esse problema eu criei um patch que adiciona a opção "-N" ao ratproxy que quando utilizada nos permite auditar sistemas web que não rodem nas portas padrão.
Basta aplicar o patch a seguir ou se preferir pode baixar o ratproxy com o patch já aplicado clicando aqui

------
# Created by Cl3BeeR
# Thu May 06 2010
--- ratproxy.c 2009-03-31 07:32:10.000000000 -0300
+++ ratproxy.c 2010-05-06 09:59:06.167625043 -0300
@@ -77,6 +77,7 @@
 _u8* trace_dir; /* Trace directory            */
 _u32 proxy_port = 8080; /* Upstream proxy port        */
 _u8  use_len; /* Use length, not cksum      */
+_u8* non_http; /* Accept requests for non-HTTP ports      */

 static FILE* outfile; /* Output file descriptor     */

@@ -105,6 +106,7 @@
         "   -m            - log all active content referenced across domains\n"
         "   -X            - disruptively validate XSRF, XSS protections\n"
         "   -C            - try to auto-correct persistent side effects of -X\n"
+        "   -N            - Accept requests to non-HTTP ports \n"
         "   -k            - flag HTTP requests as bad (for HTTPS-only applications)\n"
         "   -a            - indiscriminately report all visited URLs\n\n"

@@ -1660,9 +1662,9 @@

   signal(SIGPIPE, SIG_IGN);
  -1726,6 +1728,10 @@
         all_xss = 1;
         break;

+      case 'N':
+ non_http = 1;
+ break;
+
       case 'g':
         get_xsrf = 1;
         break;
--- http.c 2009-05-13 16:41:01.000000000 -0300
+++ http.c 2010-05-04 10:45:45.366625269 -0300
@@ -53,6 +53,7 @@
 extern _u8* use_proxy; /* Runtime setting exports from ratproxy. */
 extern _u32 proxy_port;
 extern _u8  use_len;
+extern _u8* non_http;

 static _u8 srv_buf[MAXLINE], /* libc IO buffers */
            cli_buf[MAXLINE];
@@ -496,7 +497,7 @@
     if (!ret->port || ret->port > 65535)
       http_error(client,"Illegal port specification",1);

-    if (ret->port < 1024 && ret->port != 80 && ret->port != 443)
+   if (!non_http && (ret->port < 1024 && ret->port != 80 && ret->port != 443))
       http_error(client,"Access to this port denied",1);

     *x = 0;
--- config.h 2009-05-13 16:40:38.000000000 -0300
+++ config.h 2010-05-06 10:00:03.570624548 -0300
@@ -26,7 +26,7 @@

 #include "types.h"

-#define VERSION "1.58-beta"
+#define VERSION "1.58-beta-CleBe3R-Non-http-Patch"

 /* Maximum request / response header line length (HTTP traffic
    that exceeds this limit will be rejected). */

------

* http://code.google.com/p/ratproxy/

g0 h4ck
By CleBeer

Nenhum comentário: