내 서버가 ShellShock 버그에 취약한 지 테스트하는 방법


80

업데이트 후 Bash 설치가 더 이상 ShellShock 버그에 취약하지 않게 하려면 어떻게해야합니까?



bash에는 여전히 패치되지 않은 두 가지 취약점 (CVE-2014-7186 및 CVE-2014-7187)이 있습니다.
Deer Hunter

Deer Hunter가 자신의 의견을 게시 한 후 CVE-2014-7186 및 CVE-2014-7187을 수정하는 패치를 사용할 수 있습니다. CVE-2014-7169 용 배포 패치를 이미 가지고 있다면 이미 7186/7187을 차단하기에 충분할 수 있습니다. 아래 명령으로 시스템을 테스트하고보십시오. 또한 배포판에 대한 추가 보안 업데이트가 있는지 확인하십시오.
BeowulfNode42

답변:


83

CVE-2014-6271 취약성을 확인하려면

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

취약한 단어를 되돌려 보내면 안됩니다.


CVE-2014-7169 취약성을 확인하려면
(경고 : 실패하면 나중에 /tmp/echo삭제할 수 있고 다시 테스트하기 전에 삭제해야하는 파일을 덮어 쓰게 됩니다.)

cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo

날짜라는 단어를 말한 다음과 같은 메시지를 표시해야합니다 cat: echo: No such file or directory. 대신 현재 날짜 시간이 무엇인지 알려 주면 시스템이 취약합니다.


CVE-2014-7186을 확인하려면

bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"

텍스트를 에코하지 않아야합니다 CVE-2014-7186 vulnerable, redir_stack.


CVE-2014-7187를 확인하려면

(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"

텍스트를 에코하지 않아야합니다 CVE-2014-7187 vulnerable, word_lineno.


CVE-2014-6277을 확인하려면 더 이상 액세스 할 수없는 부분적으로 패치 된 시스템에 의존하는 것 같기 때문에 100 % 확신 할 수 없습니다.

env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"

이것에 대한 통과 결과는 단지 텍스트를 에코하는 것 testing CVE-2014-6277입니다. 그것이 perl을 실행하거나 perl이 설치되지 않았다고 불평하는 경우에는 반드시 실패입니다. 패치되지 않은 시스템이 더 이상 없기 때문에 다른 장애 특성에 대해서는 잘 모르겠습니다.


CVE-2014-6278을 확인하려면 다시 한 번 패치되지 않은 시스템이 없기 때문에이 테스트가 100 % 확실하지 않습니다.

env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"

이 테스트의 통과 점은 텍스트 만 다시 에코해야한다는 것 testing CVE-2014-6278입니다. 당신이 hi mom어디에서나 다시 울리면 그것은 확실히 실패입니다.


1
여기에 일반적인 테스트 foo='() { echo not patched; }' bash -c foo를 추가 할 수 있습니까 ? 함수 내보내기가 별도의 네임 스페이스에 저장 될 때까지 한 파서 버그에서 다음 파서 버그로의 실행을 중단하지 않습니다.
billyw

그 시험에 CVE가 있습니까? 이 문제를 설명하기위한 참고 자료가 있습니까? 또한 이러한 종류의 정보는 기존의 패치의 성공 또는 실패를 테스트하는 방법에 대한 Q로 인해 쉘 쇼크에 대한 다른 질문 중 하나에 속할 수 있습니다.
BeowulfNode42

곧 출시 될 Shellshock CVE ( lcamtuf.blogspot.com/2014/09/… ) 에 대한 Michal Zalewski의 블로그 게시물에서 발췌 한 것 입니다. 아직 공개되지 않은 CVE-2014-6278에 대한 그의 제안 된 테스트입니다. 그러나 테스트의 일반성에 대해서는 잘못된 것 같습니다. Zalewski의 테스트는 통과했지만 CVE-2014-7187 테스트는 실패한 경우가 이미 있습니다.
billyw

다음은 CVE-2014-6277 및 CVE-2014-6278에 대한 전체 공개와 함께이를 확인하는 명령입니다. seclists.org/fulldisclosure/2014/Oct/9
billyw

한 가지 참고 사항 : BASH 버전이 취약한 경우에도 BASH를 사용하지 않는 경우 (예 : "www"또는 "cups"등 데몬이 사용하는 모든 계정)가 BASH를 기본 셸로 구성한 경우 코드가 취약한 버전을 갖는 system () 등을 호출하면 덜 위험 할 수 있지만 여전히 가능한 한 빨리 BASH를 업그레이드하십시오.
DTK

32

취약한 버전의 Bash에서 자동으로 평가할 특수하게 조작 된 환경 변수를 내 보냅니다.

$ export testbug='() { :;}; echo VULNERABLE'

이제 간단한 에코를 실행하여 변수를 직접 사용하지 않았더라도 Bash가 $ testbug의 코드를 평가하는지 확인하십시오.

$ bash -c "echo Hello"
VULNERABLE
Hello

"VULNERABLE"문자열이 표시되면 답이 분명합니다. 그렇지 않으면 걱정할 필요가 없으며 패치 된 Bash 버전은 정상입니다.

주요 Linux 배포판에서 여러 패치가 릴리스되었으며 때때로 취약점을 완전히 수정하지는 않습니다. 이 버그에 대한 보안 권고와 CVE 항목 을 계속 확인하십시오 .


5
CVE-2014-6271 외에도 Red Hat의 불완전한 수정 사항에는 다음과 같은 가치가 있습니다. CVE-2014-7169 .
DocMax

3
쉘 환경을 오염시키지 않고 '대체 로그인 쉘을 사용하고있는 경우에도 ('모름은 알 수 없음 export) 다음과 같이 env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello"
작동하는 단일 라이너

