Autor
|
Tema: Php injection (Leído 15,123 veces)
|
tragantras
Desconectado
Mensajes: 465
|
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 
|
|
« Última modificación: 23 Febrero 2010, 01:00 am por tragantras »
|
En línea
|
|
|
|
Castg!
Wiki
Desconectado
Mensajes: 1.191
|
proba con hexadecimal, si queres hacer un cat a /etc/passwd haces asi:
x = system((0x636174202f6574632f706173737764));
creo q tal vez podria servir...
|
|
|
En línea
|
|
|
|
WHK
|
que tal si pones: eval(stripslashses ($_GET["x"]));
|
|
|
En línea
|
|
|
|
tragantras
Desconectado
Mensajes: 465
|
- 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? 
|
|
« Última modificación: 23 Febrero 2010, 12:59 pm por tragantras »
|
En línea
|
|
|
|
braulio--
Wiki
Desconectado
Mensajes: 896
Imagen recursiva
|
- 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.
|
|
|
En línea
|
|
|
|
tragantras
Desconectado
Mensajes: 465
|
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 
|
|
|
En línea
|
|
|
|
braulio--
Wiki
Desconectado
Mensajes: 896
Imagen recursiva
|
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.
|
|
|
En línea
|
|
|
|
tragantras
Desconectado
Mensajes: 465
|
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 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
|
|
« Última modificación: 23 Febrero 2010, 15:31 pm por tragantras »
|
En línea
|
|
|
|
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;
|
|
|
En línea
|
|
|
|
tragantras
Desconectado
Mensajes: 465
|
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
|
|
|
En línea
|
|
|
|
|
|