# 커맨드 인젝션 #
: 웹을 통해 시스템명령어(command)를 실행하는 공격
(SQL 인젝션과 더불어 인젝션 리스크와 관련된 주요 공격 기법.)
커맨드 인젝션을 통해 해커가 웹내부에서 시스템 명령어를 실행할 수 있어 심각한 영향을 초래할 수 있다.
(ping : 입력된 ip주소의 시스템이 현재 동작하고 있는지 확인할 때 사용하는 커맨드)
è ip주소뒤에 ;을 붙인뒤 원하는 커맨드를 추가하면 시스템이
명령어입력으로 인식하여 해커가 입력한 시스템 명령어까지 실행한다.
++ ip주소만 입력했을 때
++ low단계에서 커맨드 인젝션
입력창에 127.0.0.1;cat /etc/passwd 라고 입력
ping명령어 외에도 cat /etc/passwd를 실행했다.
---이때 웹페이지의 코드를 확인해보자
ping 명령어 뒤에 붙을 ip주소 입력값에 대한 검증코드가 없으므로
세미콜론을 붙여 다른 커맨드를 실행할 수 있다.
++ medium 단계에서의 커맨드 인젝션
low단계에서는 127.0.0.1;cat /etc/passwd에 대한 결과값이 출력되었으나
medium단계에서는 출력되지 않는다.
이때의 소스코드를 확인해보자.
&&와 ;가 입력값에 들어있다면 입력값을 삭제하도록 처리했음을 알 수 있다.
다른 기호 (ex/ &)를 사용할 시 추가적인 커맨드가 처리됨을 확인할 수 있다.
++ high 단계에서의 커맨드 인젝션
바로 코드를 확인해보자.
더 많은 문자가 필터링 되어있음을 알 수 있다.
역시 코드에서 필터링하지 않은 다른 기호를 ip주소뒤에 붙인 다음 커맨드를 입력하면 실행가능하다.
(위에서 “|”뒤에 “ ”(띄어쓰기)가 되어있음을 알 수 있다.
따라서 띄어쓰기 없이 |로 연결하면 커맨드를 실행할 수 있다.)
++ impossible 단계에서의 커맨드 인젝션
(커맨드 인젝션 공격 대응 / 사용자의 입력값이 원래의도에 맞는지 검사하는 것)
어떤 우회기법도 가능하지 않다.
코드를 확인해보자
숫자.숫자.숫자.숫자 (정수)형식(= ip형식) 만 입력가능하도록 필터링 했음을 알 수 있다.
'about Security > 웹보안과 해킹' 카테고리의 다른 글
[웹해킹 실습] # 파일 인클루전 공격 (0) | 2020.11.12 |
---|---|
[웹해킹] # 파일 인클루젼 공격 (0) | 2020.11.12 |
[웹해킹문제풀이] # webhacking.kr 워게임 18번 (0) | 2020.10.04 |
[웹해킹] # sqlmap 자동화 공격 (0) | 2020.10.03 |
[웹해킹] # 블라인드 SQL 인젝션_level.low (0) | 2020.10.03 |
댓글