Command Injection
웹 애플리케이션이 외부 입력을 운영체제 명령어로 전달할 때, 입력값을 조작하여 공격자가 원하는 임의 명령어를 실행시키는 보안 취약점입니다.
시스템 명령어를 실행 할 수 있기에 리모트 코드 실행(RCE)의 한 종류라고도 할 수 있습니다.
공격자가 서버를 마음대로 할 수 있을 정도로 위험한 취약점입니다.
Command Injection이 발생하는 원인
커맨드 인젝션은 주로 사용자 입력값을 검증하지 않고, 운영체제 명령어로 넘길 때 발생합니다.
구체적으로는 아래와 같은 이유들로 발생합니다.
- 사용자의 입력을 과하게 신뢰하여 시스템 명령어에 직접 삽입할 때
- 입력값에 대한 필터링이 없거나 부족할 때
- 시스템 명령어를 사용하는 함수를 사용하여 입력값을 받을 때
위에서 말한 이유들 이외에도 여러가지 원인들이 있지만, 주로 검증 없이 외부 입력을 OS 명령어로 넘겼을 때 커맨드 인젝션이 발생한다고 요약할 수 있습니다.
Command Injection의 공격 흐름
- 웹 애플리케이션에서 공격자의 악의적인 입력을 받아들인다.
- 입력을 필터링 하지 못하여 그대로 시스템 명령어에 연결되거나 포함되어 서버가 실행한다.
- 서버의 운영체제가 명령어를 실행할 때, 입력값 안에 있던 추가 명령어가 같이 실행된다.
- 추가 명령어가 실행됨에 따라 공격자가 시스템 권한을 탈취하거나, 원하는 시스템 명령을 실행하게 된다.
Command Injection의 공격 방법
1. 명령어 구분자를 삽입하는 방법
- 운영체제는 여러 명령어를 구분하여 실행할 수 있는 메타문자를 지원합니다.
- 이를 활용하여 뒤에 악의적인 명령어를 추가하여 공격자가 원하는 명령어를 실행시킬 수 있습니다.
| 메타문자 | 설명 |
| ; | 명령어 구분자 앞뒤 명령어를 순차적으로 실행 |
| && | AND 실행 앞 명령어가 성공하면 뒤 명령어 실행 |
| || | OR 실행 앞 명령이 실패하면 뒤 명령어 실행 |
| ` ` (백틱) | 명령어 치환 백틱 안의 명령어가 먼저 실행되고, 그 값이 외부 명령어에 삽입됨. |
| & | 백그라운드 실행 &을 기준으로 앞 명령어는 백그라운드에서 실행되고, 뒤 명령어는 바로 실행됨. |
2. 명령어 연결 또는 파라미터 조작
- 명령어 구분자를 직접 입력하는 공격 기법 뿐만 아니라 원래 존재하는 명령어의 인자 부분을 조작하여 추가적인 명령어를 실행시키는 기법입니다.
- 앞선 명령어의 정상적인 명령을 방해하지 않고, 은밀하게 추가 명령을 삽입하는 경우가 많습니다.
- 메타 문자를 사용하는 경우도 많아 위 기법과 표면적으로는 비슷해 보이지만, 성격이 조금 다른 기법이라고 할 수 있습니다.
간단한 Command Injection 예시
ping [input] //input 부분에 사용자의 입력값이 들어갑니다.
8.8.8.8; whoami //이때 사용자(공격자)가 input에 이렇게 입력하면 서버에서는..
pint 8.8.8.8; whoami //이런 명령어가 실행됩니다. ping 명령어 이후에 whoami라는 명렁어가 추가로 실행되어 현재 사용자의 이름이 들어납니다.
Command Injection으로 가능한 행동
- 커맨드 인젝션이 성공한다면 공격자는 서버내에 시스템 명령어 수준의 임이의 코드를 마음껏 사용할 수 있게됩니다.
- 때문에 공격자는 거의 무제한에 가까운 권한을 얻게됩니다.
- 간단한 예시는 다음과 같습니다.
| 가능한 공격 | 설명 |
| 시스템 정보 수집 | whoami, hostname 등의 명령어 사용 |
| 파일 읽기/쓰기 | cat /etc/passwd 등 |
| 백도어 설치 | 리버스 쉘 열기 (nc, bash 등) |
| 서버 권한 탈취 | root 권한으로 명령 실행 |
| 추가적인 공격 준비 | 내부망을 탐색하거나 다른 서버로 이동 |
'보안 > 이론 정리' 카테고리의 다른 글
| 웹 해킹 - Error Based SQL Injection (0) | 2025.07.08 |
|---|---|
| HTTP 요청의 구조와 헤더의 역할 (0) | 2025.07.07 |
| 웹 해킹 - SQL Injection (0) | 2025.04.29 |
| 웹 해킹 - CSRF (0) | 2025.04.24 |
| 웹 해킹 - XSS (0) | 2025.04.15 |