acrotxt.php SQL Injektion

Hallo,
wie auch immer so gibt es diese Lücke ja schon eine lange Zeit.
Ich hatte diese Gott sei Dank schon früher gefunden und bei unserem Board gefixt. Nun war ich auf der Suche nach einem Update und da ist mir durch Zufall dieses aufgefallen.

Hier auch das Paper von milw0rm dazu, alter Bug:
http://www.milw0rm.com/exploits/4327

Variable hat auch Probleme mit seite 🙂
das heißt nun:

Standart war:
SQL-Injection:
http://[target]/[path]/acrotxt.php?show=[SQL]

nun kommt aber auch dieses hinzu:
SQL-Injection:
http://[target]/[path]/acrotxt.php?seite=[SQL]

ob das ein Problem in versch. PHP Versionen ist kann ich nicht sagen.
Die v1 hat ja einige Bugs, von daher kan ich garnicht mehr sagen was ich damals alles gefixt habe. Hier sind Select Abfragen und auch die Insert nicht Okay. Hier mal ein schneller Fix wie man das mit der Seite hinbekommt, das dort kein SQL Error erscheint und das Injektion Problem behebt.


SQL-DATABASE ERROR

Database error in WoltLab Burning Board (2.3.6 pl2): Invalid SQL: SELECT * FROM bb1_acrotxt WHERE activate=1 ORDER BY word ASC LIMIT -30,30
mysql error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-30,30' at line 1
Date: 03.01.2010 @ 20:21
Referer:

Wie man hier schön sieht liegt das Problem im Bereich $offset, dort werden die Anzahlen der Seiten gezählt und mit dieser Query abgefragt.
$result = $db->unbuffered_query("SELECT * FROM bb".$n."_acrotxt WHERE activate=1 ORDER BY word ASC LIMIT ".$offset.",".$limit."");
Wie wo, ja offset,seiten und limit sind nicht Wirklich definiert auch – wenn das Limit selber abgefragt wird.

Was nun tun?

Am besten überarbeitet man das ganze Script etwas.

Zum einen Baut man mal ein
if(empty($seite))
$seite = 1;
ein damit überhaupt eine Seite angezeigt wird.

ein Fix ist mit empty und is_numeric auf der Variable offset möglich! Bitte aber nicht vergessen alle SQL Abfragen mit intval,addslashes oder viel besser mit mysql_real_escape_string zu sichern.

Und zum Abschluss gibt es hier noch ein kleines Video was ich gefunden habe.

http://www.youtube.com/watch?v=BsrBe1V4GwM

Viel Spaß damit

cultd3ad