Einen Großteil "Lücken" die durch das pentesting gefunden werden erfordern keine großen Kenntnisse einer Programmiersprache da diese Lücken eher Konfigurationsfehler sind als Programmierfehler. Das kann ein öffentlich beschreibbarer S3 bucket sein oder Credentials in einem öffentlichen git.
Dann gibt es die "Lücken" die bekannt sind aber nicht gepatcht wurden. Auch dafür braucht man keinerlei Programmierkenntnisse sondern ein vulnerability scanner der deine Systeme scannt und dir meldet welche Software welche bekannten Lücken hat. Kennt man die lücken, kann an github und andere Quellen nach einem PoC durchforsten.
Die nächsthäufigste Art neue Lücken zu finden ist fuzzing. Da wirft man dank höchster Parallelisierung und Automatisierung alle möglichen Arten von inputs gegen Programme und deren Funktionen und vergleicht dies mit dem zu erwartenden Ergebnis. Weicht dieses ab, kann man dann entweder in den Code schauen sofern er vorliegt oder muss per reverse engineering heraus finden, wie dieser arbeitet um ihm dann ausnutzen zu können.
Dafür muss man die Grundlagen der Programmierung beherrschen und verinnerlicht haben sowie ein paar Infos wie z.B. tcp arbeitet, wie Datenbanken funktionieren etc.
Ich ich dieses testen und reverse engineeren per python oder go oder java oder sonst einer Sprache mache hängt davon ab was und welche Software ich untersuchen möchte.
Wenn du im Bereich Lücken finden und PoCs dazu lernen willst schau dir Codeanalysen bestehender PoCs an oder andere Audits wo Best Practices besprochen werden und überlege dir dann welche davon Devs aufgrund von Unwissen oder aufgrund von "Druck von oben" nicht umgesetzt haben könnten.
Grundlegend kann man sich da auch an der OWASP Top 10 orientieren.
Ein meiner Meinung nach gutes praktisches und aktuelles Beispiel sind die Analysen von Alvar Freude zum Code der corona-app die SAP und die Telekom entwickeln: https://twitter.com/alvar_f/status/1267705319280586753
Edit/Nachtrag:
Mein Highlight sind da immer HP Drucker wo die Kisten bei zu vielen Tests parallel oder bei bestimmten Firmwares die eine Seite drucken mit kryptischen Zeichen und dazwischen irgendwo in Großbuchstaben das Wort "HELP".
Dann gibt es die "Lücken" die bekannt sind aber nicht gepatcht wurden. Auch dafür braucht man keinerlei Programmierkenntnisse sondern ein vulnerability scanner der deine Systeme scannt und dir meldet welche Software welche bekannten Lücken hat. Kennt man die lücken, kann an github und andere Quellen nach einem PoC durchforsten.
Die nächsthäufigste Art neue Lücken zu finden ist fuzzing. Da wirft man dank höchster Parallelisierung und Automatisierung alle möglichen Arten von inputs gegen Programme und deren Funktionen und vergleicht dies mit dem zu erwartenden Ergebnis. Weicht dieses ab, kann man dann entweder in den Code schauen sofern er vorliegt oder muss per reverse engineering heraus finden, wie dieser arbeitet um ihm dann ausnutzen zu können.
Dafür muss man die Grundlagen der Programmierung beherrschen und verinnerlicht haben sowie ein paar Infos wie z.B. tcp arbeitet, wie Datenbanken funktionieren etc.
Ich ich dieses testen und reverse engineeren per python oder go oder java oder sonst einer Sprache mache hängt davon ab was und welche Software ich untersuchen möchte.
Wenn du im Bereich Lücken finden und PoCs dazu lernen willst schau dir Codeanalysen bestehender PoCs an oder andere Audits wo Best Practices besprochen werden und überlege dir dann welche davon Devs aufgrund von Unwissen oder aufgrund von "Druck von oben" nicht umgesetzt haben könnten.
Grundlegend kann man sich da auch an der OWASP Top 10 orientieren.
Ein meiner Meinung nach gutes praktisches und aktuelles Beispiel sind die Analysen von Alvar Freude zum Code der corona-app die SAP und die Telekom entwickeln: https://twitter.com/alvar_f/status/1267705319280586753
Edit/Nachtrag:
Greenbone bzw. der open source Part openvas ist tollMerle schrieb:Greenbone habe ich öfter „erlebt“
Zuletzt bearbeitet: