Business Logic уразливість на banner.kiev.ua
23:50 13.12.2010В статті Business Logic уразливості через CSRF я писав про Business Logic уразливості, що дозволяють маніпулювати фінансовими даними користувачів. Які можна ініціювати через CSRF атаки.
В якості приклада таких уразливостей наведу Cross-Site Request Forgery уразливість на http://www.banner.kiev.ua, що мені відома ще з 2006 року. Стосовно CSRF дірок на www.banner.kiev.ua я вже писав раніше. Я вже неодноразово писав про уразливості на даному сайті, але більшість з них досі не виправлена адмінами банерної системи, бо вони не слідкують за безпекою власного сайта.
Банери в УБС коштують гроші, тому вони є еквівалентом фінансових одиниць. Бо банери можна монетизувати. З однієї сторони вони можуть знадобитися нападнику, щоб відкручувати рекламу і при цьому не витрачати кошти на купівлю баннерів. А з іншої сторони за них можна купити товари чи сервіси у партнерів УБС, а також їх можна продати на вторинному ринку.
Business Logic Flaw (через CSRF):
Можна викрасти покази користувача через CSRF-атаку. Це можна зробити через POST запит на сторінці http://www.banner.kiev.ua/transfer?x=site_id, або через GET:
http://www.banner.kiev.ua/?a=do_transfer&x=site_id&n=1&to_site_id=your_site_id&format_id=1&value=1000
Цим запитом ви переведете з рахунку сайта site_id жертви на рахунок свого сайта your_site_id 1000 банерів формату 468×60.
Для надійності атаки потрібно знати, що у користувача є необхідна кількість показів, або можна переводити невелику кількість показів (наприклад, 1000). При бажанні можна зробити серверний скрипт, що буде перевіряти стан власного рахунку нападника, і через XSS уразливість - яких море на www.banner.kiev.ua, про що я неодноразово писав - проводити атаки для переведення показів. При цьому зв’язуючись з серверним скриптом нападника, щоб перевірити стан рахунку, і при необхідності корегувати кількість показів для переведення (або через XSS визначити кількість показів на рахунку і одразу забрати всі). Таким чином можна забрати з рахунку користувача всі покази до останнього.