COMMAND INJECTION 개요

코딩 파인애플·2026년 6월 11일

COMMAND INJECTION

목록 보기
1/1
post-thumbnail

안녕하십니까
코딩사과의 짭 코딩 파인애플입니다
이번 시간에는 COMMAND INJECTION에 관해 알아보겠습니다.

COMMAND INJECTION이란?

Command Injection (명령어를 주입하다) 은 해커가 웹사이트의 입력창에 운영체제(OS) 명령어를 주입하여 웹사이트 뒤에 있는 서버를 조작하고 무단으로 제어하는 대표적인 웹 해킹 기법을 말합니다

Command Injection은 명령어를 실행할 때 사용자가 임의의 인자를 전달할 수 있을 경우 발생됩니다

예를 들어 뭐 이딴 코드가 있다고 칩시다

#간단한 ping하는 코드
from flask import Flask, request
import os

app = Flask(__name__)

@app.route('/ping')
def ping():
    target_ip = request.args.get('ip')
    
    command = f"ping -c 1 {target_ip}"
    response = os.popen(command).read()
    
    return f"<pre>{response}</pre>"

if __name__ == '__main__':
    app.run(port=5000)

만일 정상적인 사용자가 사용한다면 간단히 ip주소를 입력하겠지만은
해커는 메타문자를 이용해 임의의 코드를 넣어 해킹을 합니다

8.8.8.8; cat /etc/passwd

이 경우 메타문자를 이용하여 바로 뒤의 코드까지 실행해 패스워드를 읽습니다

완벽히 이해한 청년.

메타문자

메타문자(Metacharacter)란, OS의 cmd나 셸에서 단순한 글자가 아니라, 특별한 기능이나 의미를 갖도록 미리 약속된 특수문자를 말합니다

특히 cmd injection에서는 해커가 이 메타문자를 주입하여, 개발자가 의도한 원래 명령어의 흐름을 끊고 자신이 원하는 추가 명령어를 실행시키면서 발생합니다.

1. 명령어 연속 실행 및 조건부 실행

; (세미콜론 - 주로 Linux) : 앞의 명령어의 성공 여부와 상관없이 뒤의 명령어를 무조건 실행합니다

ping 8.8.8.8 ; whoami

& (앰퍼샌드 - Windows/Linux 공통) : 앞의 명령어를 백그라운드에서 실행하거나, Windows에서는 단순히 두 명령어를 이어 붙여 실행합니다

ping 8.8.8.8 & dir (\rightarrow ping과 dir을 연달아 실행)

&& (더블 앰퍼샌드) : 앞의 명령어가 성공해야만 뒤의 명령어를 실행합니다.

|| (더블 파이프) : 앞의 명령어가 실패해야만 뒤의 명령어를 실행합니다.

2. 파이프와 리다이렉션

| (파이프) : 앞 명령어의 실행 '결과(출력)'를 뒤 명령어의 '입력'으로 전달합니다.

cat secrets.txt | grep "password" : 명령어의 결과를 화면이 아닌 파일로 저장합니다. (>는 덮어쓰기, >>는 이어쓰기)

echo "Hacked" > index.html

3. 기타

\n (줄바꿈) : 엔터 키를 친 것과 같은 효과를 줍니다. 눈에 보이지 않는 공백 같지만 시스템은 다음 줄의 명령어로 인식합니다.

` (백틱) : 괄호 안의 명령어를 가장 먼저 실행하고, 그 결과값을 바깥 명령어의 인자로 주입합니다.

이제 기초 여기까지고 좀 더 심화있게 가봅시다

...막상 드립 좀 치려니까 드립 칠 곳이 없었습니다 죄송합니다.
반성하는 의미로 여기에 짤 모음집을 싸지르겠습니다.
전장연 히마리니게룽 죠니ezstand 폴나레프

profile
안녕하떼요 취미로 콤푸타 배우는 고든학교 6학년 유치원생이빈다.

0개의 댓글