-
03-03. Server Side Attack - Command Injection해킹/웹해킹 이론 2023. 11. 21. 21:04
이용자의 입력을 시스템 명령어로 실행하게 하는 취약점을 Command Injection이라고 부른다. 우리가 shell에서 cat를 입력해 file을 볼 수 있듯이 system함수에 "cat file_name"을 전달 해 같은 동작을 수행할 수 있다. 이렇게 system 함수에 전달되는 값이 사용자의 입력으로 들어올 때 우리는 command injection을 시도할 수 있다.
이는 리눅스 셸 프로그램이 지원하는 메타 문자 때문이다.
메타문자 구분 설명 Example `` 명령어 치환 ``안에 들어있는 명령어를 실행한 결과로 치환 $ echo `echo theori`
theori$() 명령어 치환 $()안에 들어있는 명령어를 실행한 결과로 치환됩니다. 이 문자는 위와 다르게 중복 사용이 가능합니다. (echo $(echo $(echo theori))) $ echo $(echo theori)
theori&& 명령어 연속 실행 앞 명령어에서 에러가 발생하지 않아야 뒷 명령어를 실행합니다. (Logical And) $ echo hello && echo theori
hello
theori|| 명령어 연속 실행 앞 명령어에서 에러가 발생해야 뒷 명령어를 실행합니다. (Logical Or) $ cat / || echo theori
cat: /: Is a directory
theori; 명령어 구분자 ;은 단순히 명령어를 구분하기 위해 사용하며, 앞 명령어의 에러 유무와 관계 없이 뒷 명령어를 실행합니다. $ echo hello ; echo theori
hello
theori| 파이프 앞 명령어의 결과가 뒷 명령어의 입력으로 들어갑니다. $ echo id | /bin/sh
uid=1001(theori) gid=1001(theori) groups=1001(theori)'해킹 > 웹해킹 이론' 카테고리의 다른 글
02-01. Client Side Attack 중급 - XSS Filtering Bypass (1) 2023.11.24 03-04. Server Side Attack - File Vulnerability (1) 2023.11.21 03-02. Server Side Attack - Non-Relational DBMS (0) 2023.11.21 03-01. Server Side Attack - Relational DBMS (0) 2023.11.21 02. SOP 원칙 및 Client Side Attack (0) 2023.11.18