Wie scanne / fuzz ich meinen Code für Schwachstellen?

8

Ich bin auf der Suche nach einem automatisierten Weg, um meine App zu verwischen oder nach Sicherheitslücken zu durchsuchen. Bitte gehen Sie davon aus, dass mein Hacking-Wissen 0 ist. Auch die Quelle ist auf meinem localhost, also brauche ich eine Möglichkeit, lokal zu fuzzieren, ohne auf eine Internetverbindung angewiesen zu sein. Können mir einige Sicherheitsexperten Tipps oder Empfehlungen geben? Ich bin mir nicht sicher, welche Optionen am besten sind.

Bearbeiten:

Danke für die Mühe, zu antworten, aber bisher scheint keiner den Punkt zu verstehen. Ich würde gerne genauer sein (weil es der Frage hilft), aber ohne Meinungen zu beeinflussen oder wie ich zu klingen mache Werbung für ein bestimmtes Produkt. Ich suche nach etwas wie wapiti (Entschuldigung, Namen zu nennen, aber musste, weil Antworten so weit über sql Injektionen, xss lernen usw. sind natürlich keine wirklichen "Experten" -Antworten auf diese Frage, die ich bereits kenne ( Ernst, hört sich diese Frage so an, als könnte sie von jemandem gestellt werden, der Salz nicht über Sicherheit kennt? )

Ich frage nicht ob ich testen sollte, ich frage wie ich testen sollte. Ich habe bereits entschieden , die Automatisierung zu integrieren (und es gibt in dieser Entscheidung kein Zurück mehr, es sei denn, jemand gibt mir eine Expertenantwort, die beweist, dass sie nutzlos ist). Bitte respektiere meine Entscheidung, die ich automatisieren möchte. Ich möchte nicht jede kompilierte Hackerliste von xss, sql injection, usw. durchgehen und sie manuell gegen meine Seite ausprobieren (selbst Hacker hacken nicht so) . Super extra Punkte für jeden, der die Frage bekommt.

Manche Leute fragen, warum man nicht einfach lernt. Best Practices (die ich kenne) sind nicht dasselbe wie Hacking zu kennen. Manche Leute wollen argumentieren, dass sie eine Flip-Münze sind, aber ich stimme definitiv nicht zu :) Daher brauche ich ein Schutz-Tool von jemandem mit der "Hacker-Mentalität". Wie wird das schaden, in der Tat sollten Sie es auch versuchen;) Experten-Antworten bitte von denen, die wissen.

    
Chris 20.10.2009, 18:26
quelle

8 Antworten

7

Es gibt Dienste , die automatisierte Scans auf Schwachstellen durchführen. Sie werden nicht alles erfassen, sondern helfen Ihnen, Probleme zu erkennen. Ihre beste Wette ist es, einen dieser Dienste zu nutzen und bewährte Praktiken zu lernen.

Fange an, etwas über sql injection und Cross-Site-Scripting . Dies sind die größten und leichtesten Sicherheitslücken.

Defensive Programmierung ist eine Fähigkeit, die IMHO jeder Programmierer lernen sollte.

Es gibt keinen Ersatz für das Verständnis dieser Probleme auf eigene Faust.

    
Byron Whitlock 20.10.2009 18:40
quelle
3

Um Ihre Frage genau zu beantworten, sollten Sie ein Tool verwenden. Es gibt zwei Haupttypen von Tools, die Sie verwenden können: einen Sicherheitsscanner, der aktiv eine laufende Website testet, oder ein statisches Analysetool, das auf dem Quellcode basiert, den Sie zum Erstellen Ihrer Webanwendung verwenden.

Die kurze Antwort ist, dass Sie ein Sicherheitsscanner wie Wapiti oder Rülpser wollen. Mit Tools wie diesen werden Sicherheitstests dynamisch für Ihre Site erstellt und ausgeführt. Sie könnten manuell versuchen, Ihre eigene Site auszunutzen, aber das würde viel Zeit in Anspruch nehmen und keinen Wert liefern. Es wäre für Sie nutzlos, eine Liste bekannter XSS- oder SQL-Injection-Probleme durchzugehen, da jedes Problem für die betreffende Site eindeutig ist. Außerdem können diese Tools Ihre Website besser angreifen, als Sie einen strengeren Sicherheitsstresstest durchführen können.

