Hola Gente
Les comento que me apasiona la seguridad informàtica y recientemente tuve la oportunidad de realizar un pentest sobre el servidor de un amigo para probar mis conocimientos y ver hasta donde llegaba
Les paso a grandes rasgos una lista de los pasos que fui siguiendo:
1. Escaneo con nmap
nmap -sS -sU -sV -T3 -A -v -Pn -PS80,443,5430,5431 -PA3389 -PU40125 -PY -g 53 --script all <host>
resultados:
Port protocol state service Version
21 tcp open ProFTPD 1.2.10
22 tcp open OpenSSH 3.8.1p1 Debian 8.sarge.4 (protocol 2.0)
53 tcp open ISC BIND 9.6-ESV-R1
110 tcp open Dovecot pop3d
222 tcp open OpenSSH 4.3 (protocol 2.0)
2222 tcp open OpenSSH 4.3 (protocol 2.0)
3322 tcp open OpenSSH 4.3 (protocol 2.0)
3389 tcp open Microsoft Terminal Service
3390 tcp open Microsoft Terminal Service
5431 tcp open PostgreSQL DB 8.0.0
2. Escaneo con nessus
Pongo solo los resultados que supongo interesantes
Port 80
Apache < 1.3.37 mod_rewrite LDAP Protocol URL Handling Overflow
PHP 5 < 5.2.7 Multiple Vulnerabilities
PHP < 5.2.1 Multiple Vulnerabilities
PHP < 5.2.6 Multiple Vulnerabilities
PHP < 5.2 Multiple Vulnerabilities
PHP < 4.4.3 / 5.1.4 Multiple Vulnerabilities
PHP < 4.4.1 / 5.0.6 Multiple Vulnerabilities
Web Server Expect Header XSS
AlienForm2 alienform.cgi Traversal Arbitrary File Manipulation
PHP expose_php Information Disclosure
HTTP TRACE / TRACK Methods Allowed
PHP < 5.2.4 Multiple Vulnerabilities
PHP < 5.2.3 Multiple Vulnerabilities
PHP < 5.2.10 Multiple Vulnerabilities
PHP < 5.2.12 Multiple Vulnerabilities
PHP < 5.2.5 Multiple Vulnerabilities
PHP < 5.3.2 / 5.2.13 Multiple Vulnerabilities
PHP < 5.2.11 Multiple Vulnerabilities
PHP < 5.2.9 Multiple Vulnerabilities
Multiple Web Server printenv CGI Information Disclosure
HTTP Server Type and Version -> Apache/1.3.33 (Unix) PHP/5.0.4
3. Obtencion de información
Probando conexión por terminal al puerto 3389 salta que es un xp
Probando conexión por terminal al puerto 3390 salta que es un win server 2008
Utilizando AlienForm2 alienform.cgi Traversal Arbitrary File Manipulation pude obtener el archivo /etc/passwd, logs de apache, archivos de configuracion de mysql, proftpd, red, ssh y archivo de contraseñas de apache para directorio protegido entre otros menos importantes
Utilizando un site crawler obtube nombres de archivos y viendo el log de apache pude obtener la ruta de otros tantos mas. Todos ellos los pude leer utilizando AlienForm
Viendo los scripts php determine que se conecta al servidor con el usuario postgres mediante una conexión de confianza (sin password para la conexión local)
No pude encontrar los archivos de configuración de postgresql ni su log en las siguientes rutas
/var/lib/pgsql/data/pg_hba.conf
/var/lib/pgsql/data/postgresql.conf
/usr/lib/pgsql/data/postgresql.conf
/var/lib/pgsql/pg_hba.conf
/usr/lib/pgsql/pg_hba.conf
/usr/lib/pgsql/data/pg_hba.conf
/usr/lib/pgsql/pg_hba.conf.sample
/etc/postgresql/7.4/main/pg_hba.conf
/etc/postgresql/8.0/main/pg_hba.conf
/etc/postgresql/8.1/main/postgresql.conf
/etc/postgresql/8.2/main/postgresql.conf
/etc/postgresql/8.3/main/postgresql.conf
/etc/postgresql/8.3/main/pg_hba.conf
/var/log/postgresql.log
Sabiendo el codigo php de determinadas paginas pude encontrar la posibilidad de realizar sql injection para obtener los usuarios y contraseñas de postgresql, pero como esta habilitado el magic quotes me esta impidiendo realizar esta tecnica dado que el script vulnerable obtiene parametros por medio de la url
Por otro lado intente utilizar la funcionalidad de escribir archivos utilizando la misma vulnerabilidad de AlienForm2 segun http://seclists.org/bugtraq/2002/Jun/73 pero no logro que funcione
Ahora paso a las preguntas:
Alguien ha utilizado el bug de AlienForm2 para escribir archivos? no logro comprender como una expresion regular puede escribir un archivo en el disco. Estoy tratando de depurar el script cgi para entender bien lo que sucede
Conocen algna tecnina para bypasear el magic quotes por url? He visto tecnicas aplicadas sobre formularios utilizando javascript pero no sirven para este caso
Alguna sugerencia de archivo de configuración a buscar, alguna otra locación donde pueda encontrar configuración y logs de postgre
Alguna otra técnica que me pueda arrojar un poco de luz. De momento intento evitar ingeniería social y fuerza bruta sobre ssh, ftp y postgre
Se agradece cualquier aporte
Les comento que me apasiona la seguridad informàtica y recientemente tuve la oportunidad de realizar un pentest sobre el servidor de un amigo para probar mis conocimientos y ver hasta donde llegaba
Les paso a grandes rasgos una lista de los pasos que fui siguiendo:
1. Escaneo con nmap
nmap -sS -sU -sV -T3 -A -v -Pn -PS80,443,5430,5431 -PA3389 -PU40125 -PY -g 53 --script all <host>
resultados:
Port protocol state service Version
21 tcp open ProFTPD 1.2.10
22 tcp open OpenSSH 3.8.1p1 Debian 8.sarge.4 (protocol 2.0)
53 tcp open ISC BIND 9.6-ESV-R1
110 tcp open Dovecot pop3d
222 tcp open OpenSSH 4.3 (protocol 2.0)
2222 tcp open OpenSSH 4.3 (protocol 2.0)
3322 tcp open OpenSSH 4.3 (protocol 2.0)
3389 tcp open Microsoft Terminal Service
3390 tcp open Microsoft Terminal Service
5431 tcp open PostgreSQL DB 8.0.0
2. Escaneo con nessus
Pongo solo los resultados que supongo interesantes
Port 80
Apache < 1.3.37 mod_rewrite LDAP Protocol URL Handling Overflow
PHP 5 < 5.2.7 Multiple Vulnerabilities
PHP < 5.2.1 Multiple Vulnerabilities
PHP < 5.2.6 Multiple Vulnerabilities
PHP < 5.2 Multiple Vulnerabilities
PHP < 4.4.3 / 5.1.4 Multiple Vulnerabilities
PHP < 4.4.1 / 5.0.6 Multiple Vulnerabilities
Web Server Expect Header XSS
AlienForm2 alienform.cgi Traversal Arbitrary File Manipulation
PHP expose_php Information Disclosure
HTTP TRACE / TRACK Methods Allowed
PHP < 5.2.4 Multiple Vulnerabilities
PHP < 5.2.3 Multiple Vulnerabilities
PHP < 5.2.10 Multiple Vulnerabilities
PHP < 5.2.12 Multiple Vulnerabilities
PHP < 5.2.5 Multiple Vulnerabilities
PHP < 5.3.2 / 5.2.13 Multiple Vulnerabilities
PHP < 5.2.11 Multiple Vulnerabilities
PHP < 5.2.9 Multiple Vulnerabilities
Multiple Web Server printenv CGI Information Disclosure
HTTP Server Type and Version -> Apache/1.3.33 (Unix) PHP/5.0.4
3. Obtencion de información
Probando conexión por terminal al puerto 3389 salta que es un xp
Probando conexión por terminal al puerto 3390 salta que es un win server 2008
Utilizando AlienForm2 alienform.cgi Traversal Arbitrary File Manipulation pude obtener el archivo /etc/passwd, logs de apache, archivos de configuracion de mysql, proftpd, red, ssh y archivo de contraseñas de apache para directorio protegido entre otros menos importantes
Utilizando un site crawler obtube nombres de archivos y viendo el log de apache pude obtener la ruta de otros tantos mas. Todos ellos los pude leer utilizando AlienForm
Viendo los scripts php determine que se conecta al servidor con el usuario postgres mediante una conexión de confianza (sin password para la conexión local)
No pude encontrar los archivos de configuración de postgresql ni su log en las siguientes rutas
/var/lib/pgsql/data/pg_hba.conf
/var/lib/pgsql/data/postgresql.conf
/usr/lib/pgsql/data/postgresql.conf
/var/lib/pgsql/pg_hba.conf
/usr/lib/pgsql/pg_hba.conf
/usr/lib/pgsql/data/pg_hba.conf
/usr/lib/pgsql/pg_hba.conf.sample
/etc/postgresql/7.4/main/pg_hba.conf
/etc/postgresql/8.0/main/pg_hba.conf
/etc/postgresql/8.1/main/postgresql.conf
/etc/postgresql/8.2/main/postgresql.conf
/etc/postgresql/8.3/main/postgresql.conf
/etc/postgresql/8.3/main/pg_hba.conf
/var/log/postgresql.log
Sabiendo el codigo php de determinadas paginas pude encontrar la posibilidad de realizar sql injection para obtener los usuarios y contraseñas de postgresql, pero como esta habilitado el magic quotes me esta impidiendo realizar esta tecnica dado que el script vulnerable obtiene parametros por medio de la url
Por otro lado intente utilizar la funcionalidad de escribir archivos utilizando la misma vulnerabilidad de AlienForm2 segun http://seclists.org/bugtraq/2002/Jun/73 pero no logro que funcione
Ahora paso a las preguntas:
Alguien ha utilizado el bug de AlienForm2 para escribir archivos? no logro comprender como una expresion regular puede escribir un archivo en el disco. Estoy tratando de depurar el script cgi para entender bien lo que sucede
Conocen algna tecnina para bypasear el magic quotes por url? He visto tecnicas aplicadas sobre formularios utilizando javascript pero no sirven para este caso
Alguna sugerencia de archivo de configuración a buscar, alguna otra locación donde pueda encontrar configuración y logs de postgre
Alguna otra técnica que me pueda arrojar un poco de luz. De momento intento evitar ingeniería social y fuerza bruta sobre ssh, ftp y postgre
Se agradece cualquier aporte