# The Hackers Labs Resident

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2F0djXjOs5cRu86hLddUKL%2F1.png?alt=media&#x26;token=dcca4a8b-dfb2-4998-a227-9d0805ddc7dd" alt=""><figcaption></figcaption></figure>

Un puerto abierto.

***

```javascript
# Nmap 7.94SVN scan initiated Tue Oct  8 10:48:00 2024 as: nmap -sCV -p80 -oN target.txt 172.16.241.196
Nmap scan report for 172.16.241.196
Host is up (0.00072s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.62 ((Debian))
|_http-title: Iniciar Sesi\xC3\xB3n
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
|_http-server-header: Apache/2.4.62 (Debian)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Tue Oct  8 10:48:13 2024 -- 1 IP address (1 host up) scanned in 13.42 seconds
```

Version y servicio que corren para ese puerto.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FUEQoo92ggls6w2Kgj8dV%2F2.png?alt=media&#x26;token=1b88e662-a170-4ee0-b178-b5e9402d4029" alt=""><figcaption></figcaption></figure>

Si fuzzeamos encontramos dos archivos uno que es mas comun.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FEi0UVjcv5Z5omlR5Dm5B%2F3.png?alt=media&#x26;token=50c57457-507b-46ef-a530-956ddc0f4b88" alt=""><figcaption></figcaption></figure>

Si le lanzamos un curl al robots tenemos un nombre de usuario y una contraseña en base64 por el formato que se le ve.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FlLBcnKcTEbt7jkJnFs7d%2F4.png?alt=media&#x26;token=6211e55d-396d-4b2f-b05e-9cf62d50e309" alt=""><figcaption></figcaption></figure>

Lo vamos a pasar por el decoder de Burp Suite, primero lo pasamos ah base64 y luego lo pasamos ah url y obtenemos un hash que parece md5 por el formato.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FKRVWtvyKDhP8NCSRTKsX%2F5.png?alt=media&#x26;token=36dfa940-d397-4a04-affd-8c7872471915" alt=""><figcaption></figcaption></figure>

Si nos vamos a la wen ah intentar iniciar session con las credenciales del admin y hash como contraseña nos dice que algo es incorrecto.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FHm7mkY2M2T4VEuEnyCsn%2F6.png?alt=media&#x26;token=be53405d-3630-44af-8343-756017d5f898" alt=""><figcaption></figcaption></figure>

Si pasamos el hash por esta pagina nos dice lo que deciamos antes es md5 de 31 caracteres.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FUVRAvpxG73vF8QTJnuR9%2F7.png?alt=media&#x26;token=35331414-55ad-47d4-a1d8-738e18c87339" alt=""><figcaption></figcaption></figure>

Pero si le preguntamos ah san google nos dice que md5 posee 32 caracteres, es decir que falta un caracter, asi que hay que averiguarlo.

***

```python
# [+] Autor: R0dgar

import sys

def generate_dict(base_hash):
    charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    with open('hashes.txt', 'w') as f:
        for char in charset:
            f.write(f"{base_hash}{char}\n")
    print("Diccionario generado en hashes.txt")

if __name__ == "__main__":
    if len(sys.argv) != 2 or len(sys.argv[1]) != 31:
        print("Uso: python3 generate.py <md5_31_caracteres>")
        sys.exit(1)

    generate_dict(sys.argv[1])
```

* Nos creamos un script en python3 para intentar averiguar el ultimo caracter que igualmente lo podes fuzzear con Burp Suite pero es algo mas lento.
* El script es tal que asi de la a-z en minuscula y de la A-Z en mayuscula del 0-9, lo que hace el script es agregar en minuscula y mayuscula de la a a la z y un numero del 0 al 9. Asi completar los 32 caracteres.

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FiHztIdhJQjGbgLTJ93pk%2F8.png?alt=media&#x26;token=6eee3008-c64e-4059-8c58-88bd70eb93d2" alt=""><figcaption></figcaption></figure>

Lo ejecutamos y tenemos algo asi.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FiBt3ORK25ZkWFkJiY6Ks%2F9.png?alt=media&#x26;token=0925450b-7a57-4406-9c4e-d09a2a328ec0" alt=""><figcaption></figcaption></figure>

Ahora con el diccionario que creamos usamos hydra para hacer fuerza bruta y bingo encontramos una combinacion correcta.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2F3jx5xB4av2fT1g6T3uyZ%2F10.png?alt=media&#x26;token=3fd00392-664d-4527-b27c-1f581bc76503" alt=""><figcaption></figcaption></figure>

Entramos a un dashboard y un panel tiene un XSS de vuln.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2Fup88SW3XZnrPPnS3JxLO%2F11.png?alt=media&#x26;token=426e9f70-e453-4ad8-8d12-a40adacb0877" alt=""><figcaption></figcaption></figure>

