⚡ Command Injection 실습 시뮬레이터

운영체제 명령어 삽입 취약점 실습 & 금융권 시스템 공격 체험

✅ 학습 진행도
  • 취약점 진단 완료
  • 특수문자 필터링 시작
  • | (파이프) 필터링
  • ; & : ( ) 필터링
  • 검증 통과
✏️ 코드 에디터 취약한 코드
BackupService.java 💡 replaceAll()로 특수문자 필터링 추가
💡 수정 가이드
필수 필터링 특수문자:
| (파이프) - 명령어 연결 ; (세미콜론) - 명령어 구분 & (앰퍼샌드) - 명령어 연결 : (콜론) - 드라이브/경로 ( ) (괄호) - 서브쉘 실행
replaceAll() 사용법:
date = date.replaceAll("\\|", ""); // | 제거 date = date.replaceAll(";", ""); // ; 제거 date = date.replaceAll("&", ""); // & 제거 date = date.replaceAll(":", ""); // : 제거 date = date.replaceAll("\\(", ""); // ( 제거 date = date.replaceAll("\\)", ""); // ) 제거
⚠️ 주의사항:
• | 와 ( ) 는 정규식 특수문자이므로 \\ 로 이스케이프 필요
• Runtime.getRuntime().exec() 앞에 필터링 코드 추가
• 모든 특수문자를 빈 문자열("")로 치환
📊 실시간 피드백
🎯 목표

위험한 특수문자를 필터링하여 Command Injection을 방어하세요.

  • | - 명령어 파이프
  • ; - 명령어 구분자
  • & - 명령어 연결
  • : - 경로 구분자
  • ( ) - 서브쉘
⚠️ 취약점

현재 코드는 Command Injection에 취약합니다!

공격자가 2024-01-01; del /F /Q * 를 입력하면 시스템 파일을 삭제할 수 있습니다.

📖 Command Injection이란?

운영체제 명령어 삽입(Command Injection)은 사용자 입력을 검증 없이 시스템 명령어에 전달할 때 발생하는 보안 취약점입니다.

  • 공격 원리: 특수문자(;, |, &)를 이용해 추가 명령어 실행
  • 피해 사례: 시스템 파일 삭제, 정보 유출, 악성코드 다운로드
  • 방어 방법: 입력값 검증, 특수문자 필터링, ProcessBuilder 사용
0
백업 시도
0
공격 성공
0
공격 차단
한국금융은행
백업 관리 시스템
일반 백업 모드
백업할 거래 로그의 날짜를 입력하세요 (YYYY-MM-DD)

📟 시스템 출력

📊 공격 분석
💡 사용 방법

1단계: 일반 백업 시도 (예: 2024-01-01)

2단계: "공격 모드" 활성화

3단계: Command Injection 공격 실행

🎯 공격 예시
  • ; cat /etc/passwd - 시스템 파일 조회
  • | whoami - 현재 사용자 확인
  • & dir c:\ - 디렉토리 목록
  • ; rm -rf / - 파일 삭제 (위험!)
🎯 금융권 Command Injection 공격 시나리오
  • 백업 시스템 악용: 거래 로그 백업 기능에 악의적 명령어 삽입
  • 시스템 정보 유출: /etc/passwd, 데이터베이스 설정 파일 조회
  • 데이터 삭제: 중요 거래 기록 및 백업 파일 삭제
  • 원격 제어: 백도어 설치, 원격 명령 실행
🛡️ 금융권 방어 대책
  • 입력값 화이트리스트 검증 (날짜 형식만 허용)
  • 특수문자 완전 차단 (| ; & : ( ) $ ` 등)
  • ProcessBuilder 사용 (인자 분리)
  • 최소 권한 원칙 적용
  • 명령어 실행 로깅 및 모니터링