27
Атаки на веб-приложения в тестах на проникновение VolgaCTF 2013 Ганиев Омар Отдел анализа защищенности

Пост-эксплуатация веб-приложений в тестах на проникновение

  • Upload
    beched

  • View
    1.349

  • Download
    1

Embed Size (px)

DESCRIPTION

Some aspects of web applications post exploitation.

Citation preview

Page 1: Пост-эксплуатация веб-приложений в тестах на проникновение

Атаки на веб-приложения в тестах на проникновение

VolgaCTF 2013

Ганиев ОмарОтдел анализа защищенности

Page 2: Пост-эксплуатация веб-приложений в тестах на проникновение

Curriculum Vitae

― Изучаю ИБ лет 6

― Факультет математики НИУ-ВШЭ

― CTF-команда RDot.Org

― Хакерский отдел «Информзащиты»

― Beched

Page 3: Пост-эксплуатация веб-приложений в тестах на проникновение

Проникновение

― Цепочка некоторых действий

― Недостаточно одной уязвимости

― Разные пути для достижения цели

― Защищенность определяется слабым звеном

― Black vs white box, внутреннее vs внешнее

Page 4: Пост-эксплуатация веб-приложений в тестах на проникновение

Кто самое слабое звено?

Персонал

Web-приложения

Сетевое оборудование

СУБД

Файловые хранилища

Прочие сетевые сервисы

Page 5: Пост-эксплуатация веб-приложений в тестах на проникновение

Кто самое слабое звено?

2010 2011 20120%

10%

20%

30%

40%

50%

60%

70%

80%

36%

56%

73%

Успешность проведение атак методом социальной инженерии за последние 3

года

Page 6: Пост-эксплуатация веб-приложений в тестах на проникновение

Зачем тогда ломать web?

― Больше свободы действий (меньше

согласований), меньше риск провала

― Веб-приложения всюду есть, и они часто

«самописные»

― Зачастую критичные ресурсы напрямую связаны

и с web-приложением

― Более распространённая в жизни модель

взлома

Page 7: Пост-эксплуатация веб-приложений в тестах на проникновение

Какие проблемы?

― Веб-серверы обычно в DMZ

― Значит, трудно настроить канал связи, и трудно

попасть в другие сегменты

― Низкие привилегии HTTP-демона

― Требуется больше технических навыков

Page 8: Пост-эксплуатация веб-приложений в тестах на проникновение

Некоторые решения

― При наличии таблицы маршрутизации можно

найти путь для проникновения на

ориентированном графе маршрутов сети

― Поднятие привилегий

(kernel, libraries, backups, suid-binaries, crontab, …)

― Другие пути (см. далее)

Page 9: Пост-эксплуатация веб-приложений в тестах на проникновение

― Intranet access via HTTP proxy

― SSRF via LFR

― DNS-spoofing via router

― Intranet access via web socks

― Bind shell via socket reuse

Cases

Page 10: Пост-эксплуатация веб-приложений в тестах на проникновение

Intranet access via HTTP proxy

― Squid, mod_proxy… По умолчанию всё ok

― server: WebSEAL/6.0.0.0 (Build 051114), wtf?

― IBM Tivoli WebSEAL reverse proxy

― Авторизация не включена

― GET http://some-host.intranet/somepage HTTP/1.1...

― Intranet

Page 11: Пост-эксплуатация веб-приложений в тестах на проникновение

auto loiface lo inet loopback auto eth0iface eth0 inet static

address 172.30.109.249netmask 255.255.255.0gateway 172.30.109.254

SSRF via LFR<? //LFR = Local File Readingreadfile($_GET[‘filename’]);

Из документации PHP:int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

