본문 바로가기

웹 모의해킹

운영체제 명령 실행 취약점

✅ 1. 정의

운영체제 명령 실행 취약점은 외부 입력값에 대한 유효성 검증이 부족하거나,
개발자가 입력값을 직접 system(), exec(), shell_exec() 등 운영체제 명령 호출 함수에 넘겨줄 경우 발생하는 보안 취약점이다.
공격자는 이를 통해 임의의 명령 실행, 권한 탈취, 백도어 설치 등을 시도할 수 있다.

  • 주요 원인: 사용자 입력값을 직접 명령어에 삽입
  • 발생 환경: PHP, Python, Node.js, Java 등 대부분의 스크립트 언어

🎯 2. 공격 목적

  • 서버 아키텍처 및 운영체제 정보 수집 (예: uname -a)
  • 시스템 명령 실행을 통한 권한 상승
  • 파일 다운로드 및 백도어 설치
  • 민감 정보 유출 및 시스템 장악

🎬 3. 실습 시나리오

💻 시나리오 개요:

  • 웹 애플리케이션의 주소창에 사용되는 파라미터 q가 서버 명령과 연결되어 있음
  • 입력값 검증이 없거나 미흡한 상태
  • 공격자는 q 파라미터를 조작하여 시스템 명령을 직접 실행

📌 실습 공격 예시:https://target.site/qa.php?q=system('uname -a')

이 요청은 서버 측 코드에서 아래와 같은 PHP 코드로 처리될 가능성이 있음:

결과적으로 공격자는 uname -a 명령의 실행 결과(서버 운영체제 정보)를 응답으로 받아보게 됨.


🛡️ 4. 보안 대응방안

✅ 운영체제 명령 호출 금지

  • 사용자 입력을 OS 명령어와 직접 연결하지 않도록 설계
  • 운영체제 명령 호출이 꼭 필요하다면 입력값을 화이트리스트로 제한

✅ 특수문자 필터링

  • 명령어 연결자 및 해석자 차단 (&, ;, |, \, ', ", $, ` 등)
  • escapeshellarg() / escapeshellcmd() 등 보안 함수 사용 권장 (PHP 기준)

✅ 서버 측 필터링 필수

  • 클라이언트 측 필터링(JS 등)은 우회 가능하므로, 서버 측에서 검증 및 차단 수행
  • 입력값은 반드시 사전에 정의된 값 중에서만 선택 가능하도록 제한

✅ 보안 함수 제한

  • system(), exec(), shell_exec() 등 OS 명령 실행 함수 사용을 지양
  • 불가피할 경우, 보안 래퍼 또는 별도 인증 절차를 구성

📎 5. 관련 정보

 

 

'웹 모의해킹' 카테고리의 다른 글

SQL 인젝션  (0) 2025.06.08
버퍼 오버플로우 취약점  (0) 2025.05.30
프록시 설치(Fiddler Classic)  (0) 2025.05.30