# Website auf Sicherheitsmängel untersuchen



## Crysis nerd (17. Juni 2011)

*Website auf Sicherheitsmängel untersuchen*

Ich suche gerade Informationen darüber, wie man eine Homepage gut aus Sicherheitsmängel untersuchen kann. Ich bin im Bereich Hacken sogut wie 0 erfahren, daher ist es für mich schwer nachzuvollziehen wo gängige Sicherheitslücken sind.
Es gibt ja genügend "legale Hacker", die bei Sicherheitsfirmen etc. arbeiten um dort Mängel aufzudecken.

Also:
1. Ist das schwer, selber sich ein paar Techniken anzueigenen um seine eigene Homepage zu checken?
wenn ja
2. Gibt es "viele" Menschen, die das beherschen und wie viel Aufwand ist das? 

Denn wir (ein Freund und ich) wollen unser Werk gerne ein wenig absichern, uns fehlen aber die schon oben genannten Hack Fähigkeiten. Es ist allerdings ein Hobbyprojekt daher wollen wir eigentlich nichts dafür ausgeben (schon alleine weil man für lau sichere CMS´s kriegt). Aber mich würde echt mal interessieren was so ein Job kosten würde bzw ob das recht schnell geht, dass man das durchaus mal aus Spaß machen könnte 
Oder ob irgendjemand hier schon Erfahrungen damit gemacht hat.

mfg
Lukas


----------



## bingo88 (18. Juni 2011)

*AW: Website auf Sicherheitsmängel untersuchen*

Ich bin was Websites angeht jetzt nicht so fit, aber die "Klassiker" kann man sicher mal abgrasen: SQL Injection, XSS, XSRF.

SQL Injection:
Bei einer SQL Injection wird versucht, SQL Befehle über die Website direkt an die Datenbank bzw. den Server zu schicken.
Kleines Beispiel (gibt auch deutlich komplexere Dinge bis zum Formatieren der HDD, falls der Server das mitmacht)

```
meine-url.xyz/seite/show_user.php?uid=12345 (normale Anfrage)
=> SELECT * FROM Users WHERE uid=12345;

meine-url.xyz/seite/show_user.php?uid=12345;UPDATE+Users+SET+type=admin+WHERE+uid=12345; (SQL Injection!)
=> SELECT * FROM Users WHERE uid=12345; UPDATE Users SET type=admin WHERE uid=12345; -> uid=12345 hat jetz Adminrechte!
```
Gegenmaßnahmen: Niemals Benutzereingaben vertrauen (gilt eigentlich immer!). Dazu zum Besipiel Prepared Statements nutzen. Die sind "vorkompiliert" und erwarten daher bestimmte Parameter. In Java sähe das z.b. so aus:

```
int uid = Integer.parseInt(request.getParameter("uid")); // müsste man eigentlich noch auf null prüfen...
Connection conn = ...; // Verbindung zur DB herstellen
PreparedStatement stmnt = conn.prepareStatement("SELECT * FROM Users WHERE uid=?"); // Anfrage vorbereiten
stmnt.setInt(1, 12345); // Parameter setzen
ResultSet res = stmnt.executeQuery(); // Anfrage absenden
```
Jetzt kann kein zusätzlicher SQL-Code mehr eingeschleust werden, da sich der erstens nicht in nen int konvertieren lässt und zweitens (falls man z.b. string als Datentyp gewählt hat) würde der SQL Server den String als String interpretieren und nicht mehr als zusätzlichen SQL Code.

XSS:
XSS steht für Cross-Site Scripting und wird zum Besipiel benutzt um Benutzerkonten zu kapern. Dabei wird ausgenutzt, dass Schadcode in einen gültigen Kontext eingefügt wird.

Beispiel: Du hast ein Gästebuch auf deiner Seite, bei dem Benutzer Einträge hinterlassen können.
Ein böser User könnte jetzt einen Eintrag dieser Art erzeugen:

