2021/01/05 - [프로젝트/DVWA 실습] - DVWA 실습 #3 - Command Injection
문제 해결 방법
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는 '---'로 아무런 권한도 주어지지 않았다는 것을 볼 수 있다.
'프로젝트 > DVWA 실습' 카테고리의 다른 글
DVWA 실습 #3-3 - Command Injection(high) (0) | 2021.01.06 |
---|---|
DVWA 실습 #3-2 - Command Injection(medium) (0) | 2021.01.05 |
DVWA 실습 #3 - Command Injection (0) | 2021.01.05 |
DVWA 실습 #2-3 - Brute Force(high) (0) | 2021.01.04 |
DVWA 실습 #2-2 - Brute Force(medium) (0) | 2021.01.04 |