Es gibt zwei Hauptwerkzeuge, die Sie verwenden können, statische Analysewerkzeuge und dynamische Analysewerkzeuge. Statische Analysewerkzeuge lesen Ihren Quellcode ein, ermitteln die Art, wie die Daten durch die App fließen und suchen nach Sicherheitsproblemen. Im Grunde genommen sind die meisten Sicherheitsprobleme, die es einem Benutzer erlauben, einige Daten zu kontrollieren, die in einen ungeeigneten Teil einer Anwendung fließen, obwohl die App nicht läuft und Sie sich gegen das Halteproblem, die statische Analysemethode des Ratens und Probierens wehren Aus jedem Codepfad können gute Ergebnisse erzielt werden. Statische Analysewerkzeuge sind sprachabhängig und die meisten sind teuer. Einige freie sind fxcop (C #), PMD und findbugs (java), siehe Ссылка

Dynamische Analyse-Tools (üblicherweise nur "Sicherheitsscanner" genannt) erfordern, dass Sie Ihre Webanwendung so einrichten, dass Tests ausgeführt werden können. Das klingt mehr nach Ihren Wünschen. Mein Lieblingswerkzeug hier ist Rülpsen, einige kostenlose Wapiti, die auch gut ist. Diese Tools untersuchen, wie Ihre App Daten verarbeitet, nach Eingaben sucht und diese mit schädlichen Daten füllt, um Schwachstellen auszulösen. Ein Beispieltest wäre das Testen von Cross-Site-Scripting, der Scanner würde eine Seite betrachten und JavaScript in jeden Querystring-Wert, Cookie-Wert, Formularwert usw. einfügen und dann die Seite rendern, um zu sehen, ob das bösartige JavaScript zurück in die Seite.

Sie brauchen oder wollen wahrscheinlich keinen Fuzzer. Fuzzing-Tools helfen Ihnen meistens, wenn es viel Parsing-Code gibt, so dass ein Fuzzer nicht die beste Lösung für eine Webanwendung ist, während er für ein Protokoll, das Sie erstellen, gut geeignet ist. Es gibt begrenzte Fuzzing-Funktionen in den Sicherheits-Scanner-Tools, die oben aufgeführt sind, und Sie brauchen wahrscheinlich nicht mehr als das. Fuzzers brauchen auch Zeit, um zu bauen. Fuzzers finden oft mehr Sachen in c / c ++ - Code, da weniger Bibliotheken eingebaut sind, die das Richtige tun, im Webapp-Fall gibt es weniger "Platz für Fuzzers zum Spielen".

    
Collin 20.10.2009 23:32
quelle
0

Bevor Sie sich für Automatisierung entscheiden (was wahrscheinlich zu Ergebnissen führt, die Sie wahrscheinlich nicht verstehen werden), schlage ich vor, dass Sie stattdessen das Schreiben von Sicherheitscode lesen und lernen, die Dinge zu identifizieren, die Sie falsch machen. Hier sind einige Tutorials, mit denen Sie beginnen können:

Ссылка

Wenn das nicht möglich ist, würde ich vorschlagen, Ihren Code an eine Sicherheitsfirma auszulagern, wenn Sie es sich leisten können.

Viel Glück!

    
Kevin Peno 20.10.2009 18:41
quelle
0

Vorausgesetzt, Sie kennen C, können Sie mit spike arbeiten, Es ist immer gut, eine manuelle Überprüfung auf Überläufe in allem zu machen, das möglicherweise von einem Endbenutzer berührt werden könnte. Die üblichen% x% x% x Tests für Formatstring-Angriffe und nur um in deiner statischen Analyse fleißig zu sein.

PeachFuzz und SPIKE sind beide gut dokumentiert.

Wenn das nicht gelingt, ist es trivial, selbst zu schreiben.

    
Zephyr Pellerin 20.10.2009 19:02
quelle
0

Zu wissen, was fuzzing ist und wie Sie sich nähern möchten, führt nicht notwendigerweise zu den Fähigkeiten, die notwendig sind, um Ihre Software gründlich auf Schwachstellen und Fehler zu testen und zu bewerten. Sie müssen automatisiertes Testen verwenden, aber in einer abgestimmten Weise, in der Sie die Tests ändern, die das Tool ausführt, wenn Sie neue Eingabepfade, Interaktionen usw. finden.

Grundsätzlich sage ich, dass Sie wissen müssen, was Sie tun, wenn Sie möchten, dass dies ein echter Mehrwert ist. Sie können nicht einfach ein Werkzeug auswählen, es ausführen und erwarten, dass Sie gute Ergebnisse erzielen. Sie benötigen jemanden, der diese Art von Tests durchführt, um entweder mit oder für Sie zu arbeiten. Tools sind nützlich, können aber nur nützliche Ergebnisse liefern, wenn sie von einem Fachmann verwendet werden.

    
jeffsix 26.10.2009 23:44
quelle
0

Ich habe Paros - Ссылка verwendet - es ist kostenlos, einfach zu bedienen und zeigt sowohl die Ursache des Fehlers als auch die mögliche Behebung an und wie man es repliziert (normalerweise ein Link).

Es ist einfach zu konfigurieren und spiders Ihre gesamte Website - es kann auch spinnen lokale Installationen.

Es hat auch eine GUI.

Es ist alt, aber es ist gut und einfach.

Ich habe versucht, WAPITI zu konfigurieren, aber es war einfach zu schwer für mich.

    
bagnap 30.07.2012 17:36
quelle
0

Ich habe dieses Thema viele Jahre lang für meine eigene Anwendung recherchiert und kürzlich ein fantastisches Tool gefunden, das auf PAROS basiert (siehe meine andere Antwort oben).

Es ist ZAP von OWASP und ist die Enten Nüsse.

Eines der besten Dinge, die Sie tun können, ist die Integration von ZAP in Ihre Projektautomatisierung / Build. Wenn Sie also einen Build erstellen, wird der Test ausgeführt.

Noch besser, Sie können es neben Ihren automatisierten Selen-Tests ablegen, um die von Ihnen getesteten Seiten zu "sammeln", dann ... scannen Sie sie aus!

Es ist wirklich gut dokumentiert, aber Sie werden einen schnellen PC brauchen, da er Hunderte von Tests pro Seite ausführt. Wenn Sie eine ganze Site erstellen, kann es etwas dauern.

Es gibt einige andere Tools, die Sie vielleicht in Erwägung ziehen sollten

Ich fand dieses Tool ... scary einfach zu bedienen und sehr, sehr umfassend.

Immer wenn ich bekam, was ich dachte, war ein "falsches positives" mit ZAP, würde ich die Seite mit SQLmap scannen (Sie müssen herausfinden, wie man Python verwendet - es ist einfach, dauerte ein paar Stunden) und SQLmap würde entweder verifizieren das falsche Positive oder finde die Schwachstelle.

    
bagnap 13.09.2012 20:07
quelle
0

Wenn Sie einen WAMP-Stack (im Gegensatz zu LAMP) ausführen und Zugriff auf den PHP-Code haben, sollten Sie sich PHP Vulnerability Hunter anschauen ( Ссылка ).

    
Heather Herbert 02.07.2013 21:03
quelle

Tags und Links