EYEN
[드림핵 웹 해킹] STAGE 7 : COMMAND INJECTION 본문
#1 서론
- 언어별 시스템 함수
: 전달된 인자를 셸 프로그램에 전달해 명령어를 실행
예) system(“cat /etc/passwd”)호출→ 셸 프로그램에서 cat /etc/passwd을 수행
- PHP의 system
- Node JS의 child_process
- 파이썬의 os.system
- Injection: 악의적인 데이터를 프로그램에 입력하여 이를 시스템 명령어, 코드, 데이터베이스 쿼리 등으로 실행되게 하는 기법
- SQL Injection은 이용자의 입력을 데이터베이스 쿼리로 실행하게 하는 취약점
- Command Injection은 이용자의 입력을 시스템 명령어로 실행하게 하는 취약점
#2 Command Injection
이용자의 입력을 제대로 검사하지 않아서 리눅스 셸 프로그램이 지원하는 다양한 메타문자를 이용해 추가적인 명령을 내릴 수 있을 때 발생
시스템 함수를 사용하면 이용자의 입력을 소프트웨어의 인자로 전달할 수 있다.
:예) 파이썬으로 개발된 웹 애플리케이션
임의 IP에 ping을 전송→os.system(“ping [user-input]”)
임의 파일을 읽기→ os.system(“cat [user-input]”)
리눅스 셸 프로그램이 지원하는 다양한 메타 문자( &&, ;, | )를 이용해 여러 개의 명령어를 연속으로 실행시켜 셸을 획득할 수 있다
`` | 명령어 치환 ``안에 들어있는 명령어를 실행한 결과로 치환됩니다. | |
$() | 명령어 치환$() 안에 들어있는 명령어를 실행한 결과로 치환됩니다. 이 문자는 위와 다르게 중복 사용이 가능합니다 | $ echo $(echo theori)theori |
이러한 취약점을 막으려면 입력 값에 대해 메타 문자의 유무를 검사하거나 시스템 메타 문자를 해석 하지 않고 그대로 사용하는 함수를 사용해야 한다.
'Wargame > Web' 카테고리의 다른 글
[드림핵 웹 해킹] STAGE 8: File Vulnerability- download (0) | 2022.10.31 |
---|---|
[드림핵 웹 해킹] STAGE 8: File Vulnerability- upload (0) | 2022.10.31 |
[드림핵 웹해킹] STAGE 6 : NO SQL INJECTION(Blind SQL Injection) (0) | 2022.10.31 |
[드림핵 웹해킹] STAGE 6 : SQL INJECTION (0) | 2022.10.31 |
[드림핵 웹 해킹] STAGE 5 : CSRF(Cross Site Request Forgery) 크로스 사이트 요청 위조 (0) | 2022.10.31 |