운영체제 명령 실행 취약점
(OS Commend Execution)
① 개념
- 적절한 검증 절차(필터링 등)를 거치지 않은 사용자 입력값이 운영체제 명령어의 일부 또는 전부로 구성되어 실행되는 경우, 의도되지 않은 시스템 명령어가 실행되어 운영에 악역향을 끼치는 취약점
- (취약점) 웹 애플리케이션에서 시스템 명령어(system(), exec() 등)를 실행할 수 있는 함수를 제공하며, 사용자 입력값에 대한 필터링이 제대로 이루어지지 않을 경우 발생한다.
- (공격 결과) 시스템 계정 정보 유출, 백도어 설치, 관리자 권한 탈취 등의 공격을 수행한다.
② 공격 과정
- 공격자는 입력 폼에 시스템 명령어를 삽입한다.
- 같은 리눅스 명령어가 실행될 수 있는 페이지(ex. ip 입력시, ping 명령을 테스트한 결과를 반환하는 페이지)에다가 입력값과 명령어를 연속해서 실행하는 특수문자 (;,&&,||, |) , 공격자가 넣을 시스템 명령어를 넣어 실행
- (ex. 127.0.0.1; cat /etc/passwd)
- 해당 요청은 URL 파라미터에 포함되어 서버에 전달된다.(웹 프록시를 통한 요청 메시지에서 확인 가능)
- 시스템 명령 실행 결과가 응답된다.
- PHP의 경우 사용할 수 있는 명령어는 다음과 같다.
- shell_exec(cmd),passthru(cmd),exec(cmd),system(cmd)
③ 취약점 판단 기준
- 운영체제 명령 실행 취약점이 발생할 수 잇는 입력 가능한 폼에 명령어를 삽입하여 해당 명령어가 실행되면 취약한 것으로 판단.
- [리눅스/유닉스] url 파라미터에 ls, cat 등과 명령어 삽입
- [윈도우] url 파라미터에 dir, config 등의 명령어 삽입
④ 대응책
- (입력값 필터링) 사용자 입력값에 대해 운영체제 명령어를 실행할 수 있는 문자열 (;,&&,|,|| 등)을 필터링하도록 웹 소스를 작성핸다.
- (보안장치 필터링) 웹 방화벽 등 필터링이 가능한 보안장치를 운영중이라면 룰셋(필터릿 정책)을 적용한다.
- (화이트리스트) 웹 애플리케이션 운영상 운영체제 명령어를 사용해야 한다면 허용할 수 있는 명령어리스트를 선정해 해당 명령어만 실행할 수 있도록 한다.
'정보보안 > 애플리케이션 보안' 카테고리의 다른 글
[웹 애플리케이션 취약점] 파일 다운로드 취약점 (1) | 2024.11.16 |
---|---|
[웹 애플리케이션 취약점] 파일 업로드(File Upload) 취약점 (0) | 2024.11.16 |
[웹 애플리케이션 취약점] XSS CSRF SSRF (1) | 2024.11.15 |
[웹 애플리케이션 취약점] SQL Injection 취약점 (5) | 2024.11.15 |
[애플리케이션 기본학습] DHCP 프로토콜 (0) | 2024.11.15 |