```
Hallo, eine schöne Seite hast du da!<script type="text/javascript">alert("Dies ist ein XSS Angriff.")</script>
```
Wenn deine Website solche Eingaben zulässt wird dieses JavaScript bei jedem Aufruf der Seite vom Clientbrowser ausgeführt. Wenn der User angemeldet ist, können so z. B. Logindaten abgegriffen werden.

Dies ist jetzt ein sog. persistenter Angriff, da es ja bei jedem Aufruf der Seite vorhanden ist. Es gibt auch Angriffe, die ähnlich zu SQL Injections über die URL erfolgen können.

Gegenmaßnahmen: Schlüsselwörter wie <script> nicht in der Eingabe zulassen bzw. noch besser nur eine Liste von gültigen Schlüsselwörter nutzen. Wie Forentags zum Beispiel.

XSRF:
XSRF steht für Cross-Site Request Forgery. Dabei wird dem Browser des Users ohne sein Wissen ein manipulierter HTTP Request untergeschoben. Dies ist eigneltich auch eher interessant, wenn ein Benutzer bereits angemeldet ist, da der die vom Angreifer gewünschten Aktionen ausführen kann.

Beispiel: Ein User ist als Admin angemeldet. Nun hat der Hacker einen solchen Link in die Seite eingearbeitet (z.B. über XSS):

```
meine-seite.xyz/seite/user_admin?c=new&username=admin2&password=geheim&type=admin
```
Wenn der angemeldete Admin nun auf diesen Link klickt oder dieser Link in einen HTTP Request eingebettet wird, dann erzeugt dies einen neuen Admin-Account, den der Angreifer dann benutzen kann, um die Kontrolle über die Seite zu übernehmen.

Gegenmaßnahmen sind hier etwas schwieriger (nur HTTP POST Anfragen erlauben ist übrigens keine wirksame Gegenmaßnahme!). Serverseitig kann man halt nur versuchen, eine "geheime" Zeichenkette oder Zahl in ein Hidden-Feld des entsprechenden Formulars einzufügen. Die könnte man dann halt bei jedem Aufruf des User-Forms neu generieren. Client-seitig kann es aber auch Probleme geben, zuum Beispiel durch Session-IDs in gespeicherten Cookies.

Wie gesagt, ich habe nicht so viele Erfahrungen im Web-Bereich (eher normale Anwendungen ^^) und bin mir nicht sicher, ob das jetzt alles so 100% korrekt war. Es sollte aber reichen, um dir ne grobe Vorstellung zu bieten, worauf du dich einstellen solltest.

EDIT: Vor DDoS-Attacken, wie LulzSec das im Moment macht, kannst du dich eigentlich nicht richtig schützen. Es gibt zwar sündhaft teure Spezialhardware, die solche Angriffe erkennen kann, aber wirklich sicher ist man damit auch nicht. DDoS kann aber jede netzwerkfähige Anwendung treffen und ist nicht auf Websites beschränkt. Es wird ja auch eigentlich der Server angegriffen und nicht die Seite ansich.


----------



## Crysis nerd (18. Juni 2011)

*AW: Website auf Sicherheitsmängel untersuchen*

Wow vielen Dank für diese ausführliche Antwort. Also den Begriff SQL Injection hab ich schonmal gehört und kannte sogar ungefähr seine Funktionsweise. Aber Gegenmaßname und die anderen "Techniken" kannte ich noch nicht. Solche Grundsachen wie Verarbeitung von Usereingaben haben wir natürlich (höhö) schon drin. Also kein html code und sowas. Jedenfalls hat mir die Antwort schonmal geholfen 
Und DDOS kenn ich auch wohl, hab mal ein bischen darüber gelesen (kranke Sachen manchmal, kranke Sachen..) . Und LulzSec is ne Hacker Group (10 sec google sagte das), die kannte ich auch noch nich...


----------



## midnight (18. Juni 2011)

*AW: Website auf Sicherheitsmängel untersuchen*

Was für eine Seite hast du denn da? Ohne großen Einsatz von Javascript und mySQL bleibt ja nicht mehr so viel. Und gegen DDos-Angriffe brauchst du deine Website kaum sichern....


