OS 명령어 주입
설명
OS 명령어 주입 취약점을 확인합니다. OS 명령어 주입 공격은 클라이언트에서 애플리케이션으로의 입력 데이터로 OS 명령어를 삽입하거나 “주입”하는 것으로 구성됩니다.
성공적인 OS 명령어 주입 공격은 임의의 명령어를 실행할 수 있습니다. 이는 공격자가 데이터를 읽고, 쓰고, 삭제할 수 있는 능력을 부여합니다. 사용자가 어떤 것으로 명령어를 실행하느냐에 따라, 여기에는 관리 기능도 포함될 수 있습니다.
이 체크는 요청의 매개변수(경로, 쿼리 문자열, 헤더, JSON, XML 등)를 수정하여 OS 명령어를 실행하려고 시도합니다. 표준 주입 및 블라인드 주입이 모두 수행됩니다. 블라인드 주입은 성공할 경우 응답에 지연을 초래합니다.
수정 방법
대상 애플리케이션 서버에서 임의의 OS 명령어를 실행할 수 있는 가능성이 있습니다. OS 명령어 주입은 시스템 전체가 손상될 수 있는 심각한 취약점입니다. 사용자 입력은 OS 명령어를 실행하는 함수의 명령어 또는 명령어 인수를 구성하는 데 절대로 사용되어서는 안 됩니다. 여기에는 사용자 업로드 또는 다운로드에서 제공되는 파일명도 포함됩니다.
애플리케이션이 아래와 같은 작업을 하지 않도록 하십시오:
- 실행을 위해 프로세스 이름에 사용자 제공 정보를 사용하지 마십시오.
- 쉘 메타문자를 이스케이프하지 않는 OS 명령어 실행 함수에서 사용자 제공 정보를 사용하지 마십시오.
- OS 명령어에 대한 인수로 사용자 제공 정보를 사용하지 마십시오.
애플리케이션은 OS 명령어에 전달될 하드코딩된 인수 집합을 가져야 합니다. 파일명이 이러한 함수에 전달될 경우, 파일명의 해시를 대신 사용하거나 다른 고유 식별자를 사용하는 것이 좋습니다. 알려지지 않은 제3자 명령어에 대한 공격 위험으로 인해 OS 시스템 명령어를 사용하는 대신 동일한 기능을 구현하는 네이티브 라이브러리를 사용하는 것이 강력히 권장됩니다.