Pentesting2015: Difference between revisions
(→QEMU) |
|||
(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
- dvwa : http://www.dvwa.co.uk/
- installation von dvwa auf ubuntu server: http://hackthistv.com/blog/how-to-install-dvwa-on-ubuntu-server-14-04/
- alte Projekte: http://blog.taddong.com/2011/10/hacking-vulnerable-web-applications.html
- VMs: https://www.owasp.org/index.php/OWASP_Vulnerable_Web_Applications_Directory_Project/Pages/VMs
- Applikationen: https://github.com/OWASP/OWASP-VWAD/blob/master/src/offline.tsv
- intercepting Proxy: https://portswigger.net/burp/download.html
- 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
Ü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
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/