Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

뭉크테크

Command Injection 모의해킹 본문

CERT

Command Injection 모의해킹

뭉크테크 2024. 6. 15. 19:29

목차

  • 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 대응방안

https://velog.io/@inmo/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