7. SQL Injection In Different Contexts
SQL Injection In Different Contexts (JSON,XML)¶
In den bisherigen Methoden haben wir uns ausschließlich über direkte String Injections auseinandergesetzt. Apps können aber auch z. B. diversen JSON oder XML formatierte Daten in einen SQL Query umwandeln. Dort wiederum werden oft Key-Words durch WAFS oder andere defense Mechanismen geblock, aber auch da gibt es die Möglichkeit einzelne Character zu encoden um aus diesem Filter auszubrechen. z. B.
<stockCheck>
<productId>123</productId>
<storeId>999 SELECT * FROM information_schema.tables</storeId>
</stockCheck>
Lab: SQL injection with filter bypass via XML encoding¶
- Erstmal wieder auf der Seite suchen wo potentielle Schachstellen liegen können
- Haben eine potentielle Schachstelle gefunden
- Dort sehen wir es wird durch ein WAF geschützt. Also versuchen wir es zu encoden
- Wir sehen, encoding mit HACKVERTOR Extension schlägt an und versuchen zusätzlich Parameter wie UNION SELECT einzubauen. 2. SQL Injection UNION Attacks
- Nach bisschen rumprobieren sehen wir, dass folgendes anschlägt. (Bei falscher Konstellation bekommen wir nur 0 Units als Response)
- Dann schauen wir welcher Datentyp und welche Version wir haben. Wir stellen fest bei Version() und einem String haben wir Treffer
- Jetzt schauen wir welche Tabellen es gibt. (Befehle lassen sich aus dem SQL Injection Cheat-Sheet von Portswigger entnehmen)
- Das gleiche dann mit column_name
- Und jetzt können wir username und passwörter auslesen