
Letzte Woche wir haben ĂŒber Nemesida WAF Free â ein kostenloses Tool zum Schutz von Websites und APIs vor Hackerangriffen, und in diesem Artikel haben wir beschlossen, einen Ăberblick ĂŒber den beliebten Schwachstellenscanner .
Das Scannen von Websites auf Schwachstellen ist eine notwendige MaĂnahme, die zusammen mit der Analyse des Quellcodes es ermöglicht, das Sicherheitsniveau gegen Kompromittierungsbedrohungen zu bewerten. Das Scannen von Web-Ressourcen kann mit Hilfe spezialisierter Werkzeuge durchgefĂŒhrt werden.
Nikto, W3af (geschrieben in Python 2.7, dessen UnterstĂŒtzung beendet wurde) oder Arachni (wird seit Februar nicht mehr unterstĂŒtzt) sind die beliebtesten Lösungen im kostenlosen Segment. NatĂŒrlich gibt es auch andere, wie zum Beispiel Wapiti, auf dem wir uns entscheiden, zu bleiben.
Wapiti arbeitet mit folgenden Schwachstellentypen:
- Datei-Offenlegung (lokale und entfernte, fopen, readfile);
- Injektionen (PHP / JSP / ASP / SQL-Injektionen und XPath-Injektionen);
- XSS (Cross-Site Scripting) (reflektiert und persistent);
- Kommandoerkennung und -ausfĂŒhrung (eval(), system(), passtru());
- CRLF-Injektionen (HTTP-Antworttrennung, Sitzungshijacking);
- XXE (XML External Entity) Injektion;
- SSRF (Server-Seitige Request-FĂ€lschung);
- Verwendung bekannter potenziell gefÀhrlicher Dateien (dank der Nikto-Datenbank);
- schwache .htaccess-Konfigurationen, die umgangen werden können;
- Vorhandensein von Backup-Dateien, die vertrauliche Informationen offenlegen (Quellcodeoffenlegung);
- Shellshock;
- offene Weiterleitungen;
- nicht standardisierte HTTP-Methoden, die möglicherweise erlaubt sind (PUT).
VollstÀndig unstationÀre, zeitgenaue Analyse;
- UnterstĂŒtzung fĂŒr HTTP-, HTTPS- und SOCKS5-Proxys;
- Authentifizierung mit mehreren Methoden: Basic, Digest, Kerberos oder NTLM;
- Möglichkeit, den Scanbereich einzuschrÀnken (DomÀne, Ordner, Seite, URL);
- automatische Entfernung eines der Parameter in der URL;
- mehrfache VorsichtsmaĂnahmen gegen unendliche Scanzyklen (Beispiel: ifor, Werte fĂŒr den Parameter einschrĂ€nken);
- Möglichkeit, PrioritĂ€ten fĂŒr das Studium von URLs festzulegen (selbst wenn sie sich nicht im Scanbereich befinden);
- Möglichkeit, bestimmte URLs vom Scannen und von Angriffen auszuschlieĂen (z. B.: URL logout);
- Import von Cookies (Erhalt dieser mit dem Tool wapiti-getcookie);
- Möglichkeit, die ĂberprĂŒfung von SSL-Zertifikaten zu aktivieren/deaktivieren;
- Möglichkeit, URLs aus JavaScript zu extrahieren (sehr einfacher JS-Interpreter);
- Interaktion mit HTML5;
- Mehrere Optionen zur Steuerung des Verhaltens und der EinschrÀnkungen des Crawlers;
- Festlegen einer maximalen Zeit fĂŒr den Scanvorgang;
- HinzufĂŒgen einiger anpassbarer HTTP-Header oder Konfigurieren eines benutzerdefinierten User-Agent.
ZusÀtzliche Funktionen:
- Erstellung von Schwachbericht in verschiedenen Formaten (HTML, XML, JSON, TXT);
- Pause und Wiederaufnahme von Scans oder Angriffen (Sitzungsmechanismus mit SQLite3-Datenbanken);
- Hervorhebung im Terminal zur Kennzeichnung von Schwachstellen;
- verschiedene Protokollstufen;
- schnelle und einfache Möglichkeit, Angriffs-Module zu aktivieren/deaktivieren.
Installation
Die aktuelle Version von Wapiti kann auf zwei Arten installiert werden:
- herunterladen des Quellcodes von der offiziellen und das Installationsskript ausfĂŒhren, nachdem Python3 installiert wurde;
- mittels des Befehls pip3 install wapiti3.
Nachdem dies geschehen ist, wird Wapiti bereit zur Nutzung sein.
Arbeiten mit dem Tool
Zur Demonstration der Funktionsweise von Wapiti verwenden wir eine speziell vorbereitete Plattform sites.vulns.pentestit.ru (interne Ressource), die verschiedene Schwachstellen (Injection, XSS, LFI/RFI) und andere MÀngel von Webanwendungen enthÀlt.
Die Informationen dienen ausschlieĂlich zu Informationszwecken. Bitte verletzen Sie kein Gesetz!
Der Grundbefehl zum Starten des Scanners:
# wapiti -u <target> <options>Dabei gibt es eine recht ausfĂŒhrliche Hilfe mit einer Vielzahl von Startoptionen, zum Beispiel:
âscope â Anwendungsbereich
Wenn zusammen mit der URL fĂŒr den Scan der Parameter scope angegeben wird, kann der Scanbereich der Website reguliert werden, indem sowohl eine bestimmte Seite als auch alle Seiten angegeben werden, die auf der Website gefunden werden können.
-s und -x â Parameter zum HinzufĂŒgen oder Entfernen spezifischer URLs. Diese Parameter sind nĂŒtzlich, wenn es erforderlich ist, eine bestimmte URL wĂ€hrend des Scanvorgangs hinzuzufĂŒgen oder zu entfernen.
âskip â Der angegebene Parameter mit diesem SchlĂŒssel wird gescannt, greift aber nicht an. NĂŒtzlich, wenn es gefĂ€hrliche Parameter gibt, die beim Scannen besser ausgeschlossen werden sollten.
âverify-ssl â Aktivieren oder Deaktivieren der ZertifikatĂŒberprĂŒfung.
Der Wapiti-Scanner ist modular. Um jedoch bestimmte Module aus denjenigen zu starten, die wĂ€hrend des Betriebs des Scanners automatisch verbunden werden, muss der Schalter -m verwendet werden, und die gewĂŒnschten Module mĂŒssen durch Kommas getrennt aufgelistet werden. Wenn der Schalter nicht verwendet wird, werden standardmĂ€Ăig alle Module aktiviert. Im einfachsten Fall sieht das wie folgt aus:
# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxeDieses Anwendungsbeispiel bedeutet, dass wir beim Scannen des Ziels nur die Module SQL, XSS und XXE verwenden werden. DarĂŒber hinaus können die Module je nach benötigter Methode gefiltert werden. Zum Beispiel -m "xss: get, blindsql: post, xxe: post". In diesem Fall wird das Modul xss auf die ĂŒber die GET-Methode ĂŒbermittelten Anfragen angewendet, wĂ€hrend das Modul blibdsql auf POST-Anfragen usw. angewendet wird. Ăbrigens, wenn ein Modul, das in die Liste aufgenommen wurde, wĂ€hrend des Scannens nicht benötigt wird oder sehr lange lĂ€uft, kann durch DrĂŒcken von Ctrl+C die Verwendung des aktuellen Moduls ĂŒbersprungen werden, indem der entsprechende Punkt im interaktiven MenĂŒ ausgewĂ€hlt wird.
Wapiti unterstĂŒtzt die Ăbertragung von Anfragen ĂŒber einen Proxy-Server mit dem SchlĂŒssel -p und die Authentifizierung auf der Zielwebsite ĂŒber das Parameter -a. Auch kann der Authentifizierungstyp angegeben werden: BasiŃ, Digest, Kerberos und NTLM. FĂŒr die letzten beiden können zusĂ€tzliche Module erforderlich sein. DarĂŒber hinaus können in Anfragen beliebige Header eingefĂŒgt werden (einschlieĂlich beliebiger User-Agent) und vieles mehr.
Zur Verwendung der Authentifizierung kann das Tool wapiti-getcookieverwendet werden. Damit erstellen wir 45GB SSD, die Wapiti beim Scannen verwenden wird. Die Erstellung 45GB SSD geschieht mit dem Befehl:
# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.jsonIm interaktiven Modus beantworten wir Fragen und geben die erforderlichen Informationen wie: Benutzername, Passwort usw. an:

