본문 바로가기

Hacking & Security/Web

운영체제 명령 실행 취약점 진단

웹 어플리케이션 취약점


1. 운영체제 명령 실행 ( OS Command Injection )


1-1) 개요


웹 어플리케이션에서는 이전에 pwnable 분야를 공부할때 쉘을 얻기 위하여 주로 이용하였던 system() , exec() 등과 같은


시스템 명령어를 실행시킬 수 있는 함수를 제공하며 사용자 입력 값에 대한 필터링이 제대로 이루어지지 않을 경우 공격자가 운영체제 시스템 명령어를 호출하여


백도어 설치관리자 권한 탈취 등 시스템 보안에 심각한 영향을 미칠 수 있는 취약점이다.


OS command Injection은 웹 서버에 OS 명령을 실행하기 위해 웹 인터페이스를 사용한다.


사용자는 웹 인터페이스를 통해 OS 명령을 실행하기 위하여 운영체제 명령어를 입력한다 , 만일 이 명령어가 제대로 필터링 되지 않는다면 웹 인터페이스는


해당 공격에 취약할 수 있다.


정리 :  OS Command Injection 취약점은 사용자가 웹 서버에 요청한 URL 뒤에 서버에게 값을 전달하기 위해 변수 값에 대하여 정상적인 


입력 값 외에 추가적으로 시스템 명령어를 삽입하여 요청하는 경우 웹 서버가 필터링 하지 못하고 이 요청을 일반 변수 값으로 인식하여 시스템 명령어가


실행되어 웹상에서 해당 명령어의 결과값을 출력하게 되는 취약점이다.



* 백도어 : 주로 백도어는 개발자가 프로그램의 유지보수에 대한 편리성을 위해 만들어 놓는다.

 이는 인증되지 않는 사용자에 의해 프로그램의 기능이 무단으로 사용될 수 있을 위협이 존재한다.


1-2) 파급효과


해당 취약점은 시스템 계정 정보 유출, 백도어 설치, 관리자 권한 탈취, 시스템 명령어 실행 등의 위험이 존재한다.


1-3 ) 운영체제 명령 실행 동작 과정


주된 공격 패턴은 다음과 같다.


위와 같이 ls , cat, dir 등의 시스템 명령어가 삽입된 url을 요청하고 , 


서버측에서 필터링 없이 변수값으로 인식할 시 Response로 해당 명령어의 결과값을 출력한다.


1-4 ) 판단 기준


점검위치 

행위 

취약반응

URL 

( 리눅스 계열 ) URL / parameter에 ls, cat 등의 명령어 삽입

( 윈도우 계열 ) URL / parameter에 dir, ipconfig 등의 명령어 삽입

운영체제 명령어 실행 결과 출력 


* url ( 각종 파라미터 ) : 파라미터는 해당 사이트의 URL에서 아래와 같은 부분을 말하며 공격자는 여러 파라미터 중 임의로


몇 가지의 파라미터에 점검을 한 후 취약여부를 판단함.


ex ) http://www.test.or.kr/board.php?search=content&login=yes&id=test



1-5 ) 대응방안


가 ) 웹 방화벽 : 모든 사용자 입력 폼 ( 로그인 폼, 검색 폼, URL ...etc )을 대상으로하여 특수문자, 특수구문 등의 필터링 규칙 적용


나 ) 웹 어플리케이션 : 웹 어플리케이션 소스코드에 시큐어 코딩 적용



'Hacking & Security > Web' 카테고리의 다른 글

소스코드 점검기준 & 취약점 - 2  (0) 2019.12.27
소스코드 점검기준 & 취약점 - 1  (0) 2019.12.27
웹 취약점 진단제거 가이드  (0) 2019.03.03
SQL Injection  (0) 2017.11.27
웹 취약점 분류  (0) 2017.11.27