Як знайти мільярд XSS уразливостей
22:45 23.11.2010В 2007 році в записі Як знайти 1000000 XSS уразливостей, я розповів про методи знаходження мільйона (і більше) XSS уразливостей (з використанням пошукових систем). А наприкінці минулого року і початку цього року в статтях XSS уразливості в 8 мільйонах флеш файлах та XSS уразливості в 34 мільйонах флеш файлах я розповів про те, що можна знайти мільйони XSS дірок у флешках по всьому Інтернету.
А зараз я розповім, як знайти мільярд уразливостей, зокрема мільярд XSS уразливостей. З використанням “Warning” Google хакінга, як я вже неодноразово писав, можна знаходити мільйони Full path disclosure, але Cross-Site Scripting уразливості та ще й у великих масштабах - це більш цікаво . Зазначу, що для пошуку великої кількості дірок з використанням мого нового методу навіть не потрібно буде використовувати пошукові системи.
За допомогою даного методу можна знайти хоч мільйон, хоч мільярд, хоч трильйон дірок - взагалі нескінченне число дірок. І при цьому для пошуку не потрібні пошуковці, лише потрібно знайти одну спеціальну XSS дірку. З якої потім можна буде зробити будь-яке (навіть нескінченне) число XSS уразливостей.
Суть метода зводиться до пошуку XSS дірки (на будь-якому веб сайті чи веб додатку) в параметрі, що являє собою масив. Подібні параметри зокрема можливі в PHP. І у випадку, якщо веб додаток оброблює всі параметри-у-вигляді-масива відповідним чином (як масив чи хеш), то існує можливість reflected XSS уразливості. Причому не в одному параметрі елементі масива, а в будь-яких - тобто в довільних елементах даного масива (з довільними іменами). Що дозволяє з однієї дірки створити нескінченне число дірок . Тому що різні імена параметрів - це різні дірки.
Наприклад, є веб додаток уразливий до XSS:
http://site/script?p[0]=<script>alert(document.cookie)</script>
При відповідному алгоритмі обробки масиву параметрів p[], можливі й XSS в інших елементах (в тому числі й в пустому - []). Таких елементах як 1, 2, a і т.д.:
http://site/script?p[1]=<script>alert(document.cookie)</script>
Для імені уразливого параметра використовується наступний шаблон: “p” + “[]” або будь-яке слово у “[]”. Можливі також багатовимірні масиви, де будуть відповідні шаблони.
Подібну уразливість я вперше виявив в WordPress цього року (уразливі WordPress 2.7 - 3.0.1). А потім виявив подібні уразливості на одному сайті, під час комерційного секюріті аудиту. Тому в будь-яких PHP додатках, де використовуються параметри-масиви і має місце XSS дірка, можна створити мільйони, мільярди і будь-яке число XSS уразливостей.
Неділя, 01:41 28.11.2010
You can read this article on English in The Web Security Mailing List: How to find billion of XSS vulnerabilities.
Понеділок, 01:05 13.12.2010
Як видно з вищезгаданого опису уразливостей в WordPress, окрім мільйонів, мільярдів і будь-якого числа XSS уразливостей, що можна отримати з тих дірок, це саме стосується й інших зазначених дірок. Тому з них можна отримати будь-яке число Full path disclosure, Information Leakage, Directory Traversal, Arbitrary File Deletion та Denial of Service уразливостей.