El siguiente panel es vulnerable ah SSRF, vamos a pasar esto por Burp Suite a ver que tal se comportan.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FtId6qHyg5d07S44yFyES%2F12.png?alt=media&#x26;token=62796b2e-c9ab-45ae-8d8f-32431ec8224b" alt=""><figcaption></figcaption></figure>

Observamos que atraves del SSRF podemos lograr un **Path Traversal y leer el passwd de la maquina.**

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FEtjYdTmjuZQEJwuTE8Rt%2F13.png?alt=media&#x26;token=c8150797-a41d-4e27-976e-0ee7cfb5f707" alt=""><figcaption></figcaption></figure>

Observamos que podemos leer los logs de apache, lo que podriamos derivar a un Log Poisoning un RCE, envenenar los logs de apache.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FLLRA5UfmPUIMtiD17Ypn%2F14.png?alt=media&#x26;token=6bc4b468-bc7f-4a98-9511-3ce45bc3314f" alt=""><figcaption></figcaption></figure>

Si intento atraves del User-Agent envenear no deja me da un codigo de estado 500.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2Fep2uNtjBDbL1LunBIiQ8%2F15.png?alt=media&#x26;token=d3bcf4cc-85e0-463c-9dc1-f5d7b12f68ab" alt=""><figcaption></figcaption></figure>

Observamos que si le paso otro parametro diferente al cmd si me lo interpreta la maquina, osea tenemos un RCE en el User-Agent. Observamos que tenemos ahi un connect.php lo que quiere decir que eso se estaria usando para conectar a la base de datos.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FmIJta3xFVurNLIrTmFSv%2F16.png?alt=media&#x26;token=4b853105-6c1f-420b-9e5f-9d2901eaa018" alt=""><figcaption></figcaption></figure>

Usaremos el User-Agent para enviarnos una revershell a nuestra maquina atacante.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FFu3DTkSWkUjZhntCDMBY%2F17.png?alt=media&#x26;token=0aa43a5c-d321-47ea-a15d-66ee342cc2a3" alt=""><figcaption></figcaption></figure>

Obtemos acceso y leemos el archivo anterior que decia el connect.php y tenemos un usuario y contraseña para conectar a la base de datos, si se reutilizan las podriamos usar.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FncXfQ83K6NBwwRWYcfJk%2F18.png?alt=media&#x26;token=7e658db3-9ad0-4286-8d4e-c33a0dd1a91a" alt=""><figcaption></figcaption></figure>

Afirma existe un usuario llamado simple con contraseña simple.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FhjPEyh8ixoO7LO8tNWfR%2F19.png?alt=media&#x26;token=b18136f8-1615-47dd-9ef9-00f32c2e20b2" alt=""><figcaption></figcaption></figure>

* Este usuario tiene en su directorio de trabajo un cp.sh lo que hace es copiar un archivo llamado password.txt desde el directorio /home/ram y lo envia ah /tmp.
* Lo ejecutamos y vamos a /tmp y tenemos un hash con el usuario.
*

```python
[+] Autor: R0dgar

import hashlib
import crypt

def crack_password(hash_to_crack, dictionary_path):
    with open(dictionary_path, 'r', encoding='latin-1') as dict_file:
        for word in dict_file:
            word = word.strip()  # Eliminar espacios y saltos de línea
            # Comparar el hash de la contraseña con el hash proporcionado
            if crypt.crypt(word, hash_to_crack) == hash_to_crack:
                return word
    return None

if __name__ == "__main__":
    hash_to_crack = "$y$j9T$v3fiA7W1LOJmdyVZGUfIp0$TF7qqhsJ1SnWH8caDijOlxCjIo2VXgurTgq6DIlxmE1"
    dictionary_path = "/usr/share/wordlists/rockyou.txt"
    
    found_password = crack_password(hash_to_crack, dictionary_path)
    
    if found_password:
        print(f"¡Contraseña encontrada! Es: {found_password}")
    else:
        print("Contraseña no encontrada en el diccionario.")
```

Yo me cree un script en pytho3 porque se me hizo imposible con John o hashcat.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2FJOIOVV2F0TdJO4uyjuLG%2F20.png?alt=media&#x26;token=1af546b4-fee6-4906-9ebc-c3230cc7841a" alt=""><figcaption></figcaption></figure>

Y wala tenemos contraseña del usuario ram.

***

<figure><img src="https://1827363921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEGJvvgIusdsLKeoExX1C%2Fuploads%2F30StmId2CZKCag1VRhKu%2F21.png?alt=media&#x26;token=fda9b0e8-b90c-474b-af56-4fabdbcaf797" alt=""><figcaption></figcaption></figure>

Y bueno ram tiene todo usuario y el root y maquina resuelta.