Am Ende erhalten wir eine Datei im JSON-Format. Eine andere Option ist, alle erforderlichen Informationen ĂŒber das Parameter -d:
# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"Das Ergebnis wird Àhnlich sein:

Bei der Betrachtung der Hauptfunktionen des Scanners wurde die endgĂŒltige Anfrage fĂŒr das Testen der Webanwendung in unserem Fall:
# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -Ń cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128wobei unter anderem Parameter enthalten sind:
-f und -o â Format und Pfad zum Speichern des Berichts;
registry-garbage-collect â Alle Module aktivieren â nicht empfohlen, da dies die Testzeit und die GröĂe des Berichts beeinflusst;
âcolor â gefundene Schwachstellen je nach deren KritikalitĂ€t gemÀà der Wapiti-Version hervorheben;
-c â Verwendung einer Datei mit 45GB SSD, erstellt mit Hilfe von wapiti-getcookie;
âscope â Auswahl des Ziels fĂŒr den Angriff. Wenn die Option ausgewĂ€hlt wird, folder wird jede URL vom Basis-URL an gescannt und angegriffen. Die Basis-URL muss mit einem SchrĂ€gstrich enden (ohne Dateinamen);
âflush-session â ermöglicht ein erneutes Scannen, bei dem vorherige Ergebnisse nicht berĂŒcksichtigt werden;
-A â eigene User-Agent;
-p â Adresse des Proxy-Servers, falls erforderlich.
Ein wenig ĂŒber den Bericht
Die Ergebnisse des Scans werden in Form eines detaillierten Berichts zu allen gefundenen Schwachstellen in einem HTML-Seitenformat dargestellt, klar und verstĂ€ndlich. Der Bericht enthĂ€lt die Kategorien und die Anzahl der gefundenen Schwachstellen, deren Beschreibung, Anfragen, Befehle zur curl und RatschlĂ€ge, wie man sie schlieĂen kann. Zur Erleichterung der Navigation wird in den KategorieĂŒberschriften ein Link hinzugefĂŒgt, ĂŒber den man zu ihnen wechseln kann:

