-
<WEB Hacking> Command InjectionWEB Hacking 2021. 12. 22. 12:15
■Command Injection
이용자의 입력을 시스템 명령어로 실행하게 하는 기법으로, 명령어를 실행하는 함수에 이용자가 임의의 인자를 전달할 수 있을 때 발생
ex) Python으로 개발된 웹 애플리케이션에서 입력한 임의의 IP에 ping을 전송
os.system("ping [user-input]")
ex) Python으로 개발된 웹 애플리케이션에서 임의의 파일을 읽기
os.system("cat [user-input]")
위와 같은 함수를 사용할 때, 이용자의 입력을 제대로 검사하지 않으면 임의 명령어가 실행될 수 있음
=> 리눅스 셸 프로그램이 지원하는 다양한 메타 문자 때문
ex) 메타 문자
메타 문자 설명 ex `` 명령어 치환
`` 안에 들어있는 명령어를 실행한 결과로 치환$ echo `echo woong`
woong$() 명령어 치환
$()안에 들어있는 명령어를 실행한 결과로 치환
위와 다르게 중복 사용이 가능$ echo $(echo woong)
woong&& 명령어 연속 실행
한 줄에 여러 명령어를 사용하려 할 때 사용
앞 명령어에서 에러가 발생하지 않아야 뒷 명령어 실행$ echo hi && echo woong
hi
woong|| 명령어 연속 실행
한 줄에 여러 명령어를 사용하려 할 때 사용
앞 명령어에서 에러가 발생해야 뒷 명령어 실행$ cat / || echo woong
/: Is a directory
woong; 명령어 구분자
한줄에 여러 명령어를 사용하려 할 때 사용
앞 명령어의 에러 유무에 상관없이 뒷 명령어 실행$ echo hi; echo woong
hi
woong| 파이프
앞 명령어의 결과가 뒷 명령어의 입력으로 들어감$ cat /etc/passwd | grep mail
각 계정 정보 중에서 mail이라는 문자열이 들어간 라인만 출력이 취약점을 막기위해
개발자는 입력 값에 대해 메타 문자의 유무를 철저히 검사하거나,
시스템 메타 문자를 해석하지 않고 그대로 사용하는 함수를 사용해야 함
'WEB Hacking' 카테고리의 다른 글
<WEB Hacking> ServerSide: SSRF (0) 2022.01.05 <WEB Hacking> File Vulnerability (0) 2021.12.23 <WEB Hacking> NoSQL Injection (0) 2021.12.20 <WEB Hacking> SQL Injection (0) 2021.12.20 <WEB Hacking> ClientSide: CSRF (0) 2021.12.17