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

  #467  
Старый 13.08.2011, 13:07
XAMEHA
Новичок
Регистрация: 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
 
Ответить с цитированием