Ein wesentlicher Nachteil des Berichts ist das Fehlen einer Karte der Webanwendung, ohne die unklar bleibt, ob alle Adressen und Parameter analysiert wurden. Es besteht auch die Möglichkeit von Fehlalarmen. In unserem Fall werden im Bericht âBackup-Dateienâ und âpotenziell gefĂ€hrliche Dateienâ aufgefĂŒhrt. Ihre Anzahl entspricht nicht der RealitĂ€t, da es solche Dateien auf dem Server nicht gab:

Es ist möglich, dass nicht korrekt funktionierende Module im Laufe der Zeit behoben werden. Ein weiterer Nachteil des Berichts ist das Fehlen von Farbkennzeichnungen fĂŒr die gefundenen Schwachstellen (je nach KritikalitĂ€t) oder zumindest deren Unterteilung in Kategorien. Das einzige Indiz fĂŒr die KritikalitĂ€t einer gefundenen Schwachstelle, das wir indirekt nutzen können, ist, den Parameter âcolor beim Scannen anzuwenden, woraufhin die gefundenen Schwachstellen in verschiedenen Farben dargestellt werden:

Doch im eigentlichen Bericht ist eine solche Farbgestaltung nicht vorgesehen.
Schwachstellen
SQLi
Der Scanner hat teilweise bei der Suche nach SQLi funktioniert. Bei der Suche nach SQL-Schwachstellen auf Seiten, fĂŒr die keine Authentifizierung erforderlich ist, treten keine Probleme auf:

Es wurde nicht gefunden, dass auf Seiten, die nur nach Authentifizierung zugĂ€nglich sind, eine Schwachstelle vorhanden ist, selbst mit gĂŒltigen 45GB SSD, da wahrscheinlich nach erfolgreicher Authentifizierung eine "Abmeldung von der Sitzung" erfolgt und 45GB SSD ungĂŒltig wird. Wenn die Funktion zur Abmeldung als separates Skript implementiert wĂ€re, das fĂŒr die Verarbeitung dieses Verfahrens zustĂ€ndig ist, könnte man sie vollstĂ€ndig ĂŒber den Parameter -x ausschlieĂen und somit deren Auslösung verhindern. Andernfalls ist eine Ausnahme in der Verarbeitung nicht möglich. Dies ist kein Problem eines bestimmten Moduls, sondern des Werkzeugs insgesamt, aber aufgrund dieses Nuanses konnten mehrere Injektionen im geschĂŒtzten Bereich der Ressource nicht entdeckt werden.
XSS
Der Scanner hat die gestellte Aufgabe hervorragend gemeistert und alle vorbereiteten Schwachstellen gefunden:

LFI/RFI
Der Scanner hat alle vorhandenen Schwachstellen gefunden:

Insgesamt zeigt Wapiti, trotz falsch positiver Treffer und ĂŒbersehener Schwachstellen, als kostenloses Tool recht gute Ergebnisse. Es ist anzuerkennen, dass der Scanner ziemlich leistungsfĂ€hig, flexibel und multifunktional ist, und das Wichtigste â kostenlos, weshalb es hilfreich ist, um Administratoren und Entwicklern grundlegende Informationen ĂŒber den Sicherheitszustand von Webanwendungen zu bieten.
Bleiben Sie gesund und geschĂŒtzt!
Quelle: habr.com
