본문 바로가기

웹해킹

웹해킹 #13 알려진 취약점을 이용한 공격 - 메타스플로엣을 활용한 PHP-CGI 취약점 + 알려진 취약점 공격 대응

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

- PHP 버전 5.3.125.4.2 이전 버전(오래된 버전)에 소스코드가 노출되거나 공격자가 임의의 코드를 실행할 수 있는 취약점(CVE-2012-1823) 존재
-
요청 URI의 쿼리스트링 부분을 잘못 처리함으로써 발생됨

- bWAPP/admin/ 경로에서 PHP-CGI 취약점 공격 실습 가능

 

실습 : PHP-CGI 취약점에 의해 소스코드가 노출될 수 있는 것을 확인하고, 메타스플로잇 프레임워크를 이용하여 리버스 쉘 획득

 

<소스코드 노출>

 

- 웹 브라우저를 이용하여 /bWAPP/admin/ 경로로 접속 ->관리자 포털 페이지
-
웹 브라우저 주소창에서 경로 뒤에 추가로 ? 를 입력한 후 쿼리스트링 부분에 -s 입력

 

192.168.56.102/bWAPP/admin/?-s

 

- admin 페이지의 PHP 소스코드가 출력됨
- PHP
웹 애플리케이션은 PHP로 작성된 코드가 서버에서 실행된 후, 그 결과가 HTML이나 자바스크립트의 형태로만 웹페이제에 표시되어야 함
PHP 소스코드 노출 시, 웹 애플리케이션의 내부 로직이 드러나고, 공격자가 이를 분석하여 이차 공격 시도 가능

 

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

 

- 이 취약점을 이용하여 임의의 코드 실행 가능

 

* 메타스플로잇 (Metasploit) : 종합 익스플로잇 프레임워크이며, 웹 모의해킹뿐만 아닌 시스템 해킹을 비롯한 모든 분야의 모의해킹 수행하는 데 사용되는 소프트웨어

 

- 메타스플로잇을 이용하여 공격에 성공하면, 대개 그 결과로 쉘 흭득

* 메타스플로잇의 공격 과정

 

search 명령어 : 공격 모듈 검색

search php_cgi

- php_cgi_arg_injection 모듈이 검색되었음

 

use 명령어 : 공격 모듈 설정 단계로 진입

option 설정 : show options 명령어로 옵션을 확인하고 set 명령어로 필요한 옵션 설정

- 각 옵션의 이름(Name), 현재 설정(Current, Setting), 필수 옵션 여부(Required), 옵션 설명(Description) 이 출력됨
-
옵션들 중 필수 옵션은 모듈을 사용하기 위해 필수적으로 설정해야 하는 옵션들이며, 기본값이 이미 지정되어 있는 경우에는 그 값을 그래도 사용해도 됨 (상황 따라 설정 변경 필요하기도 함)

 

* 필수 옵션 중 RHOST 옵션은 기본값이 설정되어 있지 않음
RHOST는 공격 대상의 IP 주소를 설정하는 옵션으로, bWAPP의 주소 설정
-
필수는 아니지만 공격에 성공하기 위해 별도로 설정해야 하는 옵션
TARGETURI 옵션 : 취약점이 존재하는 경로 설정 (취약점이 /bWAPP/admin/ 경로에 있어서)
-
옵션 설정은 set 명령어를 이용해서 실행

④ 공격에 성공하게 되면 실행할 페이로드(payload)를 설정. 일반적으로 바인드 쉘이나 리버스 쉘 등 쉘을 획득하는 페이로드 설정

- show payloads 명령어로 페이로드 목록 확인

- 이 중 리버스 쉘을 생성하는 generic/shell_reverse_tcp 페이로드 사용

- set payload 명령어로 페이로드 지정하고, 그 다음 show options 명령어로 페이로드를 위한 옵션 다시 확인

- 일반적으로 리버스 쉘 페이로드의 경우 LHOSTLPORT 옵션 설정하도록 되어 있음
LHOSTLPORT는 리버스 쉘에서 접속을 기다리게 될 로컬 호스트의 IP 주소와 포트
- set
명령어로 LHOST에 칼리 리눅스의 IP 주소 입력하고 LPORT는 지정되어 있는 기본값 혹은 원하는 포트 새로 지정

- 페이로드 설정을 마친 후 show options를 통한 최종 옵션 설정 확인

run 명령어 : 공격 수행

- 공격이 자동으로 진행된 후 공격에 성공하면 쉘이 생성됨
- www-data
사용자의 권한 획득

 

⑥ 공격에 성공하면 페이로드가 실행되고 이후 포스트 익스플로잇 과정 수행
-
공격자는 이후 루트 권한을 획득하기 위한 권한 상승 공격을 시도함 (2장의 웹 공격 단계 섹션 참고)

4. 알려진 취약점 공격 대응

- 취약한 소프트웨어를 최신 버전 또는 취약점이 수정된 버전으로 업데이트하여 대응 가능
-
운영체제에서 제공하는 구성 요소에 취약점이 존재하는 경우에는, 사용자가 개별 패키지를 직접 컴파일하여 업데이트하지 않더라도, 대다수의 운영체제가 자동 업데이트 방식을 포함하여 패키지 업데이트를 위한 방법을 별도로 제공하고 있음 시스템 항상 최신 업데이트 상태로 유지
-
오픈 소스 사용 시 각 오픈소스에 대한 관리 필요! 오픈소스의 구성요소를 분석하고 나열하고, 모니터링하며, 항상 최신 패치가 적용될 수 있도록 관리하는 프로세스 정립
- OWASP Dependency-Check
를 이용하면 오픈소스 라이브러리를 찾고, 각 라이브러리의 알려진 취약점 정보 확인 가능
→ 알려진 취약점을 확인할 수 있는 소프트웨어를 CI/CD에 포함해 개발 프로세스 자동화를 구축