Willkommen bei Network & Security     remoteshell-security.com
Partnerseiten
login.php?sid=a68eb8490cb6d9807edc34b792e3f711 profile.php?mode=register&sid=a68eb8490cb6d9807edc34b792e3f711 faq.php?sid=a68eb8490cb6d9807edc34b792e3f711 memberlist.php?sid=a68eb8490cb6d9807edc34b792e3f711 search.php?sid=a68eb8490cb6d9807edc34b792e3f711 index.php?sid=a68eb8490cb6d9807edc34b792e3f711

Foren-Übersicht » Internetprogrammierung » [PHP] SQL-Injection bei mangelhafter Validierung
Neues Thema eröffnen  Neue Antwort erstellen Vorheriges Thema anzeigen :: Nächstes Thema anzeigen 
[PHP] SQL-Injection bei mangelhafter Validierung
BeitragVerfasst am: 17.01.2007 20:32 Antworten mit Zitat
Cerox
Anmeldedatum: 31.12.2005
Beiträge: 782
Wohnort: Engelskirchen




Hallo zusammen,

ich habe ein Script geschrieben, welches eine Kommentierung ermöglicht (form.php). Ein anderes Script (show.php) zeigt diese Einträge an.

http://cerox.dnsalias.com/test/it2/show.php
http://cerox.dnsalias.com/test/it2/form.php

In dem Eingabeformular (form.php) werden die Variablen (die beiden Eingabefelder) nicht überprüft; XSS ist dadurch natürlich auch ohne Probleme möglich.

Jetzt geht es darum zwei Datenbankbefehle auszuführen; d.h. der aktuelle soll abgeschlossen werden und danach soll beispielsweise ein "DELETE FROM comments" ausgeführt werden, wodurch die Tabelle geleert würde.

Das SQL Statement in der form.php sieht wie folgt aus:

Code:
INSERT INTO comments (name,text,ip) VALUES ('$_POST[name]','$_POST[comment]','$ip')


