Menü
Avatar von mex2k
  • mex2k

225 Beiträge seit 08.05.2004

Erklärung, wie die Lücke funktioniert

Von der Lücke ist man nur betroffen, wenn man nicht SMTP sondern Sendmail verwendet.

In diesem Fall werden Parameter an die Shell übergeben, welche nicht korrekt escaped werden.

Das Problem liegt hier im Detail. PHPMailer validiert E-Mail Adressen strikt nach RFC 3696 Standard. Dieser Standard erlaubt aber auch Leerzeichen in E-Mail Adressen, wenn diese von Anführungszeichen umschlossen sind.
Eine Adresse wie " super toll email addresse"@my-very-own-email-box.net wäre also für PHPMailer valide würde aber dann wie folgt an die Konsole übergeben werden:

Arg 0 == [/usr/sbin/sendmail]
Arg 1 == [-t]
Arg 2 == [-i]
Arg 3 == [-fsuper toll email addresse"@my-very-own-email-box.net]

Dadurch ist es möglich den Parameter -X bei sendmail zu setzen und das Programm somit zu bewegen, die Logausgabe in eine auf dem Webserver erreichbare Datei zu schreiben z.B. landet mit -X /var/www/default/mycode.php die Logausgabe im Default Ordner des Webservers.

Schleust man hier PHP Code z.B. <?php echo "Hello World"; ?> ein, kann man diesen Code dann über den Webserver direkt auf dem betroffenen Server ausführen.

Weiterführende Links:
https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10033
https://github.com/PHPMailer/PHPMailer/commit/ed4e7ce8ad877a8f578139c491c256ab1933c7c9

Das Posting wurde vom Benutzer editiert (27.12.2016 14:25).

Bewerten
- +
Anzeige