Архів для категорії 'Уразливості'

Уразливості в Dataface Web Application Framework

15:09 06.08.2010

10.06.2010

У листопаді, 04.11.2009, я знайшов Cross-Site Scripting та Full path disclosure уразливості в Dataface Web Application Framework. Які виявив на сайті http://xataface.com, де використовується даний движок. Про що найближчим часом сповіщу розробникам.

Детальна інформація про уразливості з’явиться пізніше. Спочатку повідомлю розробникам системи.

06.08.2010

XSS:

http://site/admin.php?-table=pages&-search=%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E&-action=search_index

Full path disclosure:

http://site

Змінна DATAFACE_PATH в тілі кожної сторінки сайта.

Уразлива версія Dataface 1.0. Після мого повідомлення дані уразливості були виправлені розробником в останній версії системи.

Добірка уразливостей

15:23 05.08.2010

В даній добірці уразливості в веб додатках:

  • Palm Pre WebOS <=1.1 Remote File Access Vulnerability (деталі)
  • Palm Pre WebOS 1.0.4 Remote execution of arbitrary HTML code vulnerability (деталі)
  • XSS vulnerability in NPDS REvolution (деталі)
  • Stored XSS vulnerability in NPDS REvolution (деталі)
  • Caucho Technology Resin digest.php Cross Site Scripting Vulnerability (деталі)
  • New mt-daapd packages fix several vulnerabilities (деталі)
  • Cacti Multiple Parameter Cross Site Scripting Vulnerabilities (деталі)
  • XSRF (CSRF) in NPDS REvolution (деталі)
  • SQL injection vulnerability in LiSK CMS (деталі)
  • Authentication Bypass of Snom Phone Web Interface (деталі)

Cross-Site Scripting уразливість в Mozilla, Firefox та інших браузерах

23:53 04.08.2010

У листопаді, 30.11.2009, я виявив Cross-Site Scripting уразливість в Mozilla та Firefox.

Дана уразливість дозволяє обійти заборону на виконання JavaScript коду в location-header редиректорах (при редирекції на javascript: URI). Вона подібна до Cross-Site Scripting уразливості в Mozilla та Firefox (через редиректори з відповіддю “302 Object moved”).

В Mozilla та Firefox (на сайтах, що використовують в редиректорі відповідь “302 Found”) при запиті до location-header редиректора з вказанням JavaScript коду, браузер виводить сторінку “Found”, де в лінці “here” виводить даний код. При натисканні на яку код спрацює. Тобто це Strictly social XSS, а також це ще один приклад Local XSS.

XSS:

При запиті до скрипта на сайті:
http://site/script.php?param=javascript:alert(document.cookie)
Що поверне у відповіді заголовок Location:
HTTP/1.x 302 Found
Location: javascript:alert(document.cookie)

Браузер виводить сторінку “Found”. При кліку по лінці “here” код спрацює в контексті даного сайту.

Окрім javascript URI, також можна використати data URI для виконання JS-коду, якщо редиректор виводить в заголовку Location символи “;” і “,” у чистому (не в URL encoding) вигляді.

Також в усіх версіях Mozilla та Mozilla Firefox можна використати інший варіант Strictly social XSS - з використанням -moz-binding (для Firefox < 3.0 або для Firefox => 3.0 з xml-файлом на цьому самому сайті) чи з використанням onMouseOver:

http://site/script.php?param=a:%22%20onMouseOver=%22alert(document.cookie)

При наведенні курсору на лінку “here” код спрацює в контексті даного сайту.

І якщо використати мою техніку MouseOverJacking, тоді можна автоматизувати дану атаку у всіх версіях Mozilla та Mozilla Firefox (особливо коли використання -moz-binding неможливе):

http://site/script.php?param=a:%22%20style=%22width:100%25;height:100%25;display:block;position:absolute;top:0px;left:0px%22%20onMouseOver=%22alert(document.cookie)

Дана атака працює якщо редиректор (з відповіддю “302 Found” чи “302 Object moved”) виводить подвійні лапки в заголовку Location у чистому (не в URL encoding) вигляді.

