운영체제 명령 실행 공격
(OS Command Injection, Command Injection Attack)
개념
웹에서 서버에 명령어를 전송하여 서버의 정보를 얻을 수 있는 취약점입니다.
발생 원인
사용자 입력 값에 적절한 검증절차(길이와 형식을 함께 검사)를 거치지 않아 발생하는 취약점입니다.
위험한 이유
공격자가 사용자 입력 값에 시스템 명령어를 입력하면 시스템 명령어를 실행돼 시스템내 데이터를 변조, 유출하거나 삭제해 시스템에 손상을 입힐 수 있습니다.
조치 방법
- 웹 방화벽에 모든 사용자 입력 값을 대상으로 악용될 수 있는 특수문자, 특수 구문 등을 필터링 할 수 있도록 규칙을 적용합니다.
- APP은 OS로부터 명령어를 직접적으로 호출하지 않도록 구현합니다.
- 명령어를 직접 호출하는 것이 필요한 경우에는, 데이터가 OS의 명령어 해석기에 전달되기전에 입력 값을 검증/확인하도록 구현합니다.
- 입력 값에 대한 파라미터 데이터의 "&", "|", ";", "`" 문자에 대한 필터링 처리합니다.
- 웹 서버 및 웹 APP 서버는 공개적으로 알려진 취약점이 제거된 상위 버전으로 업데이트해야합니다.
- 클라이언트에서 전송되는 요청 값에 대한 엄격한 필터링 적용 및 OGNL 표현식 사용을 금지하여 원격에서 임의의 명령어가 실행되지 않도록 구현해야 합니다.
추가 정보
& : AND를 뜻하는 문자로 A&B라고 했을 경우 A를 성공했을 경우에만 B를 실행합니다
| : OR을 뜻하는 문자로 A|B라고 했을 경우 A의 성공 여부와 상관없이 B를 실행합니다.
` : 기존 명령어를 실행하기 전에 'A`로 있을 경우 A를 먼저 실행합니다.
OGNL : Object Graph Navigation Language로 Java 객체 그래프를 탐색하고 조작하는 데 사용되는 표현식입니다.
'주요정보통신기반 시설 가이드' 카테고리의 다른 글
SSI 인젝션이란? (0) | 2024.03.17 |
---|---|
SQL 인젝션이란? (0) | 2024.03.17 |
LDAP 인젝션이란? (0) | 2024.03.17 |
포맷 스트링이란? (0) | 2024.03.17 |
버퍼 오버플로우 공격이란? (0) | 2024.03.17 |