WebSecurity 

Часть 5

OS Command Injection

OS Command Injection

Атаки направлены на выполнение команд операционной системы на Web-сервере путем манипуляции входными данными. Если информация, полученная от клиента, должным образом не верифицируется, атакующий получает возможность выполнить команды ОС. Они будут выполняться с тем же уровнем привилегий, с каким работает компонент приложения, выполняющий запрос (сервер СУБД, Web-сервер и т.д).

Open Web Application Security Project

  • A1 Внедрение кода
  • A2 Некорректная аутентификация и управление сессией
  • A3 Межсайтовый скриптинг
  • A4 Нарушение контроля доступа
  • A5 Небезопасная конфигурация
  • A6 Утечка чувствительных данных
  • A7 Недостаточная защита от атак (NEW)
  • A8 Подделка межсайтовых запросов
  • A9 Использование компонентов с известными уязвимостями
  • A10 Незащищенный API (NEW)

Пример


<?php
    print("Please specify the name of the file to delete");
    print("<p>");
    $file=$_GET['filename'];
    system("rm $file");
?>

http://127.0.0.1/delete.php?filename=bob.txt;cat%20/etc/passwd

Please specify the name of the file to delete

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
...

Рейтинг наиболее популярных атак

OS command injection сканеры

Базы

Коллекция из нескольких типов списков, используемых в процессе оценки безопасности, собранные в одном месте. Типы списков включают в себя имена пользователей, пароли, URL, чувствительные шаблоны данных, Fuzzing полезные нагрузки, веб-оболочки, и многое другое.

https://github.com/danielmiessler/SecLists

Code Review Dangerous API


Java
Runtime.exec()

C/C++
system
exec
ShellExecute

Python
exec
eval
os.system
os.popen
subprocess.popen
subprocess.call

PHP
system
shell_exec
exec
proc_open
eval

Защита от OS command injection

  • Доступы. Web приложение и его компоненты должны быть запущены под конкретными правами которые не позволяют выполнять команды операционной системы. 
  • Санитизация. Данные должны быть четко фильтрованы. Использовать данные по принципу "белого листа", которые содержат только допустимые значения.

    Эти символы стоит исключить: |  ; & $ > < ' \  ! >> #

    Эти символы стоит фильтровать или экранировать:

    • windows,   ( ) < > & * ‘ | = ? ; [ ] ^ ~ ! . ” % @ / \ : + , `

    • Linux, { }  ( ) < > & * ‘ | = ? ; [ ]  $ – # ~ ! . ” %  / \ : + , `

WAF

WAF

WAF может быть реализован как облачный сервис, агент на веб-сервере или специализированное железное или виртуальное устройство. Развитие рынка WAF пока складывается так, что облачный сервис востребован в среднем и малом бизнесе, а для крупного бизнеса обычно приобретается отдельное устройство. WAF как модуль веб-сервера так и остался, по сути, в зачаточном состоянии и больше подходит для энтузиастов, чем для бизнес-задач.

WAF

Cloudflare Pricing

Где потренироваться?

  • http://www.dvwa.co.uk/
  • http://www.itsecgames.com/
  • https://www.hacksplaining.com
  • https://habrahabr.ru/company/pentestit/blog/261569/
  • https://habrahabr.ru/company/pt/blog/138779/

Полезные ссылки

  • https://www.owasp.org/index.php/Command_Injection
  • https://www.owasp.org/index.php/Testing_for_Command_Injection_(OTG-INPVAL-013)

Стоимость ошибки

Вопросы?

To be continued ...

Web Security Part 5

By James Jason

Web Security Part 5

  • 653