1
여기 askubuntu.com/questions/528101/…에 대한 우분투 관련 세부 사항이 있습니다. 개인적
으로이

2

셸 쇼크가 실질적이다 bash는 하나 개 이상의 취약점의 결합 , 그리고 지금이 순간에이 취약점을 악용하는 malaware이 셸 쇼크가 아직 열려 문제가 될 수 있도록하는이 이 문제에 대한 레드햇의 업데이트와 스레드 .

Redhat은 다음을 권장합니다.

명령을 실행하십시오.

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"

출력이 다음과 같은 경우 :

$ 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

당신은 어떤 수정이 없습니다.

출력이 다음과 같은 경우 :

$ 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

너는 CVE-2014-6271고쳤다

출력이 다음과 같은 경우 :

$ 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

당신은 취약하지 않습니다.

ShellShock 검사의 다른 부분은 CVE-2014-7169 취약성 검사로 시스템이 파일 생성 문제로부터 보호되는지 확인합니다. Bash 버전이 CVE-2014-7169에 취약한 지 테스트하려면 다음 명령을 실행하십시오.

$ 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

시스템이 취약한 경우 시간과 날짜가 표시되고 / tmp / echo가 생성됩니다.

시스템이 취약하지 않은 경우 다음과 유사한 출력이 표시됩니다.

$ 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

2

CGI 스크립트의 취약점에 대해 웹 서버를 테스트하기 위해 ShellShocker 라는 CLI 유틸리티를 작성했습니다. 사이트를 테스트하려면 다음을 실행하십시오.

python shellshocker.py <your-server-address>/<cgi-script-path>

python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi

편집 :이 유틸리티가 중단되었습니다, 죄송합니다 : '(


귀하의 링크는 죽었습니다
SSK

@SSK 죄송합니다.) 잘못 입력했습니다.
Liam Marshall

귀하의 링크는 여전히 죽었습니다.
Mxx

네, 죄송합니다. 내가 싫어하는 방식으로 악용되었습니다.
Liam Marshall

1

이 온라인 테스트에 CGI URL을 제출할 수 있습니다.

http://shellshock.iecra.org


4
다운 보트에 대한 이유를 제공하는 것이 예의입니다.
David

4
"모든 스캔을 기록합니다"??? 소름 파이썬을 다운로드하여 직접 실행했습니다.
브래드

1
@brad 적어도 그들은 당신에게 말하고 있습니다. 이 서비스를 제공하는 화이트 햇 보안 서비스를 제공하는 경우 얼마나 많은 사람들이 자신의 사이트 세부 정보를 맹목적으로 웹 사이트에 입력했는지에 대한 로그 (개인 세부 정보가없는 카운터 인 경우)를 보관할 수 있다고 확신합니다 테스트를 제공하는 사이트의 진위에 대해 많이 알지 못하고 침투 테스트를 시도하고 ... 누군가 자신의 서비스를 사용하여 다른 사람에게 속한 취약한 사이트를 찾은 경우 누가 테스트했는지 로그를 원할 것입니다 ...
Rob Moir

-1

env x = '() {:;} 유형; echo weak 'bash -c "echo 이것은 테스트입니다". 이것이 취약성을 리턴하고 테스트 인 경우 OSX / Linux 시스템에 영향을 미칩니다. 해결책은 최신 버전의 bash로 업데이트하는 것입니다.


6
왜 루트로? 완전히 불필요합니다.
Mat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.