Làm cách nào tôi có thể đảm bảo cài đặt Bash của mình không dễ bị lỗi ShellShock nữa sau khi cập nhật?
Làm cách nào tôi có thể đảm bảo cài đặt Bash của mình không dễ bị lỗi ShellShock nữa sau khi cập nhật?
Câu trả lời:
Để kiểm tra lỗ hổng CVE-2014-6271
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
nó KHÔNG nên lặp lại từ dễ bị tổn thương.
/tmp/echo
bạn có thể xóa sau và cần xóa trước khi kiểm tra lại)
cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo
Nó nên nói từ ngày sau đó phàn nàn với một tin nhắn như thế nào cat: echo: No such file or directory
. Nếu thay vào đó, nó cho bạn biết thời gian hiện tại là gì thì hệ thống của bạn dễ bị tấn công.
bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"
nó KHÔNG nên lặp lại văn bản CVE-2014-7186 vulnerable, redir_stack
.
(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"
nó KHÔNG nên lặp lại văn bản CVE-2014-7187 vulnerable, word_lineno
.
env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"
Một kết quả vượt qua trên cái này là nó CHỈ lặp lại văn bản testing CVE-2014-6277
. Nếu nó chạy perl hoặc nếu nó phàn nàn rằng perl không được cài đặt thì đó chắc chắn là một lỗi. Tôi không chắc chắn về bất kỳ đặc điểm thất bại nào khác vì tôi không còn có bất kỳ hệ thống nào chưa được vá.
env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"
Một vượt qua cho bài kiểm tra này là nó CHỈ nên trả lại văn bản testing CVE-2014-6278
. Nếu tiếng vang của bạn trở lại hi mom
bất cứ nơi nào chắc chắn là một thất bại.
foo='() { echo not patched; }' bash -c foo
này không? Cho đến khi xuất khẩu hàm được đặt trong một không gian tên riêng biệt, chúng tôi sẽ không ngừng chạy từ một lỗi trình phân tích cú pháp sang lỗi tiếp theo.
Xuất một biến môi trường được chế tạo đặc biệt sẽ được đánh giá tự động bởi các phiên bản dễ bị tổn thương của Bash:
$ export testbug='() { :;}; echo VULNERABLE'
Bây giờ hãy thực hiện một tiếng vang đơn giản để xem Bash sẽ đánh giá mã trong $ testorms mặc dù bạn chưa sử dụng biến đó:
$ bash -c "echo Hello"
VULNERABLE
Hello
Nếu nó hiển thị chuỗi "VULNERABLE", câu trả lời là rõ ràng. Mặt khác, bạn không cần phải lo lắng và phiên bản vá lỗi của Bash vẫn ổn.
Xin lưu ý rằng nhiều bản vá đã được phát hành bởi các bản phân phối chính của Linux và đôi khi chúng không khắc phục hoàn toàn lỗ hổng. Tiếp tục kiểm tra các tư vấn bảo mật và mục CVE cho lỗi này.
export
env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello"
ShellShock thực tế là sự kết hợp của nhiều hơn một lỗ hổng của bash , và tại thời điểm này cũng có ý thức về việc khai thác lỗ hổng này , vì vậy ShellShock có thể là một vấn đề vẫn đang mở, có một luồng với các cập nhật từ RedHat về vấn đề này .
Chạy lệnh:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
Nếu đầu ra là:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test
bạn không có bất kỳ sửa chữa.
Nếu đầu ra là:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash: error importing function definition for `BASH_FUNC_x()'
test
bạn đã CVE-2014-6271
sửa
Nếu đầu ra của bạn là:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test
bạn không dễ bị tổn thương
Phần khác của kiểm tra ShellShock là kiểm tra lỗ hổng CVE-2014-7169 đảm bảo hệ thống được bảo vệ khỏi sự cố tạo tệp. Để kiểm tra xem phiên bản Bash của bạn có dễ bị CVE-2014-7169 không, hãy chạy lệnh sau:
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 11:49:58 GMT 2014
Nếu hệ thống của bạn dễ bị tấn công, thời gian và ngày sẽ hiển thị và / tmp / echo sẽ được tạo.
Nếu hệ thống của bạn không dễ bị tấn công, bạn sẽ thấy đầu ra tương tự như:
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory
Tôi đã viết một tiện ích CLI có tên ShellShocker để kiểm tra máy chủ web của bạn về các lỗ hổng trên các tập lệnh CGI. Để kiểm tra trang web của bạn, bạn sẽ chạy:
python shellshocker.py <your-server-address>/<cgi-script-path>
I E
python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi
EDIT: tiện ích này đã bị gỡ xuống, xin lỗi: '(
Bạn có thể gửi URL CGI của mình cho bài kiểm tra trực tuyến này:
gõ env x = '() {:;}; echo dễ bị tổn thương 'bash -c "echo đây là một thử nghiệm" và nếu điều này trở lại dễ bị tổn thương và đây là một thử nghiệm thì có nghĩa là máy OSX / Linux của bạn bị ảnh hưởng. Biện pháp khắc phục là cập nhật lên phiên bản bash mới nhất.