[WEB] command injection

2023. 8. 30. 18:34STUDY

320x100

injection: 악의적인 데이터를 프로그램에 입력하여 이를 시스템 명령어, 코드, 데이터베이스 쿼리 등으로 실행되게 하는 기법

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

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

- 리눅스 셸 프로그램이 지원하는 다양한 메타문자로 인해, 이용자의 입력을 제대로 검사하지 않으면 임의 명령어가 실행될 수 있다

메타문자 설명 ex
' ' 명령어 치환
' ' 안에 들어있는 명령어를 실행한 결과로 치환
$ echo `echo theori`theori
$() 명령어 치환
$() 안에 들어있는 명령어를 실행한 결과로 치환. 중복 사용 가능 ( echo $(echo $(echo theori)) )
$ echo $(echo theori)theori
&& 명령어 연속 실행
한 줄에 여러 명령어 사용하고 싶을 때 사용. 앞 명령어에서 에러가 발생하지 않아야 뒷 명령어를 실행. (local and)
$ echo hello && echo theorihellotheori
| | 명령어 연속 실행
한 줄에 여러 명령어 사용하고 싶을 때 사용. 앞 명령어에서 에러가 발생해야 뒷 명령어 실행. (local or)
$ cat / || echo theori
cat: /: Is a directory
theori
; 명령어 구분자
한 줄에 여러 명령어 사용하고 싶을 때 사용. 앞 명령어 에러 유무와 관계 없이 뒷 명령어 실행
$ echo hello ; echo theorihellotheori
| 파이프
앞 명령어의 결과가 뒷 명령어의 입력으로 들어감.
$ echo id | /bin/shuid=1001(theori)
gid=1001(theori)
groups=1001(theori)

 

 

 

 

다음은 Command Injeciton이 발생하는 코드이다.  "/flag" 파일을 읽을 수 있게 하는 코드는?

@app.route('/ping')
def ping():
	ip = request.args.get('ip')
	return os.system(f'ping -c 3 "{ip}"')

"; cat /fl*; "

 

 

 

320x100
320x100

'STUDY' 카테고리의 다른 글

[WEB] web  (0) 2023.10.12
[SYSTEM] OS  (0) 2023.10.11
computer science  (2) 2023.10.11
Docker  (0) 2023.10.11
[SYSTEM] computer architecture  (0) 2023.08.29