Seite 1 von 1

alle dateien auf einer Seite auflisten

Verfasst: Samstag 25. April 2009, 17:02
von INFACT
Sehr geehrtes Python Forum,

ich bin dabei einen Sicherheitsscanner für Webseiten zu entwickeln.
Ich habe schon etwas für SQLinjections.
Jetzt versuche ich dasselbe für XSS.
Dafür möchte ich alle dateien von der Domain auflisten.
Bsp:

Code: Alles auswählen

>>> listurldirs("http://example.de")
["lalalal.jpg", "search.php", "posting", "posting\post.php", "posting\searchposts.html"]
Gibt es eine Möglichkeit, das zu realisieren oder muss man BruteForce einsetzen?

MfG INFACT

Verfasst: Samstag 25. April 2009, 19:31
von Dauerbaustelle

Code: Alles auswählen

In[14]: re.findall('([^ ].+?\.(txt|mp3))', """hallo.mp3 laber peng.txt blubb test.blah""")
Out[14]: [('hallo.mp3', 'mp3'), ('laber peng.txt', 'txt')
die liste von Extensions musst du selber suchen ;)

Edit: sehe grade, dass das nicht tut.

Verfasst: Samstag 25. April 2009, 19:34
von Dauerbaustelle

Code: Alles auswählen

re.findall('([^ .]+?\.(txt|mp3))', """hallo.mp3 laber peng.txt blubb test.blah""")
Jetzt aber. Dateien mit Whitespace kann man nicht matchen. Ist leider technisch gesehen praktisch unmöglich...

Verfasst: Samstag 25. April 2009, 19:42
von derdon

Verfasst: Samstag 25. April 2009, 21:38
von INFACT
Entschuldigung, wenn ich jetzt ein brett vor dem kopf habe, aber das bringt mir doch nur wenn die dateien auf meinem PC.
Wie kann ich denn alle dateien auf der domain auflisten

Code: Alles auswählen

>>> os.listdir("194.94.124.32")

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    os.listdir("194.94.124.32")
WindowsError: [Error 2] Das System kann den angegebenen Pfad nicht finden: '194.94.124.32/*.*'
klappt ja nicht...

Verfasst: Samstag 25. April 2009, 21:47
von Barabbas
Für fremde Domains würde ich mal sagen: Entweder durch aktiviertes Verzeichnislisting oder durch FTP Zugang - beides dürfte wohl eher unwahrscheinlich sein.

Brute Force ist natürlich völlig unrealistisch, dann schon eher ein rekursives Parsen aller Dateien ausgehend von index.htm, index.html und / oder index.pp.
Eine weitere Möglichkeit wäre - theoretisch - die Erkennung der verwendeten Software (phpBB, joomla, wordpress...) und das Bereithalten der zu der entsprechenden Software gehörigen Dateistruktur. Das wäre aber - wahrscheinlich - Unsinn, weil man gerade so bekannte und frei verfügbare Software auch bei sich lokal testen könnte.

Mein Vorschlag lautet also: parsen. Allgemein kann ich mir aber schwer vorstellen, dass du jetzt so aus dem Handgelenk einen Scanner für XSS und Injections schütteln kannst. (nichts für ungut)?!

lG

Daniel

Verfasst: Sonntag 26. April 2009, 02:02
von nemomuk
völliger Humbug solche Scripte... verrate mir mal wie du so einen SQL-Injection und XSS Scanner basteln willst (der auch wirklich was bringt)?

Verfasst: Sonntag 26. April 2009, 08:36
von sma
Die Frage nach einem allgemein unmöglichen Weg, alle URLs (nicht Dateien) einer Domain aufzuzählen, lässt mich doch sehr zweifeln, dass INFACT der selbstgestellten Aufgabe gewachsen ist. Denn ich habe auch meine Zweifel, dass man "von außen" erkennen können soll, ob eine Webanwendung anfällig für SQL-Injection ist. Was will man machen? Formulare in HTML-Quelltexten finden und versuchen, sie mit SQL-Befehlen zu spicken? Wie will man automatisch an der Validierung vorbeikommen? Wie will man automatisch die richtigen Tabellennamen für eine Webanwendung kennen?

Bestenfalls hat das doch nur eine geringe Chance auf Erfolg, wenn man genau weiß, was da serverseitig für eine Anwendung läuft, etwa phpBB X.Y mit codeBB 1.1 mit einer kaputten last24.php-Funktion und daraus jetzt bekannte Lücken schlussfolgert.

Aber um die Frage zu beantworten: Alle URLs einer Domain aufzuzählen ist prinzipiell unmöglich. Was man versuchen kann, von einer HTML-Seite einer bekannten Start-URL systematisch allen Links auf weitere URLs folgen und dort auch die HTML-Seiten zu untersuchen.

Stefan

Verfasst: Sonntag 26. April 2009, 09:06
von INFACT
villeicht bin ich nicht dieser aufgebe gewachsen, ich werde jedoch solange daran bauen, bis es (wenigstens halbwegs) funktioniert:!:

Ich werde mich mal durch webseiten forsten und die wichtigsten seiten/pfade heraussuchen (posing.php, admin,...)

Trotzdem nochmal danke für eure hilfe.
Jetzt weiß ich wenigstens, dass es nicht so einfach funktioniert.
Aber schließlich hat auch html seine grenzen :wink:

MfG INFACT

Verfasst: Sonntag 26. April 2009, 16:49
von Dauerbaustelle
Wie willst du denn Admin-Seiten ("admin.php" in deinem Beispiel) erkennen? Und was ist mit nicht-PHP-Seiten und so Zeugs?