swuforce 심화팀/워게임 스터디

Command Injection

ran831 2025. 11. 4. 19:17

커맨드 인젝션(Command Injection)

  • 사용자가 입력한 값이 그대로 시스템 명령어에 포함되어 실행되는 취약점
  • 즉, 프로그램이 사용자 입력을 제대로 검사하지 않아서 악의적인 명령이 시스템에서 실행되는 상황을 말함

 

[드림핵] Command-Injection-1 을 통한 예시

기존 코드에서 cmd= f'ping -c 3 "{host} " ' 때문에 사용자가 8.8.8.8"; cat flag.py"를 넣으면

ping -c 3 "8.8.8.8"; cat flag.py" 라는 문자열이 cmd에 들어가게 됨

 

즉, 사용자 입력이 쉘에서 추가 명령으로 해석되기 때문에 민감 파일이 노출될 가능성이 생김

 

따라서 쉘 해석을 거치지 않도록 명령과 인자를 분리하고 shell=False를 사용하는 것을 권장함

 

그 밖에도

  • 외부 명령 호출을 피하고, 라이브러리로 대체
  • 입력을 화이트리스트 방식으로 검증
  • 인자 분리
  • 최소 권한으로 프로세스 실행 및 모니터링

 

등의 방어 기법이 있다고 함