Уразливі Mozilla 1.7.x та попередні версії.

Уразливі Mozilla Firefox 3.0.19, Firefox 3.5.11, Firefox 3.6.8, Firefox 4.0b2 та попередні версії.

Уразливі Opera 10.53 та попередні версії (при цьому версія Opera 9.52 невразлива). В Opera код виконається не в контексті даного сайту.

Як і у випадку XSS через редиректори з відповіддю “302 Object moved”, до цієї уразливості також повинні бути уразливими SeaMonkey 1.1.17, Firefox 3.7 a1 pre, Orca Browser 1.2 build 5 та Maxthon 3 Alpha (3.0.0.145) з Ultramode.

[Оновлення: 16.09.2012]

Як я виявив, у версіях Firefox 10.0.7 і Firefox 15.0.1 дана уразливість більше не працює - вона була приховано виправлена Mozilla в Firefox 9.0.

Уразливості на www.zn.ua

15:23 04.08.2010

17.12.2009

У квітні, 25.04.2009, я знайшов Insufficient Anti-automation та Cross-Site Scripting уразливості на сайті http://www.zn.ua (онлайн ЗМІ). Про що найближчим часом сповіщу адміністрацію сайта.

Даний сайт доступний за доменами www.zn.ua, www.zn.com.ua, www.zn.kiev.ua, www.mirror.kiev.ua, www.zerkalo-nedeli.com, www.dt.ua та www.mw.ua. І відповідно атаки можуть відбуватися за усіма доменами. Враховуючи, що це persistent XSS, то вона може використовуватися для інфікування сайта вірусами.

Детальна інформація про уразливості з’явиться пізніше. Треба дати час адмінам на реакцію з цього приводу.

04.08.2010

Insufficient Anti-automation:

http://www.zn.ua/1000/1550/66049/

На сторінках з новинами в формі коментарів відсутній захист від автоматизованих запитів (капча).

XSS (Persistent):

POST запит в формі коментарів на сторінках з новинами:
"><script>alert(document.cookie)</script>В полі Комментарий.

Якщо XSS уразливість вже виправлена (і в нових коментарях неможливе використання тегів), то Insufficient Anti-automation уразливість досі не виправлена.

Захищений сайт bestmaster.com.ua

23:55 03.08.2010

Продовжуючи займатися захисним хаком (protecting hack), в рамках моєї концепції хакерських війн про яку я розповідав раніше, після квітневого захисту сайта www.peremoga.gov.ua (який був взломаний black SEO), я захистив новий сайт. Цього разу я захистив сайт http://bestmaster.com.ua.

Коли я виявив уразливість на bestmaster.com.ua, про яку я вже писав та повідомляв адмінам (але безрезультатно, бо вони не читають пошту), я звернув увагу на продажні лінки на сторінках сайта. І в мене виникла підозра, що на цьому сайті попрацювали black SEO-шники. І враховуючи, що зв’язатися з адмінами не вийшло, сьогодні я перевірив дану підозру і вона підтвердилася - black SEO окупували даний сайт і почали розміщувати на сайті свої лінки та заробляли на цьому гроші.

Даний сайт був взломаний 05.01.2010, після чого на ньому почали розміщувати лінки через брокера. Як і у випадку з сайтом www.peremoga.gov.ua, на даному сайті лінки також розміщували через SAPE. Це вже другий випадок коли SAPE використовується для блексео діяльності.

Тобто через веб брокера (через php-скрипт) зловмисники розміщували лінки на взломаному сайті (і це вже другий подібний випадок). В цьому, як і в попередньому випадку, власники SAPE самі отримували прибуток, тому можуть вважатися спільниками. Дану ситуацію я виправив і прибрав дані нехороші лінки.

Добірка уразливостей

15:04 03.08.2010

