명령어 주입 (Command Injection)
Command Injection
Last updated
Command Injection
Last updated
# Unsafe os.system code
import os
from flask import request
@app.route('/command')
def unsafe_command():
command = request.args.get('command')
os.system(command)
return "Command executed"# Safe subprocess code
import subprocess
from flask import request, abort
@app.route('/command')
def safe_command():
command = request.args.get('command')
if command not in ['ls', 'pwd']: # 허용된 명령어만 실행
return abort(400, description="Invalid command")
result = subprocess.run([command], capture_output=True, text=True)
return result.stdout# Unsafe paramiko code
from flask import request
from paramiko.client import SSHClient
@app.route('/paramiko')
def paramiko():
client = SSHClient()
client.connect("example.com", username=USER, password=PASS)
client.exec_command(request.args.get("cmd")) # Noncompliant# Safe paramiko code
import subprocess
from flask import request, abort
from paramiko.client import SSHClient
@app.route('/paramiko')
def paramiko():
client = SSHClient()
client.connect("xeize.com", username=USER, password=PASS)
health_cmd= "/bin/ping -c 3 -- %s"
cmd = health_cmd % shlex.quote(request.args.get('host'))
client.exec_command(cmd)