본문 바로가기

old/Cyber Security

사이버 보안: 운영체제 명령 실행이란?

반응형

정의

운영체제 명령 실행 취약점은 악의적인 사용자가 운영체제의 명령어를 이용하여 시스템에 악성 코드를 실행시키거나 비정상적인 동작을 유도하는 취약점입니다.

취약점 발생 지점 리스트

  • 모든 페이지
  • http request를 받았을때, 피라미터값에 따라 운영체제가 명령을 실행하는 경우

취약점 검증 방법

  • 웹 애플리케이션에 전달되는 파라미터 값에 공개적으로 알려진 운영체제 명령 실행 코드 삽입 후 명령어가 실행되는지 확인
  • Apache Struts 2 RCE(Remote Code Execution) 취약점(공개적으로 알려진 운영체제 명령 실행 코드) 참고사이트: https://cwiki.apache.org/confluence/display/WW/Security+Bulletins
  • 아래코드는 Struts 2 프레임워크의 취약점을 사용한것이며, action:%25{3\\*4}에 따라서 웹페이지가 취약하다면, 3*4인 12가 페이지에 출력됩니다.
<http://host/struts2-blank/example/X.action?action:%25{3\\*4}>

공격법

공격 시나리오

  1. 공격자가 악의적인 입력을 생성하여 시스템에 전달합니다.
  2. 취약한 부분에서 해당 입력을 운영체제 명령어로 해석하거나 명령어 실행 함수에 직접 전달합니다.
  3. 악성 코드가 실행되거나 시스템이 비정상적으로 동작하게 됩니다.

발생 과정

세부 과정 설명

  1. 공격자는 악성 입력을 생성합니다.
  2. 취약한 부분에서 입력 검증이 미흡하거나 외부 입력을 운영체제 명령어로 잘못 해석합니다.
  3. 이로 인해 악성 코드가 시스템에서 실행되거나 시스템이 비정상적으로 동작합니다.

대응방법

  • 헤더 정보 제한: http 요청 몇 응답페이지에서 버전정보가 뜨지 않도록 설정합니다.
  • http 엔티티: 사용자 입력을 운영체제 명령어의 인자로 전달하여 명령어의 실행을 안전하게 처리합니다.
  • 입력 검증 및 필터링: 사용자 입력을 신뢰할 수 있는 형태로 변환 또는 제한하여 악성 코드 삽입을 방지합니다.
  • 권한 제한: 실행 가능한 명령어의 범위를 제한하거나 명령어 실행에 필요한 권한을 제한하여 공격의 영향을 최소화합니다.
  • 적절한 명령어 실행 함수 사용: 안전한 운영체제 명령어 실행 함수를 사용하거나, 보안 검사를 수행하는 라이브러리를 활용합니다.
반응형