Php injection

Iniciado por tragantras, 23 Febrero 2010, 00:38 AM

0 Miembros y 1 Visitante están viendo este tema.

tragantras

Huuula, bueno, dada la pericia de los peogramadores de mi facultad, e descubierto una vulnerabilidad de tipo php injeciton, mediante un eval($_GET["x"]);

si...son así de habiles allí.... ell caso, esk que para continuar con su nivel tiene actividas las magic quotes con lo que no puedo ahcer por ejemplo     ?x=system("ls -la");       porque me escapa las comillas...

de hecho estoy muy limitado en el uso de comandos puesto que la funcion system recibe una cadena y tal y cual. Por favor sugerencias? algun tipo de bypassing?


Gracias por adelantado :)

pD: tambien me serían útiles algunos comandos (linux) que puedan ser escritos en una sola palabra, es decir sin espacios :)
Colaboraciones:
1 2

Castg!

proba con hexadecimal, si queres hacer un cat a /etc/passwd haces asi:

x = system((0x636174202f6574632f706173737764));

creo q tal vez podria servir...

WHK

que tal si pones:
Código (php) [Seleccionar]
eval(stripslashses($_GET["x"]));

tragantras

#3

  • He probado con el método de conversion a hexadecimal... y no me funciona, por si acaso probé a poner tan solo system(ls) que en hexa queda system(0x6c73)  pero ni sikiera así me dejó, estás seguro que se puede incluir hexadecimal en la llamada a la funcion system?
  • Tambien e probado con el stripslashes pero no me funcionó, no se si me estoy confundiendo en la manera en que se aplica... ;system(stripslashes("ls -la"))   , eso es lo que puse, teniendo en cuenta que si pongo solo ;system(ls)  funciona bien  ( es decir, el punto y coma del final t lo añade el código )


no se si son errores mios, o proteccion de la web, en cualkier caso muchas gracias por ayudarme y apreciaría si pudieseis seguir haciendolo, un saludo :)

pD:  eval("echo PERICO_".$_GET["x"].";");
ese es el código fatídico, lo pongo por si sirve de algo xD


EDITO:

He conseguido hacer un "apaño", el tema de las comillas quedó solucionado usando stripslashes como dijo whk, pero apareció un nuevo inconveniente, no podia insertar espacios, así que use la funcion chr()
en concreto, chr(32) para insertar el espacio... El problema viene ahora, se ve que no tengo privilegios suficientes ni sikiera para moverme por directorios...(obviamente tampoico para crear archivos :$ ), no se porque cuando realizo system(cat index.php) por ejemplo, en vez de mostrarme el código es como que se "inserta", pero solo el codigo html... es decir como si bajasemos el index.php con "guardar como"...

no se me ocurre nada más, dado que no puedo escribir en el directorio en el que se encuentra...alguna sugerencia? :)
Colaboraciones:
1 2

braulio--

Cita de: tragantras en 23 Febrero 2010, 08:42 AM

  • He probado con el método de conversion a hexadecimal... y no me funciona, por si acaso probé a poner tan solo system(ls) que en hexa queda system(0x6c73)  pero ni sikiera así me dejó, estás seguro que se puede incluir hexadecimal en la llamada a la funcion system?
  • Tambien e probado con el stripslashes pero no me funcionó, no se si me estoy confundiendo en la manera en que se aplica... ;system(stripslashes("ls -la"))   , eso es lo que puse, teniendo en cuenta que si pongo solo ;system(ls)  funciona bien  ( es decir, el punto y coma del final t lo añade el código )


no se si son errores mios, o proteccion de la web, en cualkier caso muchas gracias por ayudarme y apreciaría si pudieseis seguir haciendolo, un saludo :)

pD:  eval("echo PERICO_".$_GET["x"].";");
ese es el código fatídico, lo pongo por si sirve de algo xD


EDITO:

