yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆

커맨드 인젝션 공격 / Command injection 본문

웹/웹 해킹

커맨드 인젝션 공격 / Command injection

yehey 2020. 9. 12. 19:49

커맨드 인젝션 (command injection)

:명령어를 삽입한다

웹 요청 메시지에 임의의 시스템 명령어를 삽입하고 전송, 웹 서버에서 해당 명령어를 실행하도록 하는 공격

(웹을 통해서 시스템 명령어(command)를 실행하는 공격)

 

커맨드 인젝션 취약점

웹 애플리케이션 내부에서 시스템 명령어를 실행하는 상황에서

적절한 입력값 검사 없이 시스템 명령어의 일부분으로 전달할 때

-> 공격자가 이 값(입력값)을 조작하여 임의의 시스템 명령어를 실행할 수 있다.

 

커맨드 인젝션 예시

사용자가 IP주소를 입력했을 때 웹 서버에서 ping 명령어를 실행하고 결과를 반환하는 웹페이지가 있다.

 

ping: 입력된 IP주소의 시스템이 현재 동작중인지 확인하는 명령어

 

ping 결과를 반환하는 웹 서버

그리고 이 웹 페이지는 사용자가 입력한 값이 IP주소 형식에 적합한지 제대로 검사를 하지 않는다고 가정하자

그렇다면 공격자는 IP 주소 뒤에 다른 시스템 명령어를 추가하여 웹 서버에서 시스템 명령어를 사용할 수 있게 된다.

(원래 실행되어야 하는 ping + 공격자가 입력한 command가 같이 실행된다.)

 

커맨드 인젝션 취약점을 이용해 시스템 명령어를 추가적으로 입력했을 때

만약 공격자가 cat /etc/passwd 라는 명령어를 ip주소 뒤에 추가하여 보내면,

웹 서버는 ping과 cat 명령어를 모두 실행한 결과를 공격자에게 전달하게 된다.

결과적으로 공격자는 cat 명령어를 추가적으로 입력함으로써 사용자 정보를 얻게 된다.

 

공격자가 입력값+원하는 명령어를 실행하기 위해서는 복수의 명령어를 실행하는 특수문자를 사용해야한다.

 

명령어 구분을 위한 특수문자 (리눅스 기준)

; 앞 명령어 실행 후 뒤 명령어 실행 
&& 앞 명령어가 참일 때 뒤 명령어 실행
|| 앞 명령어가 거짓일 때 뒤 명령어 실행
| 앞 명령어의 결과를 뒤 명령어로 전달

 

' > 웹 해킹' 카테고리의 다른 글

SQL injection 실습1 (WHERE 구문 우회)  (0) 2020.09.29
Brute Force Attack + DVWA실습  (0) 2020.09.27
CSRF (크로스 사이트 요청 변조)  (0) 2020.09.18
XSS (크로스 사이트 스크립팅)  (0) 2020.09.16
SQL injection  (0) 2020.09.11
Comments