В даній добірці уразливості в веб додатках:

  • Hewlett-Packard OpenView NNM nnmRptConfig.exe Template Variable strcat Overflow Vulnerability (деталі)
  • Hewlett-Packard OpenView NNM nnmRptConfig.exe Template Variable vsprintf Overflow Vulnerability (деталі)
  • Hewlett-Packard OpenView NNM Multiple Command Injection Vulnerabilities (деталі)
  • LinksAutomation Multiple Remote Vulnerabilities (деталі)
  • phpGroupWare SQL Injections and Local File Inclusion Vulnerabilities (деталі)
  • Websense Email Security Cross Site Scripting (деталі)
  • Websense Email Security Web Administrator DoS (деталі)
  • Joomla component SimpleDownload Local File Inclusion (деталі)
  • XSS, SQL injection vulnerability in I-Vision CMS (деталі)
  • XSS vulnerability in JComments, Joomla (деталі)

Уразливості на hackua.com

15:17 31.07.2010

15.12.2009

У квітні, 24.04.2009, я знайшов Abuse of Functionality та Insufficient Anti-automation уразливості на сайті http://hackua.com. Про що найближчим часом сповіщу адміністрацію сайта.

Детальна інформація про уразливості з’явиться пізніше. Треба дати час адмінам на реакцію з цього приводу.

31.07.2010

Abuse of Functionality:

Логіні користувачів є їх іменами на форумі, що дозволяє визначити логіни в системі.

Abuse of Functionality:

На сторінці http://hackua.com/register.php?do=register в полі Логін можна визначити логіни користувачів в системі. Це також можна зробити через POST запит до скрипта http://hackua.com/ajax.php. Дана уразливість дозволяє провести Login Enumeration атаку.

Insufficient Anti-automation:

Враховучи, що дана функція немає захисту від автоматизованих атак, це дозволяє проводити автоматизоване виявлення логінів в системі. В подальшому виявлені логіни можуть бути використані для визначення паролів користувачів системи.

Insufficient Anti-automation:

http://hackua.com/sendmessage.php?do=sendtofriend&t=1001

http://hackua.com/sendmessage.php

http://hackua.com/register.php?do=register

На даних сторінках наявна слабка текстова капча (коли потрібно ввести лише одну і ту саму фразу).

Дані уразливості досі не виправлені.

XSS уразливість в WordPress 2.7 - 2.8.1

22:41 30.07.2010

Продовжую проект День багів в WordPress 2. Зараз я оприлюдню результати мого дослідження однієї Cross-Site Scripting уразливості в WordPress, що була оприлюднена в липні 2009 року.

В минулому році була виявлена Cross-Site Scripting уразливість в WordPress 2.8.1. Яка мала місце в параметрі url при відправці коментарів. Уразливість виявив iso^kpsbr і він представив експлоіт, що редиректив на сайт вказаний в полі url, при наведені курсором на відповідний текст. Це strictly social XSS.

По-перше, я визначив вразливі версії движка (чого не було зроблено автором експлоіта). Як я перевірив, уразливі версії WordPress 2.7 - 2.8.1. Попередні версії невразливі, лише в WP 2.7 відбулися зміни в коді обробки коментарів, що призвели до появи XSS уразливості. В версії 2.8.2 уразливість була виправлена.

По-друге, я розробив експлоіт, який не робить onClick через onMouseOver для редерекції на сайт, а безпосередньо проводить XSS атаку - в даному випадку це звичайний alert. Незважаючи на обмеження на доступні символи, проведення XSS атак з використанням цієї уразливості цілком реальне (хоча розробники WP заявляли, що уразливість дозволяє лише редиректити на інші сайти, як це було зроблено в згаданому експлоіті, але в своєму експлоіті я продемонстрував можливість й інших атак, зокрема доступу до кукісів). Атака відбувається через onMouseOver (тобто це strictly social XSS).

XSS:

WordPress XSS.html

