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

wbblite Salted Hashes Version 1

Hervorgehoben

Hallo Blog Leser,

auch wenn ich in den letzen 2 Monaten kaum etwas gepostet habe,ist nun der Zeitpunkt gekommen wo ich doch mal die wbblite Version 1.0.2 pl3 bissl gefixt habe und 2-3 Bugs gefixt habe und diesem WoltLab Burning Board Lite eine Salt Funktion verpasst habe.

Da es sich um die erste Version handelt habe ich das ganze extrem einfach gehalten.

Die icon.php habe ich auch gefixt,da war eine SQL Injection möglich,ebenso habe ich auch die avatar.php bearbeitet.
Wie gesagt alles einfach gehalten, da ich erhlich gesagt nicht glaube das es großen Anhang findet.

Den Download gibt es hier:

Mit dem Download Aktzeptiert Ihr die Lizens von Woltab
wbblite102pl3salted

XSS – Cross-Site Scripting bei million Pixel

Hallo Freunde,

ich habe mir mal das Script von Million Pixel by textmedia.de angeschaut, dabei ist heraus gekommen das selbst bei der neusten Version einige XSS Lücken vorhanden sind,ich möchte hier mal eine aufzeigen. Das Problem liegt in der Variable pa

Ich gebe aus Rechtlichen Gründen keine URL an,aber der Anbieter selber hat auch diese Lücke!

Es sind einige Dateien anfällig, in diesem Demo nehme ich mal die mailing.php vor.

mailing.php?pa=1%00"'>alert(407253068350)%3B[email protected]

Was man damit Anfangen kann dürfte jedem klar sein, jede Lücke egal ob XSS oder SQL ist extrem Gefährlich.

Da die Software nicht frei erhältich ist,darf ich hier keinen Code veröffentlichen. Aber solche Lücken sind leicht zu fixen.

Nofollow Links setzen

Hallo Gemeinde,

hier mal wieder ein kleines HowTo wie man Links im Woltlab 2.3.* Board auf nofollow setzt.
Mit dem Attribut Nofollow auf Links sorgt man das keine Links in Suchmaschinen nicht mit zur Berechnung der Webseite mit eingezogen wird, sprich die „Linkpopularität“.

Genaue Erklärung gibt es bei Wikipedia unter Nofollow

Im wbb.2.3.* sucht man in der /acp/lib/class_pharse.php

function formaturl($url, $title = '', $maxwidth = 60, $width1 = 40, $width2 = -15) {
if (!wbb_trim($title)) {
$title = rehtmlconverter($url);
if (!preg_match("/[a-z]:\/\//si", $url)) $url = "http://$url";
if ($this->cuturls == 1 && wbb_strlen($title) > $maxwidth) $title = wbb_substr($title, 0, $width1)."...".wbb_substr($title, $width2);
return "".htmlconverter($this->stripSlashes($title))."";
}
else {
if (!preg_match("/[a-z]:\/\//si", $url)) $url = "http://$url";
return "".$title."";
}
}

und tauscht dieses gegen diesen Code aus.


function formaturl($url, $title = '', $maxwidth = 60, $width1 = 40, $width2 = -15) {
if (!wbb_trim($title)) {
$title = rehtmlconverter($url);
if (!preg_match("/[a-z]:\/\//si", $url)) $url = "http://$url";
if ($this->cuturls == 1 && wbb_strlen($title) > $maxwidth) $title = wbb_substr($title, 0, $width1)."...".wbb_substr($title, $width2);
return "".htmlconverter($this->stripSlashes($title))."";
}
else {
if (!preg_match("/[a-z]:\/\//si", $url)) $url = "http://$url";
return "".$title."";
}
}

je nach dem ob man einen HideHack verbaut hat, muß man dieses auch ändern.

Für das wbb 1.0.* kann man auch mit rel=\“nofollow\“ vorgehen!

PHP verbergen

Das ist eine leichte Sache

in der php.ini braucht man nur die Einstellung expose_php von On sprich 1 auf Off also 0 zu setzen.

Hierbei wird unterbunden das die PHP Version mit in die Server Signatur eingebunden wird.

Hier Anzeige mit expose_php 1

HTTP/1.1 200 OK
Date: Tue, 03 Mar 2009 13:56:47 GMT
Server: Apache/2.2.0 (Fedora)
X-Powered-By: PHP/5.2.0-8+etch13

und hier eine Ausgabe mit expose_php 0

HTTP/1.1 200 OK
Date: Tue, 03 Mar 2009 13:58:20 GMT
Server: Apache/2.2.9

Ausgaben PHP

Hallo,

eine der bekanntesten Ausgaben ist echo(), hierbei handelt es sich um keine Funktion sondern viel mehr um ein Sprachkonstrukt.

$1234 = "Test";
echo "Das ist ein $1234";
Ausgabe wäre Test

Es kann auch vorkommen das in mitten von HTML auch Daten von PHP benötigt werden.Meißt schaut das dann so ähnlich aus…

Mein HTML Text wurde erzeugt am : .

Das ganze geht mit short_open_tags einfacher 😉

Natürlich gibt es auch print(), um eine Ausgabe zu erzeugen.

PHP Ext. Programme Aufrufen

Hallo,

es ist immer Vorsicht geboten externe Programme von einem PHP-Skript aus zu Starten,diese haben meißt den gleichen Webserverprozess und sind Gefährlich.Gerade wenn die externe Programme vuln sind,habe diese die gleiche Rechte wie der PHP-Prozess

Sollte es dennoch nötig sein ein externes Programm zu Starten sollte man escapeshellarg() zum escapen Nutzen.

Ich gehe auf das Thema mal nicht näher ein.

SQL Bugs in Woltlab Addons & Co

Hallo Gemeinde,

ich habe mir jetzt mal vorgenommen was hier über „SQL Bugs“ zu veröffentlichen.
Es kommt immer wieder vor das Addons für z.b das alte woltlab 2.3.* immer noch Buggy sind,wobei inzwischen klar sein dürfte wie man sich gegen SQL-Injection schützen kann.

Um seine SQL Query zu Schützen sollte man mit der php-funktion intval,addslashes oder auch mysql_real_escape_string arbeiten.

Genaue Aufklärung findet man auch bei wikipedia unter SQL-Injektion