He conseguido hacer un "apaño", el tema de las comillas quedó solucionado usando stripslashes como dijo whk, pero apareció un nuevo inconveniente, no podia insertar espacios, así que use la funcion chr()
en concreto, chr(32) para insertar el espacio... El problema viene ahora, se ve que no tengo privilegios suficientes ni sikiera para moverme por directorios...(obviamente tampoico para crear archivos :$ ), no se porque cuando realizo system(cat index.php) por ejemplo, en vez de mostrarme el código es como que se "inserta", pero solo el codigo html... es decir como si bajasemos el index.php con "guardar como"...

no se me ocurre nada más, dado que no puedo escribir en el directorio en el que se encuentra...alguna sugerencia? :)

Dale a ver código fuente y probablemente el coódigo php se visualice como si fueran comentarios html.
Esto pasa porque el navegador lo que está reconociendo es html y entonces si le pasas información con html pues la parsea.

tragantras

veis pq amo tanto esta comunidad... jajaja gracias braulio :)

alguien me sabría decir como podria escribir en un php? es que he descubierto un directorio en el cual se puede escribir, habia pensado en ( pero no me va eh xD ) :


x?3;stripslashes(system('echo.chr(32).a>pagina')

es decir -> echo a > pagina       ( como ejemplo, m refiero )

la idea es.. obviamente hacer una shell algo más facilita, pq me estoy rompiendo la cabeza :)
Colaboraciones:
1 2

braulio--

Podrías hacerlo directamente desde php , pero creo que es mas fácil así :

system("echo".chr(32)."loquequierasescribir".chr(32).">shell.php");

. es el símbolo de concatenación de cadenas, supongo que sabes php.

tragantras

#7
Cita de: ▬▬▬▬► braulio23 ◄▬▬▬▬▬ en 23 Febrero 2010, 14:26 PM
Podrías hacerlo directamente desde php , pero creo que es mas fácil así :

system("echo".chr(32)."loquequierasescribir".chr(32).">shell.php");

. es el símbolo de concatenación de cadenas, supongo que sabes php.


si si, algo de php si que se, el asunto es que como están activadas las magic quotes (como puse arriba), no me deja más que insertar comillas simples mediante el stripslashes y no funciona bien... ciertamente no lo entiendo, por que por ejemplo si que puedo poner   system(ls.chr(32).chr(45).la) quedando
ls -la  si que funciona, pero sin embargo si pong system(echo.chr(32).a)  (echo a) por ejemplo, que debería mostrarmelo por pantalla, no suelta nada... y no termino de cogerlo...

EDITO:

hmmm 
Código (php) [Seleccionar]
a;stripslashes(system('echo'.chr(32).'cosa>a.txt')) así si que me deja, bueno un saludo y sigo a la escucha de posibles opciones de explotación (gracias de nuevo braulio)

PD: edito por si a alguien le interesa seguir la evolucion de un newbie xDD
Colaboraciones:
1 2

WHK

nopo, esque de nada sirve ejecutar eval(stripslashses(system('ls -la'))) porque quedaría eval(stripslashses(system(\'ls -la\'))) , por eso debes ejecutarlo en la variable get:
eval(stripslashses($_GET[x]))
y fijate que va sin comillas, ahora ejecutas index.php?x=system('ls -la'); exit;

tragantras

Cita de: WHK en 23 Febrero 2010, 17:14 PM
nopo, esque de nada sirve ejecutar eval(stripslashses(system('ls -la'))) porque quedaría eval(stripslashses(system(\'ls -la\'))) , por eso debes ejecutarlo en la variable get:
eval(stripslashses($_GET[x]))
y fijate que va sin comillas, ahora ejecutas index.php?x=system('ls -la'); exit;


hmmm jaja pero quizá no m expliqué bien, el código obviamente no lo puedo modificar yo... es un servidor web, tan solo puedo explotar dicha vuln :S
Colaboraciones:
1 2