-> Hier kostenlos registrieren
Guten Tag alle zusammen.
Ich habe mich in den letzten Tagen mit dem Thema SQL-Injektion bei Produktionsanlagen auseinandergesetzt und wollte euch hier meine Ergebnisse mitteilen, da ich dieses Thema für wichtig halte und hier noch nichts dazu gefunden habe.
Das Ganze wurde an einem Testaufbau ausprobiert.
Bitte schreibt mir, wenn etwas nicht passt oder fehlt.
Etwas genauer ist das Ganze im Artikel von Microsoft beschrieben.
Was ist eine SQL-Injektion? (Beispiel)
Wenn Daten von einem SQL-Server abgefragt oder gespeichert werden sollen, werden dafür bestimmte SQL-Befehle genutzt.
In diesem Beispiel werden drei Werte (Strings) in die Tabelle Material eingetragen.
Bei einer SQL-Injektion wird eine Variable eines SQL-Befehls so manipuliert, dass der eigentliche Befehl verändert oder eine zweiter angehangen wird.
Wenn der String 'MaterialBeschreibung' diesen Inhalt hat,
würde der ganze SQL-Befehl so aussehen:
Der erste Befehl ist somit gültig.
Nach dem Semikolon wird dann allerdings der zweite Befehl ausgeführt.
Dies würde die Tabelle löschen. Dafür muss der Angreifer aber den Tabellennamen kennen oder Glück beim Raten haben.
Mit den beiden Minuszeichen wird der Rest als Kommentar markiert.
Wo ist diese Schwachstelle nutzbar?
Die Schwachstelle ist dort nutzbar, wo Strings von außen in die Anlage gelangen und von dort in eine SQL-Datenbank geschrieben werden.
Das können z. B. Eingabefelder für Benutzer am Panel, Barcode Lesegeräte oder RFID Lesegeräte sein.
Beispiel: Material wird angeliefert und der Barcode an der Anlage mit einem Lesegerät gescannt. Jeder in der Lieferkette könnte den Barcode austauschen.
Wie kann die Ausnutzung verhindert werden?
Tabellen besser nicht Material nenne.
Länge der Strings auf die notwendige Größe reduzieren.
Wenn die Zeichen ; und ‘ entfernt werden, würde der Befehl einen Syntaxfehler erzeugen und somit nicht ausgeführt.
Mehr im Artikel von Microsoft.
Testaufbau und Quellen
Für den Testaufbau wurde eine S7 1511 und ein Microsoft SQL-Server genutzt.
Kommunikation S7 SQL-Server:
support.industry.siemens.com
Artikel von Microsoft zu diesem Thema:
Ich habe mich in den letzten Tagen mit dem Thema SQL-Injektion bei Produktionsanlagen auseinandergesetzt und wollte euch hier meine Ergebnisse mitteilen, da ich dieses Thema für wichtig halte und hier noch nichts dazu gefunden habe.
Das Ganze wurde an einem Testaufbau ausprobiert.
Bitte schreibt mir, wenn etwas nicht passt oder fehlt.
Etwas genauer ist das Ganze im Artikel von Microsoft beschrieben.
Was ist eine SQL-Injektion? (Beispiel)
Wenn Daten von einem SQL-Server abgefragt oder gespeichert werden sollen, werden dafür bestimmte SQL-Befehle genutzt.
In diesem Beispiel werden drei Werte (Strings) in die Tabelle Material eingetragen.
SQL:
insert into Material values ('MaterialID','MaterialAnzahl','MaterialBeschreibung')
Bei einer SQL-Injektion wird eine Variable eines SQL-Befehls so manipuliert, dass der eigentliche Befehl verändert oder eine zweiter angehangen wird.
Wenn der String 'MaterialBeschreibung' diesen Inhalt hat,
SQL:
x');drop table Material --
würde der ganze SQL-Befehl so aussehen:
SQL:
insert into Material values ('MaterialID','MaterialAnzahl','x');drop table Material --')
Der erste Befehl ist somit gültig.
SQL:
insert into Material values ('MaterialID','MaterialAnzahl','x')
Nach dem Semikolon wird dann allerdings der zweite Befehl ausgeführt.
SQL:
drop table Material
Mit den beiden Minuszeichen wird der Rest als Kommentar markiert.
SQL:
--')
Wo ist diese Schwachstelle nutzbar?
Die Schwachstelle ist dort nutzbar, wo Strings von außen in die Anlage gelangen und von dort in eine SQL-Datenbank geschrieben werden.
Das können z. B. Eingabefelder für Benutzer am Panel, Barcode Lesegeräte oder RFID Lesegeräte sein.
Beispiel: Material wird angeliefert und der Barcode an der Anlage mit einem Lesegerät gescannt. Jeder in der Lieferkette könnte den Barcode austauschen.
Wie kann die Ausnutzung verhindert werden?
Tabellen besser nicht Material nenne.
Länge der Strings auf die notwendige Größe reduzieren.
Wenn die Zeichen ; und ‘ entfernt werden, würde der Befehl einen Syntaxfehler erzeugen und somit nicht ausgeführt.
Mehr im Artikel von Microsoft.
Testaufbau und Quellen
Für den Testaufbau wurde eine S7 1511 und ein Microsoft SQL-Server genutzt.
Kommunikation S7 SQL-Server:
SIOS
Artikel von Microsoft zu diesem Thema:

Einschleusung von SQL-Befehlen - SQL Server
Hier erfahren Sie, wie Angriffe durch Einschleusung von SQL-Befehlen funktionieren. Schützen Sie sich vor solchen Angriffen, indem Sie Eingaben validieren und Code für die Einschleusung von SQL-Befehlen in SQL Server überprüfen.
docs.microsoft.com