뭉크테크
Command Injection 모의해킹 본문
목차
- Command Injection 이론
- Command Injection 실습
- Command Injection 대응방안
Command Injection 이론
- OWASP TOP 10 중 1위인 Injection의 유형 중 하나로 취약한 애플리케이션을 통해 호스트 OS에 시스템 명령을 실행하는 것을 목표로 하는 공격
- 사용자 입력값에 필터링이 제대로 이루어지지 않을 경우, system(), exec()와 같은 OS 시스템 명령어를 대상 서버로 전달되어 주입하는 공격
- Command Injection을 통해 내부 데이터 탈취 및 손상, 시스템 계정 정보 유출, 백도어 설치, 관리자 권한 탈취 등으로 피해가 확산될 수 있다.
명령어 | 설명 |
; (세미콜론) | 하나의 라인에 입력된 명령어들을 성공, 실패와 관계없이 모두 실행시킨다. |
& (엠퍼센트) | 엠퍼센트로 명령어를 구분하여 앞의 명령어는 백그라운드로 실행하고 , 즉시 뒤의 명령어를 실행한다. 명령어의 성공 여부와 관계 없이 뒤 명령어는 실행된다. |
&& (더블 엠퍼센트) | 앞에 입력된 명령어가 실패하면 뒤에 있는 명령어는 실행하지 않는다. |
| (버티컬 바) | 앞에 입력된 명령어가 실행 결과를 뒤 명령어의 입력으로 넘겨준다. |
|| (더블 버티컬 바) | 앞에 입력된 명령어가 성공하면 뒤에 있는 명령어는 실행하지 않다. |
위 표는 Command Injection 공격시 다중 명령어를 입력할 수 있게 해주는 특수문자 표이다.
Command Injection 실습
- Command Injection 실습을 위해 DVWA 페이지로 들어온 모습
- 텍스트 입력란에 IP를 입력할 경우 입력한 IP를 대상으로 웹 서버에서 Ping 명령을 사용하여 출력해 주는 기능이 있다
- 레벨은 Medium으로 설정하였고, 시나리오는 아래와 같다
- IP 입력 칸에 cat /etc/passwd 명령어를 서버에 전송시켜 실행시킬 수 있게 인자값을 조작하여 전달하도록한다.
- Command Injection 공격을 수행한 모습
- 기본적인 기능인 Ping 명령을 정상적으로 출력하기 위해 일반적인 IP를 먼저 입력한 후 다중 명령을 사용할 수 있도록 해주는 특수문자인 ;(세미콜론)를 입력하고 cat /etc/passwd 명령어를 입력하여 Command Injection 공격을 수행한 결과, 아무런 결과값도 나타나지 않았다.
- 그러나 ; (세미콜론)을 & (엠퍼센트)로 치환 후, 제출한 결과 위 사진과 같이 실행된 것을 확인할 수 있었다.
- 나아가, | (버티컬 바)로도 테스트한 결과 이 또한 실행되었다.
- 이를 통해 단순히 특수문자을 바꿔서 주입하기만 해도 대상 패스워드 파일을 손쉽게 획득한 것을 확인해볼 수 있었다.
- 번외로 ; (세미콜론)과 &&(더블 엠퍼센트) 만 실행되지 않았었고, 이에 대한 원인은 아래 사진과 같다.
- 대상 서버의 php 설정 파일을 확인해본 결과, && (더블 엠퍼센트) 및 ; (세미콜론)가 입력될 경우, 공백으로 치환되는 블랙리스트를 확인해볼 수 있다. 그외는 필터링 조치가 되어있지 않아, 명령어 주입이 가능했던 것이다.
Command Injection 대응방안
- Command Injection의 경우 일반적으로 취약한 함수를 사용함으로써 취약한 환경이 만들어지기 때문에 위 사진에 보이는 함수들은 특별한 사유가 없다면 사용을 지양한다.
- 부득이하게 사용할 경우, 아래와 같이 별도의 로직을 구현하는 화이트 리스트 방식을 채택하는 경우도 있다.
- 본 Ping 명령을 수행하는 기능의 경우 특정 IP 값을 입력받는다.
- 이때, .(Dot)을 기준으로 입력값을 구분한 다음, 구분된 객체들이 숫자인지 판단한 뒤 해당 객체들의 수가 4개인지도 판단해준다.
- 이처럼 본래 목적에 맞는 입력값을 주입하였는지에 대해 별도의 로직을 구현할 수 있다.
- 대부분의 Injection 취약점들이 특수문자를 입력함으로써 문제가 발생되기 때문에 불필요한 특수문자를 필터링하는 블랙리스트 방식도 고려해볼 수 있다.
'CERT' 카테고리의 다른 글
File Upload 모의해킹 (0) | 2024.06.22 |
---|---|
CSRF 모의해킹 (1) | 2024.06.15 |
Proxy (1) | 2024.05.27 |
웹 셸 (0) | 2024.05.27 |
Vulnerability Analysis 4 (0) | 2024.05.22 |