Читаем исходники, конфиги, но RCE не получилось =(

download.php?filename=/etc/network/interfaces

Page 12: Пост-эксплуатация веб-приложений в тестах на проникновение

SSRF via LFR

Но $filename в мануале PHP – это URL, а не просто путь.

SSRF – Server-Side Request Forgery(в данном случае имеем простейшую вариацию).

/etc/network/interfaces => IP-адрес и маска =>сканирование подсети:

download.php?filename=http://172.30.109.1-254:1-65535/

Page 13: Пост-эксплуатация веб-приложений в тестах на проникновение

SSRF via LFRdownload.php?filename=http://172.30.109.2/

Squidstats

Page 14: Пост-эксплуатация веб-приложений в тестах на проникновение

SSRF via LFR

Что можно ещё сделать?

PHP wrappers:http://php.net/manual/en/wrappers.php

SSRF bible (cheatsheet by d0znpp):https://docs.google.com/document/d/1v1TkWZtrhzRLy0bYXBcdLUedXGb9njTNIJXa3u9akHM

HTTP, FTP, SSH, File Descriptors…Может привести к исполнению кода.

Page 15: Пост-эксплуатация веб-приложений в тестах на проникновение

DNS spoofing via router

FTP brute force => admin:admin

Adminpanel

Page 16: Пост-эксплуатация веб-приложений в тестах на проникновение

DNS spoofing via router

config.img => privileged admin

Telnetconsole

<chain N="USERNAME_PASSWORD"><V N="FLAG" V="0x0"/><V N="USERNAME" V="admin"/><V N="PASSWORD" V=“**PASSHERE**"/><V N="BACKDOOR" V="0x1"/><V N="PRIORITY" V="0x1"/></chain>

Page 17: Пост-эксплуатация веб-приложений в тестах на проникновение

DNS spoofing via router

DNS spoofing, Bind9 logging => logs

$ cat /etc/namedb/named.conf……logging { channel my_file { file "log.msgs"; severity debug; print-category yes; print-severity yes; }; category default { default_syslog; my_file; }; category queries { my_file; };};

Page 18: Пост-эксплуатация веб-приложений в тестах на проникновение

DNS spoofing via router

Host forgery => HTTP logs

*.kaspersky.com IN A 31.3.3.7

Apache logs

Page 19: Пост-эксплуатация веб-приложений в тестах на проникновение

DNS spoofing via router

― Мониторинг посещаемых узлов

― Подмена страниц на фишинговые

― Подмена обновлений ПО (на скриншоте выше

логи обращения KIS)

― PPP-аккаунт у провайдера

Page 20: Пост-эксплуатация веб-приложений в тестах на проникновение

Intranet access via web socks

― Web-shell (PHP, ASP.NET, …)

― Привилегии поднять не удалось

― DMZ, на NAT открыт только 80 или 443 порты

― Что делать?

― Web Socks!

― Intranet

Page 21: Пост-эксплуатация веб-приложений в тестах на проникновение

Intranet access via web socks

Some packet => SOCKS => ProxyChains=> Local daemon => HTTP => Web SOCKS => Target

Page 22: Пост-эксплуатация веб-приложений в тестах на проникновение

Локально запускаем демон. Инкапсулируем любой протоколв SOCKS, демон его инкапсулирует в HTTP и передаёт пакет PHP-скрипту через веб-сервер.Скрипт работает по протоколу SOCKS, возвращая ответы по HTTP, используя веб-сервер, т.е. не нужно биндить порт и обходить DMZ.

Далее проксифицируем ПО (в т. ч. Nmap, RDP-клиенты) при помощи proxychains.

$ cat /etc/proxychains.conf | grep socks5socks5 127.0.0.1 1080$ proxychains nmap --top-ports 100 10.10.17.0/24…

Intranet access via web socks

Page 23: Пост-эксплуатация веб-приложений в тестах на проникновение

Реализации web SOCKS.

На PHP от ShAnKaR (Antichat);http://forum.antichat.ru/threadnav177147-1-10.html

На ASP.NET (reDuh) от SensePost:http://research.sensepost.com/tools/web/reduh

Intranet access via web socks

Page 24: Пост-эксплуатация веб-приложений в тестах на проникновение

Bind shell via socket reuse

― Web-shell (PHP, ASP.NET, …)

― Удалось получить привилегии суперпользователя

― DMZ, на NAT открыт только 80 или 443 порты

― Что делать? Не ронять же веб-сервер!

― Socket reuse!

― Нормальный терминал

Page 25: Пост-эксплуатация веб-приложений в тестах на проникновение

Bind shell via socket reuseПриоритет демонов повышается от частного к общему

$ cat /etc/apache2/ports.conf | grep ListenListen *:80$ sudo netstat –apn | grep 80tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12669/apache2

Socket reuse:…setsockopt( sockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on) );…serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); //just example

Может не сработать, например, на SELinux. Зато работает на FreeBSDМожно просто одним сценарием отключить Apache, запустить демон шелла и запустить Apache, перехватив первое соединение(закрываем дескриптор сокета, не закрывая соединение).Но это риск.

Page 26: Пост-эксплуатация веб-приложений в тестах на проникновение

Outro― Во всём виноваты люди

― Людей проще эксплуатировать, но проще и

провалиться

― Веб-приложения эксплуатировать сложнее, но это

происходит незаметно

― Для взлома веб-серверов надо знать скриптовые

языки и структуру ОС

― Для проникновения надо знать структуру сетей и

размышлять в разных плоскостях

Page 27: Пост-эксплуатация веб-приложений в тестах на проникновение

Ганиев ОмарОтдел анализа защищённости

[email protected]

VolgaCTF 2013

Вопросы?