----------



## Crysis nerd (18. Juni 2011)

*AW: Website auf Sicherheitsmängel untersuchen*

Jao was das werden soll, wissen wir auch noch nicht so genau. Im Moment gehts einfach ums technische Prinzip.. 
Also wir nutzen schon recht viel MySQL, Javascript weniger. Später soll das mal die Homepage für ein Spiel werden, aber im moment noch nix tolles...
und ja, DDOS kannste eh vergessen.
Außerdem: Ich bin Hobby Programmierer!! Als ob irgendjemand die Seite öfters aufrufen wird, geschweige denn ein Interesse daran hat, sie zu DDOS´sen ^^


----------



## bingo88 (18. Juni 2011)

*AW: Website auf Sicherheitsmängel untersuchen*



Crysis nerd schrieb:


> Wow vielen Dank für diese ausführliche Antwort. Also den Begriff SQL Injection hab ich schonmal gehört und kannte sogar ungefähr seine Funktionsweise. Aber Gegenmaßname und die anderen "Techniken" kannte ich noch nicht. Solche Grundsachen wie Verarbeitung von Usereingaben haben wir natürlich (höhö) schon drin. Also kein html code und sowas. Jedenfalls hat mir die Antwort schonmal geholfen
> Und DDOS kenn ich auch wohl, hab mal ein bischen darüber gelesen (kranke Sachen manchmal, kranke Sachen..) . Und LulzSec is ne Hacker Group (10 sec google sagte das), die kannte ich auch noch nich...


 Ich hatte LulzSec jetzt mal als Beispiel genommen, weil die ja im Moment in aller Munde sind (waren ja auch hier schon paar mal in den (User)News).
Ich bin jetzt kein Websicherheitsexperte, aber die drei Angriffsarten kommen eigentlich am häufigsten vor.

Was mir noch eingefallen ist: Zugriff auf's Filesystem. Ich hatte selbst schon mal ne Seite gesehen, wo man sich die Datenbank mit den Passwörter einfach per richtiger URL runter laden konnte. Die Website hatte einen eingebauten Dateibrowser, hat aber Eingaben wie "../../../" nicht abgefangen und man hatte quasi Lesezugriff auf die gesamte HDD des Webservers! Dann brauchte man nur noch Suchen 

Edit: Ja, DDoS ist bei so ner Seite auch recht unwahrscheinlich. Wollte es nur mal der Vollständigheit halber erwähnen, zumal DDoS-Attacken keine Kunst bzw. nur mit minimalem Aufwand verbunden sind.


----------



## spionkaese (24. Juni 2011)

Für die Grundlagen gabs bei Google Labs mal ein Tutorial,
dabei gings um Python (meine ich mich zu erinnern).
Wenn du willst kann ichs mal raussuchen.

So, da ist es: http://google-gruyere.appspot.com/


----------



## fadade (24. Juni 2011)

*AW: Website auf Sicherheitsmängel untersuchen*



Crysis nerd schrieb:


> Außerdem: Ich bin Hobby Programmierer!! Als ob irgendjemand die Seite öfters aufrufen wird, geschweige denn ein Interesse daran hat, sie zu DDOS´sen ^^


 
Also mich würds schon mal interessieren, wenn es fertig bist 
Und ich bin dann auch der Typ, der eure Site "haggt" ^^
 .... hm... obwohl ich von Webdesign etc. keine Ahnung hab 

Ich hab auch mal was von _Goolag_ oder so gehört, aber kp, ob das was mit Websites zu tun hat, war glaub ich eher die Sicherheit eines Servers an sich


----------



## Crysis nerd (25. Juni 2011)

*AW: Website auf Sicherheitsmängel untersuchen*

Danke an spionkäse für den Link, der scheint echt passend zu sein. Ist zwar Python, aber lässt sich ja übertragen...
(schicksal oder zufall, dass dein link was mit käse zu tun hat und dein username auch 0.o )

Von Goolag hab ich noch nie gehört..


----------

