Paros es una aplicación que funciona como un Proxy y que permite capturar las peticiones tanto HTTP como HTTPS para simplemente registrarlas a modo de debug o para poder modificarlas. Además de estas funcionalidades de Proxy, incorpora una serie de opciones para realizar comprobaciones de seguridad que pueden resultar muy útiles.
En estos momentos se encuentra en la versión 3.2.13.
Por una parte, se incluye una opción de Spider que navegará por completo la URL que le indiquemos, se recomienda utilizar la opción de Spider antes de la opción de Scan para así poder disponer de todo el árbol web antes de proceder a analizar dicha URL.
Esta funcionalidad no opera muy bien cuando hay sitios con javascript, por lo que habrá que recurrir a la navegación manual para posteriormente seleccionar la URL completa desde donde se quiere empezar el Spider.
Se puede establecer, entre otros, los siguientes parámetros:
En el menú Tools, Options, Spider:
- Maximum depth to crawl (1 - 9), que especificará la profundidad de directorios a la que se quiere llegar. Lógicamente, cuanto mayor sea la profundidad más parte de la estructura de la web se extraerá.
- Number of threads used (1 - 5),que permite establecer el número de hilos simultáneos que se usarán durante la obtención de ficheros por defecto. El límite establecido es de 5 un valor medio por consumo de ancho de banda.
Por otra parte tenemos la opción de Scan, que realizará un análisis de la URL seleccionada en busca de los siguientes problemas de seguridad:
En el menú Analyse, Scan Policy, se seleccionaran los plugins que se van a utilizar:
-
INFORMATION GATHERING
- Obsolete file.
- Private IP disclosure.
- Session ID in URL rewrite.
- Obsolete file extended check.
-
CLIENT BROWSER
- Password Autocomplete in browser.
- Secure page browser cache.
-
SERVER SECURITY
- Directory browsing.
- IIS default file.
- Cold Fusion default file.
- Macromedia JRun default files.
- Tomcat source file disclosure.
- BEA WebLogic example files.
- IBM WebSphere default files.
- Lotus Domino default files.
-
INJECTION
- SQL Injection Fingerprinting.
- CRLF inyection.
- Server side include.
- Cross site scripting.
- Cross site scripting without brackets.
- Parameter tampering.
- SQL Injection.
- MS SQL Injection Enumeration.
El resto de las opciones generales permitirán establecer parámetros de funcionamiento de la aplicación como son los siguientes:
En el menú Tools, Options.
- Connection, aquí podremos incluir un Proxy de salida para Paros.
- Local Proxy, configuración de dirección IP y puerto donde queremos iniciar paros.
- Authentication, si queremos analizar una URL que contenga autenticación este será el lugar para ello.Se permite aquí la autenticación NTLM aún en desarrollo.
- Certificate, si es necesario utilizar un certificado para acceder al sitio.
- View, si se desea que se procesen las imágenes durante las peticiones o respuestas http.
- Trap, configuraciones específicas de filtros en la captura de peticiones que una vez interceptadas se podrán modificar. Se podrán capturar tanto las peticiones como las respuestas para ir realizando un seguimiento paso a paso del flujo de la aplicación.
- Spider, comentada anteriormente.
- Scanner, donde se podrá indicar el número de host que se quieren analizar de forma concurrente, y el número de hilos simultáneos para cada análisis.
Se dispone además de otras herramientas útiles como son:
dentro del menú Tools.
- Filters, configuración específica de filtros en las peticiones.Existe una gran variedad de filtros que se pueden emplear, el funcionamiento se basa en expresiones que se identifican en las cadenas que gestiona el navegador. Cabeceras http, contenido de las peticiones POST, GET, etc. Esta funcionalidad resulta muy útil a la hora de modificar las cabeceras para sustituir por ejemplo un host externo por un host interno en la petición.
- Encoder/Hash, para codificar una URL en hexadecimal, para codificar en Base64, generar una suma SHA1, o una suma MD5, también desde aquí se puede decodificar una URL y decodificar un valor en Base64.
- Manual Request Editor, nos permitirá editar de forma manual las peticiones http/https, esta opción es de las más interesantes que contempla esta herramienta.
Es posible generar plugins propios para incluir dentro de Paros, un ejemplo es el plugin de BitWise de Mike Shema (mikeshema@yahoo.com), los comentarios sobre este plugin pueden consultarse en la referencia original en :
Automating SQL Injection Exploits
Utilizando la clase AbstractPlugin.java y la función matchBodyContent() Genera la clase TestInjectionSQLBitwise.java para utilizar con inyección SQL en bases de datos con MS SQL Server permitiendo enumerar los siguientes elementos:
- Nombre de la base de datos.
- Nombre del usuario que establece la conexión con la base de datos.
- Hash del usuario SA.
- Todas las tablas de la base de datos.
Es importante recordar que las herramientas que identifican vulnerabilidades de forma automática generan falsos positivos, por lo tanto será necesario revisar la información que nos proporciona Paros Proxy para garantizar que los resultados son correctos.
En ocasiones la redirección a través de un código http 3xx de redirección es interpretada como la existencia de un fichero.
Si queremos hacernos una idea de como funciona internamente Paros, no tenemos más que descompilarlo para ver el cosas como:
En la clase TestInjectionSQL:
private static final String dependency[] = {
"TestInjectionSQLFingerprint"
};
private static final int TIME_SPREAD = 15000;
private static final String SQL_DELAY_1 = "';waitfor delay '0:0:15';--";
private static final String SQL_DELAY_2 = ";waitfor delay '0:0:15';--";
private static final String SQL_BLIND_MS_INSERT = ");waitfor delay '0:0:15';--";
private static final String SQL_AND[] = {
" AND 1=1", "' AND '1'='1", "\" AND \"1\"=\"1"
};
private static final String SQL_AND_ERR[] = {
" AND 1=2", "' AND '1'='2", "\" AND \"1\"=\"2"
};
private static final String SQL_OR[] = {
" OR 1=1", "' OR '1'='1", "\" OR \"1\"=\"1"
};
private static final String SQL_CHECK_ERR = "'INJECTED_PARAM";
private static final Pattern patternErrorODBC1 = Pattern.compile("Microsoft OLE DB Provider for ODBC
Drivers.*error", 10);
private static final Pattern patternErrorODBC2 = Pattern.compile("ODBC.*Drivers.*error", 10);
private static final Pattern patternErrorGeneric = Pattern.compile("JDBC|ODBC|not a valid MySQL|SQL",
10);
private static final Pattern patternErrorODBCMSSQL = Pattern.compile("ODBC SQL Server Driver", 10);
O en la clase TestDefaultFileDomino:
private void createURI()
{
addTest("/", "homepage.nsf,admin4.nsf,agentrunner.nsf,busytime.nsf,catalog.nsf,certsrv.nsf");
addTest("/", "dspug.nsf,events4.nsf,log.nsf,mail.box,mtatbls.nsf,names.nsf,reports.nsf");
addTest("/", "statmail.nsf,webadmin.nsf,?Open,?OpenServer,admin5.nsf,admin.nsf,alog.nsf");
addTest("/", "bookmarks.nsf,certa.nsf,certlog.nsf,chatlog.nsf,collect4.nsf,dba4.nsf,dclf.nsf");
addTest("/", "decsadm.nsf,deslog.nsf,domadmin.nsf,domadmin.nsf,domcfg.nsf,domguide.nsf");
addTest("/", "events5.nsf,events.nsf,event.nsf,log4a.nsf,mab.nsf,nntppost.nsf,ntsync45.nsf");
addTest("/", "perweb.nsf,quickplacequickplacemain.nsf,schema50.nsf,setupweb.nsf");
addTest("/", "setup.nsf,smbcfg.nsf,srvnam.htm,statrep.nsf,stauths.nsf,stautht.nsf,stconfig.nsf");
addTest("/", "stconf.nsf,stdnaset.nsf,stdomino.nsf,stlog.nsf,stsrc.nsf,vpuserinfo.nsf,web.nsf");
addTest("/", "852566C90012664F,a_domlog.nsf,bookmark.nsf,clbusy.nsf,cldbdir.nsf,clusta4.nsf");
addTest("/",
"da.nsf,DEASAppDesign.nsf,DEASLog01.nsf,DEASLog02.nsf,DEASLog03.nsf,DEASLog04.nsf,DEASLog05.nsf,DEASLog.ns
f,decslog.nsf");
addTest("/", "DEESAdmin.nsf,dirassist.nsf,doladmin.nsf,domlog.nsf,");
addTest("/iNotes/Forms5.nsf", "$DefaultNav");
addTest("/", "jotter.nsf,leiadm.nsf,leilog.nsf,leivlt.nsf,l_domlog.nsf");
addTest("/", "mail10.box,mail1.box,mail2.box,mail3.box,mail4.box,mail5.box,mail6.box,mail7.box,mail8.box,mail9.box");
addTest("/", "msdwda.nsf,mtstore.nsf");
addTest("/nntp","nd000001.nsf,nd000002.nsf,nd000003.nsf");
addTest("/", "qpadmin.nsf");
addTest("/quickplace/quickplace", "main.nsf");
addTest("/sample", "siregw46.nsf");
addTest("/", "smconf.nsf,smency.nsf,smhelp.nsf,smmsg.nsf,smquar.nsf,smsolar.nsf,smtime.nsf");
addTest("/", "smtpibwq.nsf,smtpobwq.nsf,smtp.box,smtp.nsf,smvlog.nsf,streg.nsf,userreg.nsf");
}
La herramienta puede obtenerse en
http://www.parosproxy.org/index.shtml


Comentarios
Añadir comentario