프로젝트/DVWA 실습

DVWA 실습 #3-1 - Command Injection(low)

하루히즘 2021. 1. 5. 21:56

2021/01/05 - [프로젝트/DVWA 실습] - DVWA 실습 #3 - Command Injection

 

DVWA 실습 #3 - Command Injection

DVWA의 두 번째 실습 대상인 Command Injection이다. 주어진 IP 주소로 ping 명령을 수행하는 시스템이며 이를 이용하여 커맨드 인젝션을 실습해볼 수 있다. 커맨드 인젝션? 커맨드 인젝션이란 사용자가

haruhiism.tistory.com

문제 해결 방법

Low 단계에서는 입력에 대한 아무런 필터링도 없기 때문에 단순히 세미콜론 하나로 구분자를 설정해주면 몇번이고 원하는 명령어를 실행시킬 수 있다.

위는 입력폼에 "; id; ls; cat /etc/passwd"를 입력한 결과다. 이는 서버에서 "ping ; id; ls; cat /etc/passwd"처럼 동작하기 때문에 맨 처음의 ping 명령어는 대상 주소가 없어 오류가 발생하고 아무런 메시지도 출력하지 않는다. 이후 id 명령어로 현재 계정의 uid를 확인하고 ls 명령어로 현재 디렉토리에 있는 파일들을 확인하고 cat /etc/passwd 명령으로 /etc/passwd 파일의 내용을 읽은 결과가 한꺼번에 출력되는 것을 볼 수 있다.

 

현재 웹 애플리케이션은 www-data 계정으로 실행되고 있다. 이는 apache 설치 시 생성된 웹서버 전용 계정으로 root 권한이 필요한 파일에는 접근할 수 없는 것을 볼 수 있다.

실제로 /etc/shadow 파일을 읽으려고 시도해보면 아무런 결과가 출력되지 않는다. echo $? 명령으로 이전 명령(cat /etc/shadow)의 반환값을 살펴보면 1로 정상적으로 실행되지 않았다는 것을 알 수 있다. 이 파일은

-rw-r----- root shadow 권한이기 때문에 others에 속하는 www-data는 '---'로 아무런 권한도 주어지지 않았다는 것을 볼 수 있다.