Command Injection

이용자의 입력을 시스템 명령어로 실행하게 하는 취약점.

→ 명령어를 실행하는 함수에 이용자가 임의의 인자를 전달할 수 있을 때 발생함.

 

ex) url쿼리를 통해 전달되는 ip값을 ping 명령어의 인자들 전달

@app.route('/ping')
def ping():
	ip = request.args.get('ip')
	return os.system(f'ping -c 3 {ip}')
$ ping -c 3 1.1.1.1; id
$ ping -c 3 1.1.1.1 && id
$ ping -c 3 1.1.1.1 | id

[방어]

입력값에 대한 메타 문자의 유무 검사하거나 시스템 메타 문자를 해석하지 않고 그대로 사용하는 함수를 사용해야함.

+ Recent posts