운영체제 명령실행 이라는 취약점은, 웹에서 시스템 명령어를(system, exec) 실행 시킬 수 있는 환경을 제공한 대상에게 실행되는 취약점 입니다.
사용자 입력값에 대한 필터링이 이루어지지 않을 경우 서버의 정보를 탈취 하거나 변조 할 수 있는 취약점 입니다.
예를 들면, "IP를 탐색 해 주는 사이트", "내 DNS정보를 알려주는 사이트" 또는 "프로그래밍 코드실행이 가능한 코딩테스트 연습 사이트" 등과 같은 운영체제 명령어가 실행되는 기반의 기능이 있는 곳을 의미 합니다.
해당 취약점을 대비하는 이유는, 시스템 명령어 호출로 인한 백도어 설치 및 관리자 권한 탈취 등의 문제가 발생 할 수 있으므로 이에대한 대비가 가능 하여야 합니다.
#방법1
명령어(Command)가 실행되는 기반의 기능이라면 가장 먼저 정규식을 통하여 필요하지 않는 명령어를 제외하는 기능을 만들어야 합니다.
"exit", "cat", "shutdown" 등등, 운용체제에 문제를 일으 킬 수 있는 명령어는 삽입되지 않도록 필터하는 메소드(함수)를 만들어야 합니다.
또는 허용 가능한 명령어를 배열로 처리하여 해당 배열에 대한 값인 경우에만 실행 되도록 하면 될 것 입니다.
* Java Pattern 클래스를 통하여 정규식을 통한 금지어 제거가 필수 입니다.
https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html
물론 명령어를 받아서 실행하는 웹 어플리케이션이 많지는 않습니다.
하지만 이에 해당하는 기능을 구현 중 이라면 명령어에 대한 필터 기능은 반드시 구현되어야 할 것 입니다.
이상으로 웹 표준 취약점 중 한가지인 운영체제 명령실행(OS Command Execution) 취약점에 대해서 살펴 보았습니다.
궁금한점 또는 틀린 부분은 언제든 연락주세요! 👻
'웹 취약점(Web vulnerability)' 카테고리의 다른 글
6. SSI 인젝션(Server Side Include) (0) | 2021.11.29 |
---|---|
5. SQL 인젝션(OS Command Execution) (0) | 2021.11.29 |
3. LDAP 인젝션(Lightweight Directory Access Protocol) (2) | 2021.11.29 |
2. 포멧 스트링(Format String) (0) | 2021.11.29 |
1. 버퍼 오버플로우(Buffer Overflow) (0) | 2021.11.29 |
댓글