안녕하세요 Retain0 입니다. 이번 시간에는 " DVWA " 라는 취약한 웹 애플리케이션을 통한 Command Injection 을 해보도록 하겠습니다.
Commnad Injection 이란
-
운영체제 명령실행 이라고도 하며 웹 어플리케이션 을 통해 시스템명령어(command) 를 실행하는 공격이라고 볼수 있습니다. 사용자의 입력값에 대한 필터링이 제대로 이루어지지 않을 경우 공격자가 홈페이지에 명령어를 실행할수 있게 되므로 원하는 파일을 가져오거나, 수정, 삭제 가 이루어 질수도 있으며 백도어를 설치하여 관리자 권한을 탈취하는 등 다양한 악의적인 행위를 할수가 있습니다.
① Low
우선 소스코드를 보면서 확인해보도록 하겠습니다.
(사진 2) 소스코드를 확인해본결과 shell_exec('ping -c4 ' $target); 에서 타겟이라는 변수는 상단의 request 즉 웹 의 요청으로 부터 전달된것임을 알수있습니다.
테스트 방법은 URL 마지막에 127.0.0.1 && ls -al 또는 127.0.0.1; ls -al 을 입력하면됩니다.
127.0.0.1 && id
(사진 3) 127.0.0.1 && id 를 입력해보면 현재권한이 나오는데 (www-data)는 현재 여기서 실행하는 권한을 의미합니다. 만일 이게 root 권한으로 동작하고 있을때 " command injection " 이 발견될경우 공격자는 모든 명령어를 실행할수있기에 시스템 장악하는것은 쉬워질것입니다.
127.0.0.1 && ls -al
(사진 4) 127.0.0.1 && ls -al 입력시 실행되는 모든 디렉토리정보와 권한까지 확인할수가 있습니다. 윈도우 운영체제에서 " dir " 명령어와 비슷한 명령어로 굉장히 자주 사용되는 명령어 입니다.
② Medium
(사진 5) 소스코드를 확인해본결과 &&(엠퍼센드) 와 ;(세미콜론) 을 필터링 하고있는것을 확인할수가 있습니다. 하지만 Command Injection 공격에서는 | (파이프연산자) 도 사용이 가능합니다. 파이프 연산자는 && 와 ; 처럼 시스템상에서 멀티라인(여러줄 작성이 가능한것)을 지원하는 특수문자이기 때문입니다.
127.0.0.1 | cat /etc/passwd
(사진 6) /etc/passwd 를 통해 시스템상에서 존재하는 계정들에대한 정보를 확인할수가있습니다. 첫번째줄로 설명을 해드리자면 root(사용자이름):x(/etc/shadow에 암호화되어있다는뜻):0(uid):0(gid):root(사용자ID정보):/root(홈디렉토리):/bin/bash(명령어나 shell의 절대경로가저장되있음)
③ High
(사진 7) 을 보시면 Medium 단계보다 필터링을 견고하게 하고있는것을 확인할수가 있습니다. 하지만 해당 소스코드에는 빈틈이 있습니다. " | " 파이프 연산자쪽에보면 공백이 하나 추가되어있는것을 확인할수가 있습니다. 이러한 부분을 파악하여 파이프 연산자를 작성후 공백없이 바로 시스템명령어를 삽입하면 실행이 됩니다.
127.0.0.1 |ifconfig
(사진 8) 을 보시면 127.0.0.1 |ifconfig 처럼 공백을 없이 작성하면 정상적으로 실행하는것을 확인할수가 있습니다. 해당 시스템의 주소, MAC 주소, 등 기본구성을 알수있음
◆ 대응방안
(사진 9) 처럼 ip주소의 입력값을 받는 곳이라면 입력받는 내용이 ip 주소인지 아닌지 검증하는것이 중요합니다. 소스코드를 확인해보면 ip 라는 입력값을 . . . . 4개로 구성하고있습니다. 왜냐하면 ip주소는 123.456.789.123 처럼 4개의 필드에 숫자를 넣기 때문입니다. 또한 밑에는 들어오는 값이 숫자인지도 검증을 하고있습니다. 이외에도 각각의 폼에서 시스템 명령어가 직접적으로 호출되는것을 막아야합니다.
필수적으로 막아야하는 기호들
-
| 파이프연산자
-
&& 엠퍼센드
-
; 세미콜론
'IT Security > DVWA(Damn Vulnerable Web App)' 카테고리의 다른 글
[DVWA] insecure CAPTCHA (0) | 2020.04.23 |
---|---|
[DVWA] File Upload Vulnerability (0) | 2020.04.21 |
[DVWA] File inclusion (0) | 2020.04.20 |
[DVWA] CSRF(Cross Site Request Forgery) (0) | 2020.04.19 |
[DVWA] Brute Force Attack (1) | 2020.04.17 |