Pentesting2015: Difference between revisions

From
Jump to navigation Jump to search
 
(25 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Wikiseite für das Thema Pentesting vom IT-Security Workshop 2015.
Wikiseite für das Thema Pentesting vom IT-Security Workshop 2015.


=QEMU=
==allgemeine Planung==
Hier wird die Einrichtung von QEMU und der Verwendung von Virtual Distributed Ethernet(VDE) beschrieben. Dies ermöglicht das Betreiben mehrerer virtueller Maschninen die sich in einem gemeinsamen Netzwerk befinden.
Als Betriebssystem liegt dieser Anleitung Debian zugrunde.


Als erstes ist es notwendig sich qemu zu installieren über das Paket:
Einarbeitung ins Pentesting für Web-Applikationen mit Hilfe von dvwa.
[https://packages.debian.org/search?searchon=names&keywords=qemu-kvm qemu]

Auf [https://people.debian.org/~aurel32/qemu/ dieser Seite] kann man sich fertige QEMU Images von Debian herunterladen um sie nicht selbst bauen zu müssen.

Anschließend installiert man [https://packages.debian.org/search?keywords=vde2 VDE] und [https://packages.debian.org/search?keywords=uml-utilities User-mode Linux].

Der Nutzer der die virtuellen Maschinen startet muss der Gruppe '''vde2-net''' hinzugefügt werden und der Nutzer muss sich anschließend neu anmelden via <pre>newgrp vde2-net</pre> der Gruppe beitreten, sollte diese nicht autmomatisch erstellt worden sein muss man diese via <pre>addgroup vde2-net</pre> erstellen.

In der /etc/network/interfaces des Hostsystems wird folgender Eintrag hinzugefügt
<pre>
auto mytap
iface mytap inet static
address 10.0.3.1
netmask 255.255.255.0
vde2-switch -t mytap
</pre>
und
<pre>
ifup mytap
</pre>
ausgeführt werden.

Nun muss die virtuelle Maschine einmal mittels:
<pre>
qemu-system-x86_64 -enable-kvm -m 1024 debian_wheezy_amd64_vm1.qcow2
</pre>
gestartet werden.
Wobei mit ''-m'' die Menge zugewiesenen Arbeitsspeichers festgelegt wird und mittels ''-enable-kvm'' eine schnellere Virtualisierung erfolgt


Die /etc/network/interfaces des virtuellen Systems wird wie folgt verändert
<pre>
#allow-hotplug eth0
#iface eth0 inet dhcp

iface eth0 inet static
address 10.0.3.2
gateway 10.0.3.1
netmask 255.255.255.0
</pre>

Es werden also statische Adressen innerhalb des Virtuellen Netzwerks vergeben alternativ kann man einen DHCP Server wie [https://packages.debian.org/jessie/dnsmasq dnsmasq] verwenden, der nur auf dem TAP Interface (mytap) Adressen vergibt.

In der oben angegeben Konfiguration kann man die virtuelle Maschine jetzt mittels
<pre>
qemu-system-x86_64 -enable-kvm -net nic -net vde,sock=/var/run/vde2/mytap.ctl -m 1024 IMAGE.qcow
</pre>
starten muss dann jedoch noch in der virtuellen Maschine als root
<pre>
ifup eth0
</pre>
ausführen um die Statische Adresse zu erhalten.

Möchte man mehrere virtuelle Maschinen zeitgleich laufen lassen muss zudem noch eine MAC Adresse angegeben werden:
<pre>
qemu-system-x86_64 -enable-kvm -net nic,macaddr=52:54:00:12:01:00 -net vde,sock=/var/run/vde2/mytap.ctl IMAGE.qcow
</pre>

Die virtuellen Maschinen haben keinen Zugang zu dem Netzwerk des Host Rechners, benötigt man dies um bspw. Pakete runterzuladen muss die /etc/network/interfaces der betreffenden Maschine wie folgt geändert werden:
<pre>
allow-hotplug eth0
iface eth0 inet dhcp

#iface eth0 inet static
# address 10.0.3.2
# gateway 10.0.3.1
# netmask 255.255.255.0
</pre>

Nun startet man die virtuelle Maschine einfach mittels:
<pre>
qemu-system-x86_64 -enable-kvm -m 1024 debian_wheezy_amd64_vm1.qcow2
</pre>
um Internet Zugang zu erhalten, der Host und das virtuelle System sehen sich jedoch in dieser Konfiguration nicht.

Die Anleitung wurde auf Basis des [https://wiki.debian.org/QEMU Debian Wiki Artikels über QEMU] erstellt.

=OWASP BWA=
==OWASP BWA auf VM einrichten==

Das Open Web Application Security Project - Broken Web Applications (OWASP BWA) Paket liefert eine Sammlung von verschiedenen Web-Anwendungen unter anderen von der Damn Vulnerable Web Application (DVWA) einem angreifbaren Webserver den wir im Detail untersucht haben und für den wir die Einrichtung auf dem Raspberry Pi und in der Virtual Machine (VM) weiter unten genauer beschrieben haben. Die einfachste Variante ist somit die OWASP BWA VM einzurichten und man kann dann auf die einzelne Einrichtungen von DVWA verzichten.

OWASP BWA läuft neben VMWare auch unter VirtualBox, genaureres findet man unter

https://code.google.com/p/owaspbwa/wiki/UserGuide

https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project

===OWASP BWA enthaltene Projekte===
Das OWASP BWA enthält eine große Anzahl an Projekte und eine vollständige Liste findet man unter

https://code.google.com/p/owaspbwa/wiki/UserGuide#Training_Applications

Von diesen haben wir die folgenden Projekte ausgewählt und beschreiben sie weiter unten im Detail:

*OWASP WebGoat
*Damn Vulnerable Web Application
*Joomla version 1.5.15 (PHP, released November 4, 2009)

=DVWA=
==DVWA auf Rasperry Pi einrichten==

<pre>
#sources
#http://hackthistv.com/blog/how-to-install-dvwa-on-ubuntu-server-14-04/
#https://github.com/RandomStorm/DVWA
#http://www.computersecuritystudent.com/SECURITY_TOOLS/DVWA/DVWAv107/lesson1/


mkdir dvwa
cd dvwa/
wget https://github.com/RandomStorm/DVWA/archive/v1.0.8.zip
sudo apt-get -y install apache2 mysql-server php5 php5-mysql php-pear php5-gd
sudo apt-get update
sudo apt-get -y install apache2 mysql-server php5 php5-mysql php-pear php

mysql passwort:
root
mysqlpassword

#raspbian got a different default directory
#see step 5 http://hackthistv.com/blog/how-to-install-dvwa-on-ubuntu-server-14-04/
#cd /etc/apache2/sites-available/
#ls
#cat default
cd /var/www/


sudo mv /home/pi/dvwa/v1.0.8.zip .
unzip v1.0.8.zip

vim DVWA-1.0.8/config/config.inc.php
#find the following line:
#
#$_DVWA[ 'db_password' ] = 'p@ssw0rd';
#
#and replace “p@ssw0rd” with your MySQL password.
#i.e. mysqlpassword



sudo vim /etc/php5/apache2/php.ini
#change to on:
;allow_url_include = Off
allow_url_include = On

#step 10
sudo chmod -R 777 DVWA-1.0.8/

mysql -u root -p
#password:
#mysqlpassword
create database dvwa;
exit


#let out Step 12 and Step 13 from http://hackthistv.com/blog/how-to-install-dvwa-on-ubuntu-server-14-04/
#vim /etc/apache2/apache2.conf
##Move to the bottom of the file and add the following line:
#ServerName localhost



#(re)start apache:
sudo service apache2 start


#Step 15
#Open a web browser and navigate to:
#http://[server IP address]/[dvwa-directory]/setup.php
#Example:
#http://192.168.0.20/dvwa/setup.php
#browser:
firefox http://192.168.5.112/DVWA-1.0.8/setup.php
#and click the button that says “Create / Reset Database”

#now go to the dvwa mainpage:
firefox http://192.168.5.112/DVWA-1.0.8/
#login with
#username: admin
#password: password

#follow the instructions


</pre>

==DVWA auf VM einrichten==

Einrichtung erfolgt analog zur Einrichtung auf dem Raspberry Pi (siehe oben).

Achtung! Default-Netzwerkeinstellung der gängigen Virtualisierungs-Hypervisors (VBox, VMWare, etc.) ist NAT. Um die VM via SSH administrieren bzw. die DVWA-Website erreichen zu können, müssen folgende Port-Forwarding-Regeln in die VM-Einstellungen im Hypervisor aufgenommen werden:

{|
! Host IP
! Host Port
! Guest IP
! Guest Port
|-
| 127.0.0.1
| 2222
| <Guest IP>
| 22
|-
| 127.0.0.1
| 8080
| <Guest IP>
| 80
|}

==Brute-Force Angriff auf DVWA==

Zum Angriff auf DVWA wurde das Programm Hydra verwendet. Hydra können zwei Dateien übergeben werden, z.B. users.txt mit den Login-Namen und pwd.txt mit den zu testenden Passwörtern. Hydra wird wie folgt verwendet:

hydra {IP-Adresse} {http-form-post|http-get-form} -L {users.txt} -P {pwd.txt} "{Pfad auf dem Server}/index.php:{zu setzende Variablen}:S={Teil eines Strings, der im Erfolgfall angezeigt wird}"
===Wörterbücher===
https://wiki.skullsecurity.org/Passwords

https://crackstation.net/buy-crackstation-wordlist-password-cracking-dictionary.htm


==Command Execution==

Tip für medium security: http://stackoverflow.com/questions/5130847/shell-multiple-commands-in-one-line

Weiteres vorgehen:
http://www.computersecuritystudent.com/SECURITY_TOOLS/DVWA/DVWAv107/lesson3/index.html


==Links==
==Links==
Line 14: Line 243:
*Applikations, Virtual Machines und ISOs (siehe jeweils Tab): https://www.owasp.org/index.php/OWASP_Vulnerable_Web_Applications_Directory_Project#tab=On-Line_apps
*Applikations, Virtual Machines und ISOs (siehe jeweils Tab): https://www.owasp.org/index.php/OWASP_Vulnerable_Web_Applications_Directory_Project#tab=On-Line_apps


==MySQL SQL Injections==
==Wörterbücher==
Übersichhtseite über verschiedene Injections:
https://wiki.skullsecurity.org/Passwords


http://pentestmonkey.net/cheat-sheet/sql-injection/mysql-sql-injection-cheat-sheet
https://crackstation.net/buy-crackstation-wordlist-password-cracking-dictionary.htm

==XSS==
Allgemeiner Artikel:

https://www.exploit-db.com/papers/13102/

XSS Online Game

https://xss-game.appspot.com

=WebGoat=
WebGoat ist ein Java-basierter Webserver, der Sicherheits-Schwachstellen und dazugehörige interaktive Lernseiten enthält.

WebGoat ist in OWASP BWA enthalten und muss somit nicht extra installiert werden. Möchte man trotzdem WebGoat einzeln zum Beispiel auf dem Raspberry Pi installieren, so braucht man es nur herunterzuladen und zu starten:

<pre>
pi@raspberrypi ~ $ mkdir webgoat
pi@raspberrypi ~ $ cd webgoat/
pi@raspberrypi ~/webgoat $ wget https://github.com/WebGoat/WebGoat-Legacy/releases/download/v6.0.1/WebGoat-6.0.1-war-exec.jar
pi@raspberrypi ~/webgoat $ java -jar WebGoat-6.0.1-war-exec.jar
</pre>

Dann kann man WebGoat unter

[IP des RaspberryPis]:8080/WebGoat/

erreichen. Also z.B.:

<pre>
http://192.168.5.112:8080/WebGoat/
</pre>

Latest revision as of 21:03, 29 November 2015

Wikiseite für das Thema Pentesting vom IT-Security Workshop 2015.

QEMU

Hier wird die Einrichtung von QEMU und der Verwendung von Virtual Distributed Ethernet(VDE) beschrieben. Dies ermöglicht das Betreiben mehrerer virtueller Maschninen die sich in einem gemeinsamen Netzwerk befinden. Als Betriebssystem liegt dieser Anleitung Debian zugrunde.

Als erstes ist es notwendig sich qemu zu installieren über das Paket: qemu

Auf dieser Seite kann man sich fertige QEMU Images von Debian herunterladen um sie nicht selbst bauen zu müssen.

Anschließend installiert man VDE und User-mode Linux.

Der Nutzer der die virtuellen Maschinen startet muss der Gruppe vde2-net hinzugefügt werden und der Nutzer muss sich anschließend neu anmelden via

newgrp vde2-net

der Gruppe beitreten, sollte diese nicht autmomatisch erstellt worden sein muss man diese via

addgroup vde2-net

erstellen.

In der /etc/network/interfaces des Hostsystems wird folgender Eintrag hinzugefügt

auto mytap
iface mytap inet static
    address 10.0.3.1
    netmask 255.255.255.0
    vde2-switch -t mytap

und

ifup mytap

ausgeführt werden.

Nun muss die virtuelle Maschine einmal mittels:

qemu-system-x86_64 -enable-kvm -m 1024 debian_wheezy_amd64_vm1.qcow2 

gestartet werden. Wobei mit -m die Menge zugewiesenen Arbeitsspeichers festgelegt wird und mittels -enable-kvm eine schnellere Virtualisierung erfolgt


Die /etc/network/interfaces des virtuellen Systems wird wie folgt verändert

#allow-hotplug eth0
#iface eth0 inet dhcp

iface eth0 inet static
    address 10.0.3.2
    gateway 10.0.3.1
    netmask 255.255.255.0

Es werden also statische Adressen innerhalb des Virtuellen Netzwerks vergeben alternativ kann man einen DHCP Server wie dnsmasq verwenden, der nur auf dem TAP Interface (mytap) Adressen vergibt.

In der oben angegeben Konfiguration kann man die virtuelle Maschine jetzt mittels

qemu-system-x86_64 -enable-kvm -net nic -net vde,sock=/var/run/vde2/mytap.ctl -m 1024 IMAGE.qcow

starten muss dann jedoch noch in der virtuellen Maschine als root

ifup eth0

ausführen um die Statische Adresse zu erhalten.

Möchte man mehrere virtuelle Maschinen zeitgleich laufen lassen muss zudem noch eine MAC Adresse angegeben werden:

qemu-system-x86_64 -enable-kvm -net nic,macaddr=52:54:00:12:01:00 -net vde,sock=/var/run/vde2/mytap.ctl IMAGE.qcow

Die virtuellen Maschinen haben keinen Zugang zu dem Netzwerk des Host Rechners, benötigt man dies um bspw. Pakete runterzuladen muss die /etc/network/interfaces der betreffenden Maschine wie folgt geändert werden:

allow-hotplug eth0
iface eth0 inet dhcp

#iface eth0 inet static
#    address 10.0.3.2
#    gateway 10.0.3.1
#    netmask 255.255.255.0

Nun startet man die virtuelle Maschine einfach mittels:

qemu-system-x86_64 -enable-kvm -m 1024 debian_wheezy_amd64_vm1.qcow2

um Internet Zugang zu erhalten, der Host und das virtuelle System sehen sich jedoch in dieser Konfiguration nicht.

Die Anleitung wurde auf Basis des Debian Wiki Artikels über QEMU erstellt.

OWASP BWA

OWASP BWA auf VM einrichten

Das Open Web Application Security Project - Broken Web Applications (OWASP BWA) Paket liefert eine Sammlung von verschiedenen Web-Anwendungen unter anderen von der Damn Vulnerable Web Application (DVWA) einem angreifbaren Webserver den wir im Detail untersucht haben und für den wir die Einrichtung auf dem Raspberry Pi und in der Virtual Machine (VM) weiter unten genauer beschrieben haben. Die einfachste Variante ist somit die OWASP BWA VM einzurichten und man kann dann auf die einzelne Einrichtungen von DVWA verzichten.

OWASP BWA läuft neben VMWare auch unter VirtualBox, genaureres findet man unter

https://code.google.com/p/owaspbwa/wiki/UserGuide

https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project

OWASP BWA enthaltene Projekte

Das OWASP BWA enthält eine große Anzahl an Projekte und eine vollständige Liste findet man unter

https://code.google.com/p/owaspbwa/wiki/UserGuide#Training_Applications

Von diesen haben wir die folgenden Projekte ausgewählt und beschreiben sie weiter unten im Detail:

  • OWASP WebGoat
  • Damn Vulnerable Web Application
  • Joomla version 1.5.15 (PHP, released November 4, 2009)

DVWA

DVWA auf Rasperry Pi einrichten

#sources
#http://hackthistv.com/blog/how-to-install-dvwa-on-ubuntu-server-14-04/
#https://github.com/RandomStorm/DVWA
#http://www.computersecuritystudent.com/SECURITY_TOOLS/DVWA/DVWAv107/lesson1/


mkdir dvwa
cd dvwa/
wget https://github.com/RandomStorm/DVWA/archive/v1.0.8.zip
sudo apt-get -y install apache2 mysql-server php5 php5-mysql php-pear php5-gd
sudo apt-get update 
sudo apt-get -y install apache2 mysql-server php5 php5-mysql php-pear php

mysql passwort:
root
mysqlpassword

#raspbian got a different default directory
#see step 5 http://hackthistv.com/blog/how-to-install-dvwa-on-ubuntu-server-14-04/
#cd /etc/apache2/sites-available/
#ls
#cat default
cd /var/www/


sudo mv /home/pi/dvwa/v1.0.8.zip .
unzip v1.0.8.zip 

vim DVWA-1.0.8/config/config.inc.php 
#find the following line:
#
#$_DVWA[ 'db_password' ] = 'p@ssw0rd';
#
#and replace “p@ssw0rd” with your MySQL password.
#i.e. mysqlpassword



sudo vim /etc/php5/apache2/php.ini
#change to on:
;allow_url_include = Off
allow_url_include = On

#step 10
sudo chmod -R 777 DVWA-1.0.8/

mysql -u root -p
#password:
#mysqlpassword
create database dvwa;
exit


#let out Step 12 and Step 13 from http://hackthistv.com/blog/how-to-install-dvwa-on-ubuntu-server-14-04/
#vim /etc/apache2/apache2.conf
##Move to the bottom of the file and add the following line:
#ServerName localhost



#(re)start apache:
sudo service apache2 start


#Step 15
#Open a web browser and navigate to:
#http://[server IP address]/[dvwa-directory]/setup.php
#Example: 
#http://192.168.0.20/dvwa/setup.php
#browser:
firefox http://192.168.5.112/DVWA-1.0.8/setup.php
#and click the button that says “Create / Reset Database”

#now go to the dvwa mainpage:
firefox http://192.168.5.112/DVWA-1.0.8/
#login with
#username: admin
#password: password

#follow the instructions


DVWA auf VM einrichten

Einrichtung erfolgt analog zur Einrichtung auf dem Raspberry Pi (siehe oben).

Achtung! Default-Netzwerkeinstellung der gängigen Virtualisierungs-Hypervisors (VBox, VMWare, etc.) ist NAT. Um die VM via SSH administrieren bzw. die DVWA-Website erreichen zu können, müssen folgende Port-Forwarding-Regeln in die VM-Einstellungen im Hypervisor aufgenommen werden:

Host IP Host Port Guest IP Guest Port
127.0.0.1 2222 <Guest IP> 22
127.0.0.1 8080 <Guest IP> 80

Brute-Force Angriff auf DVWA

Zum Angriff auf DVWA wurde das Programm Hydra verwendet. Hydra können zwei Dateien übergeben werden, z.B. users.txt mit den Login-Namen und pwd.txt mit den zu testenden Passwörtern. Hydra wird wie folgt verwendet:

hydra {IP-Adresse} {http-form-post|http-get-form} -L {users.txt} -P {pwd.txt} "{Pfad auf dem Server}/index.php:{zu setzende Variablen}:S={Teil eines Strings, der im Erfolgfall angezeigt wird}"

Wörterbücher

https://wiki.skullsecurity.org/Passwords

https://crackstation.net/buy-crackstation-wordlist-password-cracking-dictionary.htm


Command Execution

Tip für medium security: http://stackoverflow.com/questions/5130847/shell-multiple-commands-in-one-line

Weiteres vorgehen: http://www.computersecuritystudent.com/SECURITY_TOOLS/DVWA/DVWAv107/lesson3/index.html

Links

MySQL SQL Injections

Übersichhtseite über verschiedene Injections:

http://pentestmonkey.net/cheat-sheet/sql-injection/mysql-sql-injection-cheat-sheet

XSS

Allgemeiner Artikel:

https://www.exploit-db.com/papers/13102/

XSS Online Game

https://xss-game.appspot.com

WebGoat

WebGoat ist ein Java-basierter Webserver, der Sicherheits-Schwachstellen und dazugehörige interaktive Lernseiten enthält.

WebGoat ist in OWASP BWA enthalten und muss somit nicht extra installiert werden. Möchte man trotzdem WebGoat einzeln zum Beispiel auf dem Raspberry Pi installieren, so braucht man es nur herunterzuladen und zu starten:

pi@raspberrypi ~ $ mkdir webgoat
pi@raspberrypi ~ $ cd webgoat/
pi@raspberrypi ~/webgoat $ wget https://github.com/WebGoat/WebGoat-Legacy/releases/download/v6.0.1/WebGoat-6.0.1-war-exec.jar
pi@raspberrypi ~/webgoat $ java -jar WebGoat-6.0.1-war-exec.jar 

Dann kann man WebGoat unter

[IP des RaspberryPis]:8080/WebGoat/

erreichen. Also z.B.:

http://192.168.5.112:8080/WebGoat/