Код спрацює при відвіданні адміном сторінки для перевірки коментарів (http://site/wp-admin/edit-comments.php) та наведенні курсором на відповідний текст. Також код спрацює на сторінці з даним коментарем (http://site/?p=1), коли будь-який користувач чи відвідувач сайта наведе курсор на відповідний текст, якщо коментар був дозволений адміном, або він автоматично був дозволений для публікації (при відповідних налаштуваннях сайта - коли немає премодерації, або коли даний користувач вже має коментарі на даному сайті). А також код спрацює на сторінці Dashboard (http://site/wp-admin/index.php) в блоці Recent Comments при наведенні курсором на відповідний текст.

CSRF, Information Leakage та Full path disclosure в WordPress

20:11 30.07.2010

Продовжую проект День багів в WordPress 2. Зараз я оприлюдню Cross-Site Request Forgery уразливість в WordPress, що я знайшов 05.06.2007, та Information Leakage, що я знайшов 02.08.2009, та Full path disclosure, що я знайшов 29.07.2010.

CSRF:

Враховуючи, що в плагіні WordPress Database Backup немає захисту від CSRF, то за допомогою даної CSRF уразливості можна атакувати адміна. Це може бути зроблено для форсування бекапа, щоб через раніше згадану Information Leakage уразливість дістати бекап з БД сайта, або з метою створення великої кількості бекап файлів, щоб зайняти вільне місце на сервері. Або щоб отримати бекап на емайл. Дані CSRF-атаки можливі, якщо плагін WP-DB-Backup активований.

За допомогою CSRF-атаки можна зробити бекап будь-яких таблиць, як всіх, так і вибірково (наприклад таблиці з користувачами wp_users). В даному експлоіті робиться бекап з таблицею wp_users:

WordPress Database Backup CSRF.html

А також можна просто послати собі бекап (наприклад, з таблицею wp_users) на емайл:

WordPress Database Backup CSRF2.html

Це атака для відправки бакапа по емайлу (Email me backup attack).

Як я вже зазначав, даний витік інформації в бекапі БД найбільш небезпечний в зв’язку з тим, що в бекапі знаходиться логін та хеш адміна. Що можуть бути використані для отримання доступу до сайта. Це було дуже актуально до виходу WordPress 2.5, в якому переробили систему авторизації, після того як Steven Murdoch звернув увагу розробників WP на Cookie Authentication уразливість в WordPress. І з версії 2.5 в WP використовується новий метод авторизації через кукіси, але навіть в нових версіях движка витік бекапів все рівно є небезпечним і його не варто допускати.

Уразливі WordPress 2.0.11 та попередню версії, в поставку яких входив плагін WordPress Database Backup. Також уразливий плагін WP-DB-Backup 2.0 та попередні версії в будь-яких версіях WordPress (WP 2.9.2 та попередні версії і потенційно WP 3.0 та 3.0.1).

Захист від даної уразливості.

Як я вже згадував, в версії 2.1 плагіна додали захист від CSRF, тому остання версія плагіна WP-DB-Backup 2.2.2 невразлива до CSRF. Тому варто оновити плагін до останньої версії.

Information Leakage (через Privileges unchecked):

В червні 2007 я вже знайшов Information Leakage уразливість в плагіні WordPress Database Backup. А в серпні 2009 я знайшов нову уразливість пов’язану з даним плагіном (що є наслідком Privileges unchecked уразливості, яка була оприлюднена в липні 2009). Дана уразливість дозволяє дізнатися шлях до папки бекапів, а також виявити префікс таблиць в БД.

Privileges unchecked уразливість в WP була знайдена CORE в 2009 році. Вони використали моє дослідження про Local File Inclusion в WP (багато з яких працюють навіть з акаунтом Subscriber), про які я писав в грудні 2007 року під час першого проекту Day of bugs in WordPress. Дані дірки були виправлені в WP 2.3.2, але, як виявили CORE, LFI атаки на папку plugins все ще можливі (в зв’язку з відсутністю перевірок привілеїв у WP).

Дана уразливість може бути використана в парі з попередньою Information Leakage уразливістю, для виявлення повного шляху до бекапів та скачування бекапів БД сайта. Знаючи ім’я папки можна легко виявити ім’я файла (до 1000 комбінацій, якщо знати ім’я бази в MySQL, префікс та дату) та скачати бекап. Також знання префікса таблиць в БД стане в нагоді при SQL Injection атаці.

Витік інформації відбувається при доступі через admin.php до плагіну WP-DB-Backup:

http://site/wp-admin/admin.php?page=wp-db-backup.php

Якщо плагін WordPress Database Backup активований, то маючи акаунт з мінімальними правами (Subscriber) можна дізнатися шлях до бекапу і префікс таблиць.

Уразливі WordPress 2.8 та попередні версії. Уразливість стосується лише WP, а не плагіна (через дану уразливість можна атакувати й інші плагіни). В WordPress 2.8.1 дана Privileges unchecked уразливість вже виправлена, тому дана атака не працює.

Захист від даної уразливості.

Для захисту можна або оновити WordPress до невразливої версії, або оновити плагін до останньої версії. Починаючи з версії 2.1 плагіна (в тому числі в останній версії WordPress Database Backup 2.2.2) дана уразливість вже не працює (навіть в старих вразливих версіях движка), зате з’явилася Full path disclosure дірка.

Full path disclosure:

В WP-DB-Backup мають місце дві Full path disclosure уразливості:

http://site/wp-admin/admin.php?page=wp-db-backup.php

Уразливість працює з плагіном WordPress Database Backup 2.1 і вище. Вона працює у користувачів з будь-якими правами (навіть Subscriber) в усіх версіях WordPress (до WP 2.8.1) через використання вищезгаданої Privileges unchecked уразливості.

http://site/wp-content/plugins/wp-db-backup.php

Уразливість працює в усіх версіях WordPress Database Backup (в тому числі вона не виправлена і в останній версії WP-DB-Backup 2.2.2) в усіх версіях WordPress.

Захист від даних уразливостей.

Для захисту можна самому виправити дані Full path disclosure уразливості (як й інші FPD в WordPress).

Information Leakage та Full path disclosure уразливості в WordPress

17:29 30.07.2010

Сьогодні, в День багів в WordPress 2, я оприлюднюю багато цікавих уразливостей в WP. Першими я оприлюдню Information Leakage та Full path disclosure уразливості в WordPress, що я знайшов 05.06.2007, під час проведення проекту MOSEB.

Information Leakage:

В плагіні WordPress Database Backup (WP-DB-Backup) можливий доступ до бекапів БД сайта на WordPress через вгадування повного шляху до них. Бекапи можуть створюватися вручну адміном, або автоматично. Для атаки потрібно, щоб бекапи зберігалися на сайті (хоча б деякий час). WP-DB-Backup - це популярний плагін (що постачався з WordPress 2.0.x), що лише з сайту wordpress.org був викачаний 546218 разів (за станом на сьогодні).

Уразливі WordPress 2.0.11 та попередню версії, в поставку яких входив плагін WordPress Database Backup, а також всі версії WordPress (2.9.2 та попередні версії), при використанні даного плагіна (офіційно він сумісний з WP 2.9.2 та попередніми версіями і потенційно може працювати з WP 3.0 та 3.0.1).

Повний шлях до файлу з бекапами наступний:

http://site/wp-content/backup-xxxxx/database_wp_20070605_704.sql.gz

Щоб дістатися до бекапу, потрібно виявити ім’я папки та ім’я файла. Причому їх виявляти можна окремо - спочатку виявити папку, а вже потім файл.

1. Ім’я папки (backup-xxxxx) - це “backup-” + 5 символів md5-алфавіту і це 1048576 комбінацій.

2. Ім’я файла - це ім’я бази сайта в MySQL (database) + “_” + префікс (wp) + “_” + дата створення бекапу в форматі YYYYMMDD (20070605) + “_” + число від 000 до 999 (704) + “.sql.gz”.

Ім’я бази може співпадати з доменом або папкою на сервері, де розміщений сайт (так часто роблять провайдери), тому для визначення імені бази можна використати Full path disclosure уразливість (яких велика кількість в WP).

Префікс за замовчуванням дорівнює “wp”. Якщо префікс нестандартний, то його можна дізнатися за допомогою інших уразливостей в WP, зокрема SQL DB Structure Extraction (про які я писав раніше).

Дане число від 000 до 999 - це Swatch Internet time і це 1000 комбінацій. Якщо знати точний час створення файлу бекапу, наприклад, при CSRF-атаці (про яку я ще розповім), то можна визначити дане число. Наприклад, якщо файл був створенний в 12:00:00 на сервері, то це число буде дорівнювати 500.

Так що в звичайному випадку, коли ім’я бази, префікс та дата відомі, доведеться зробити до 1048576 комбінацій (папка) + до 1000 комбінацій (файл) = до 1049576 комбінацій (повний шлях до файлу). В середньому це 524788 комбінацій, що можна достатньо швидко підібрати при швидкому Інтернет-з’єднані.

Захист від даної уразливості.

Для захисту треба зробити відповідний файл .htaccess. І розмістити, наприклад, в папці wp-content, для заборони викачування бекапів з папки з бекапами. Що я використовую відтоді як знайшов дану уразливість.

Це можна обійти за допомогою Arbitrary file deletion уразливості, про яку я писав в грудні 2007 року. Для її використання потрібно провести CSRF-атаку на адміна. Дана атака спрацює в WP-DB-Backup <= 2.0.

http://site/wp-admin/edit.php?page=wp-db-backup.php&backup=.htaccess

Якщо .htaccess розмістити в папці з бекапами, то він може бути видалений. Причому навіть з виправленою Directory Traversal - в папці з бекапами файли все рівно можна витерти. Тому .htaccess потрібно розміщувати не в папці с бекапами, а в папках вищого рівня, наприклад, в папці wp-content.

Враховуючи, що WordPress Database Backup плагін створює пусті index.php в папці з бекапами для захисту від витоку інформації про бекапи, то за допомогою Arbitrary file deletion уразливості (при CSRF-атаці на адміна) це можна обійти:

http://site/wp-admin/edit.php?page=wp-db-backup.php&backup=index.php

Тоді не доведеться вгадувати ім’я файла. Це спрацює на всіх версіях WordPress з даним плагіном (WP-DB-Backup <= 2.0).

А якщо Directory Traversal дірка не виправлена, то можна пришвидшити процес знаходження папки з бекапами (backup-xxxxx) за допомогою Arbitrary file deletion уразливості (при CSRF-атаці на адміна), та витерти index.php в папці wp-content:

Для WordPress <= 2.0.3 (WP-DB-Backup <= 1.7):

http://site/wp-admin/edit.php?page=wp-db-backup.php&backup=../index.php

Якщо бекапи створюються регулярно (щоденно), або напевно відома дата створення бекапа, то тоді можна легко його отримати. Інакше, можна вгадувати імена файлів бекапів. Або можна провести CSRF-атаку на адміна та створити бекап, про що я розповім в наступному записі.

Даний витік інформації в бекапі БД найбільш небезпечний в зв’язку з тим, що в бекапі знаходиться логін та хеш адміна. Що можуть бути використані для отримання доступу до сайта. Це було дуже актуально до виходу WordPress 2.5, в якому переробили систему авторизації, після того як Steven Murdoch звернув увагу розробників WP на Cookie Authentication уразливість в WordPress. І з версії 2.5 в WP використовується новий метод авторизації через кукіси, але навіть в нових версіях движка витік бекапів все рівно є небезпечним і його не варто допускати.

Full path disclosure:

В WP-DB-Backup мають місце дві Full path disclosure уразливості, які виникають при відповідних POST запитах. Вони працюють лише при наявності відповідних прав у користувача (зокрема у адміна).

WordPress Database Backup Full path disclosure.html

WordPress Database Backup Full path disclosure2.html

Дані уразливості працюють в плагіні WordPress Database Backup 2.0 та попередніх версіях в будь-яких версіях WordPress.

Захист від даних уразливостей.

Для захисту можна або самому виправити дані Full path disclosure уразливості (як й інші FPD в WordPress), або ж оновити плагін до останної версії WP-DB-Backup 2.2.2.

З WordPress 2.0.11 постачається версія 1.8 плагіна. Як я нещодавно перевірив, в версії 2.1 плагіна виправили Full path disclosure та інші уразливості. Тому остання версія плагіна WordPress Database Backup 2.2.2 невразлива до CSRF та до Full path disclosure (а також невразлива до раніше згаданих Directory Traversal, Arbitrary file deletion, DoS та XSS). Але остання версія плагіна все ще вразлива до Information Leakage.