OS 명령 주입이란 무엇인가요?
OS 명령 주입은 셸 주입이라고도 합니다. 이 공격을 통해 공격자는 애플리케이션이 실행 중인 서버에서 운영 체제(OS) 명령을 실행할 수 있으며, 일반적으로 애플리케이션과 그 데이터를 완전히 손상시킬 수 있습니다. 공격자는 OS 명령 주입 취약점을 이용하여 호스팅 인프라의 다른 부분을 손상시키고, 신뢰 관계를 악용하여 조직 내 다른 시스템으로 공격을 확산시킬 수 있습니다.
유용한 명령어
운영체제 명령 주입 취약점을 발견한 후에는 몇 가지 초기 명령어를 실행하여 시스템 정보를 얻는 것이 유용합니다. 다음은 Linux 및 Windows 플랫폼에서 유용한 몇 가지 명령어에 대한 요약입니다.
| 명령의 목적 | 리눅스 | 윈도우 |
| 현재 사용자의 이름 | whoami | whoami |
| 운영 체제 | uname -a | ver |
| 네트워크 구성 | ifconfig | ipconfig /all |
| 네트워크 연결 | netstat -an | netstat -an |
| 실행 중인 프로세스 | ps -ef | tasklist |
OS 명령 주입
이 예시에서 쇼핑 애플리케이션은 사용자가 특정 매장에 상품 재고가 있는지 여부를 확인할 수 있도록 합니다. 이 정보는 URL을 통해 접근할 수 있습니다.
https://insecure-website.com/stockStatus?productID=381&storeID=29
재고 정보를 제공하기 위해 애플리케이션은 다양한 기존 시스템을 조회해야 합니다. 예전에 만든 이유로 해당 기능은 제품 ID와 매장 ID를 인수로 사용하여 셸 명령어를 호출하는 방식으로 구현되었습니다.
stockreport.pl 381 29
이 명령은 지정된 품목의 재고 현황을 출력하여 사용자에게 반환합니다.
OS 명령어 주입 - 계속
이 애플리케이션은 운영체제 명령 주입 공격에 대한 방어 기능을 구현하지 않았으므로 공격자는 다음과 같은 입력을 제출하여 임의의 명령을 실행할 수 있습니다.
& echo aiwefwlguh &
이 입력값이 매개변수로 제출되면 productID애플리케이션에서 실행되는 명령은 다음과 같습니다.
stockreport.pl & echo aiwefwlguh & 29
이 echo명령은 입력된 문자열을 출력에 그대로 출력합니다. 이는 일부 유형의 OS 명령 주입 공격을 테스트하는 데 유용한 방법입니다. &문자는 셸 명령 구분자입니다. 이 예제에서는 세 개의 명령이 순차적으로 실행됩니다. 사용자에게 반환되는 출력은 다음과 같습니다.
Error - productID was not provided
aiwefwlguh
29: command not found
출력된 세 줄은 다음을 보여줍니다.
- 원래 stockreport.pl명령은 예상되는 인수 없이 실행되었으므로 오류 메시지가 반환되었습니다.
- 주입된 echo명령이 실행되었고, 제공된 문자열이 출력에 그대로 출력되었습니다.
- 원래 인수가 29명령으로 실행되어 오류가 발생했습니다.
삽입된 명령 뒤에 추가적인 명령 구분자를 배치하는 것은 &삽입된 명령과 그 뒤의 내용을 분리하는 데 유용합니다. 이렇게 하면 뒤의 내용이 삽입된 명령의 실행을 방해할 가능성을 줄일 수 있습니다.

1. 버프슈트->프록시 -> 오픈 브라우저 -> 인터셉트 오프 -> 연구실 페이지를 버프 슈트 브라우저로 연다.
2. 제품 페이지를 방문하여 "재고 확인"을 클릭한 다음, Burp Suite에서 해당 요청을 가로채서 Burp Repeater로 보냅니다.



4. 매개변수를 수정하여 storeID값을 지정하십시오 1|whoami.
- | 기호를 URL 인코딩한 값인 %7c를 사용하세요.
- Burp Suite에서 |를 입력한 후, 해당 글자만 드래그해서 **Ctrl + U**를 누르면 자동으로 %7c로 인코딩됩니다.
응답에 현재 사용자의 이름이 포함되어 있음을 확인하십시오.

'웹 해킹 > portswigger' 카테고리의 다른 글
| 버프슈트를 이용한 웹 해킹, 인증 취약점: 인증 취약점 (0) | 2026.04.01 |
|---|---|
| 버프슈트를 이용한 웹 해킹, 서버 측 취약점: SQL 인젝션(SQLi) (0) | 2026.03.31 |
| 버프슈트를 이용한 웹 해킹, 서버 측 취약점: 파일 업로드 취약점 (0) | 2026.03.30 |
| 버프슈트를 이용한 웹 해킹, 서버 측 취약점: 서버 측 요청 위조(SSRF, Server-side request forgery) (0) | 2026.03.30 |
| 버프슈트를 이용한 웹 해킹, 서버 측 취약점: 인증 authentication (0) | 2026.03.29 |