Das Problem scheint nun zu sein, dass ich aus der Variable nicht raus komme; ich habe bereits versucht, den Rest des Statements mit -- oder /* auszukommentieren. Des weiteren habe ich versucht, das Statement sofort mit einem Simikolon abzuschließen usw.

Zielsetzung: Es soll die Tabelle comments geleert werden, d.h. das SQL-Statement "DELETE FROM comments" soll irgendwie eingefügt werden.

Kann mir bitte jemand helfen? Der Server läuft, falls ihr zu spät seit^^, morgen ab 5 Uhr wieder.

PS: Ihr könnt eure Einträge wieder löschen; mit der admin.php:
http://cerox.dnsalias.com/test/it2/admin.php
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
BeitragVerfasst am: 18.01.2007 10:51 Antworten mit Zitat
madhead
Anmeldedatum: 02.11.2006
Beiträge: 52




magic_quotes_gpc in der ini ausschalten, diese Funktion ersetzt alle ', " etc.. durch \' \". Wenn du das deaktivierst, dann kannste problemlos ausbrechen...
Mehr dazu hier:

http://de2.php.net/manual/de/ref.info.php#ini.magic-quotes-gpc

_________________
Es gibt genau 10 Arten von Menschen, die einen verstehen Binärcode die anderen nicht.
Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer
BeitragVerfasst am: 18.01.2007 14:09 Antworten mit Zitat
Cerox
Anmeldedatum: 31.12.2005
Beiträge: 782
Wohnort: Engelskirchen




Hi,

ich habe magic_quotes_gpc nun deaktiviert; es funktioniert trotzdem nicht. Hätte mich auch gewundert, denn ich kann eine Abfrage ja mit einem Simikolon abschließen und das wird nicht mit einem Backslash maskiert.

Es hat sich allerdings etwas verändert: Wenn man '; als Kommentartext einträgt, wird die Abfrage nicht erfolgreich ausgeführt. Meine Fehlermeldung dort erscheint, wenn mysql_query FALSE zurück gibt.

Du kannst es ja mal ausprobieren; ich lasse die Option erstmal deaktiviert.
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
BeitragVerfasst am: 18.01.2007 14:21 Antworten mit Zitat
madhead
Anmeldedatum: 02.11.2006
Beiträge: 52




also das hier geht:

text: ','') #

das Problem ist das ; das wirft bei diesem teil hier nen fehler ist ja auch klar:

mysql_query("INSERT INTO comments (name,text,ip) VALUES ('$_POST[name]','',''); # ','$ip')");

das ; beendet ja das mysql_query...


Zuletzt bearbeitet von madhead am 18.01.2007 15:13, insgesamt 3-mal bearbeitet

_________________
Es gibt genau 10 Arten von Menschen, die einen verstehen Binärcode die anderen nicht.
Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer
BeitragVerfasst am: 18.01.2007 14:42 Antworten mit Zitat
Cerox
Anmeldedatum: 31.12.2005
Beiträge: 782
Wohnort: Engelskirchen




Wieso sollte ich zuerst mit der $ip-Variablen beginnen? Es geht darum, eine SQL-Injection Lücke im vorhandenen Script auszunutzen - logischerweise ohne es umzuändern. Es werden schließlich keine Variablen überprüft.
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
BeitragVerfasst am: 14.03.2007 21:42 Antworten mit Zitat
Cerox
Anmeldedatum: 31.12.2005
Beiträge: 782
Wohnort: Engelskirchen




Um das Problem nochmals aufzugreifen, da es mir heute wieder unterlaufen ist:

Es liegt scheinbar an der MySQL-Version, die genutzt wird oder an irgendwelchen MySQL-spezifischen Einstellungen. Wenn ich nicht validierende Skripte auf meinen Webspace lade, sind die Lücken in der Regel ausnutzbar.

Verwundert bin ich etwas über die Reaktionen des eigentlich zum Testen gedachten XAMPP-Servers von apachefriends. Denn der XAMPP-Server lässt eine Manipulierung von Statements, z.B. das Auskommentieren, nicht zu.
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
BeitragVerfasst am: 15.03.2007 22:04 Antworten mit Zitat
duddits
Anmeldedatum: 03.01.2006
Beiträge: 569
Wohnort: /proc




Hi,

ich weiß auch nicht woran es liegt aber ich habe auch schon ein paar Unterschiede feststellen müssen. Z.B. das die Login-Funktion eines Scriptes auf funpic klappt aber unter XAMPP nicht.

_________________
Quidquid agis, prudenter agas et respice finem!

Jabber ID: duddits@amessage.info
Webseite: http://www.remoteshell-security.com
Weblog: http://blog.remoteshell-security.com
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Jabber ID
BeitragVerfasst am: 17.03.2007 17:21 Antworten mit Zitat
Phara0h
Anmeldedatum: 31.12.2005
Beiträge: 357
Wohnort: /dev/RL




Ic h habe beim XAMPP festgestellt, dass die method="POSZ" Funktion nicht richtig funktioniert und es desswehen zu Syntax-Fehlern in der mysql_query() kommt..

Bsp.:
Code:
<input type="text" name="blupp" method="get">
//*kürzen*
$bla = $_GET['blupp'};
mysql_query("SELECT * FROM $bla");

Das funktioniert einwandfrei, aber
Code:
<input type="text" name="blupp" method="post">
//*kürzen*
$bla = $_POST['blupp'};
mysql_query("SELECT * FROM $bla");

endet in einem Syntax-Error....

_________________
Benutzer-Profile anzeigen Private Nachricht senden Jabber ID
[PHP] SQL-Injection bei mangelhafter Validierung
Foren-Übersicht » Internetprogrammierung
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Alle Zeiten sind GMT + 1 Stunde  
Seite 1 von 1  

  
  
 Neues Thema eröffnen  Neue Antwort erstellen  


Forensicherheit

Powered by phpBB © 2001-2004 phpBB Group
phpBB Style by Vjacheslav Trushkin
Deutsche Übersetzung von phpBB.de


remoteshell-security.com | Partner | Boardregeln | Impressum