alle dateien auf einer Seite auflisten

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

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
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

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.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

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...
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

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...
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Barabbas
User
Beiträge: 349
Registriert: Dienstag 4. März 2008, 14:47

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
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

völliger Humbug solche Scripte... verrate mir mal wie du so einen SQL-Injection und XSS Scanner basteln willst (der auch wirklich was bringt)?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

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
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Wie willst du denn Admin-Seiten ("admin.php" in deinem Beispiel) erkennen? Und was ist mit nicht-PHP-Seiten und so Zeugs?
Antworten