프로젝트/DVWA 실습

DVWA 실습 #3-3 - Command Injection(high)

하루히즘 2021. 1. 6. 12:45

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

 

DVWA 실습 #3 - Command Injection

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

haruhiism.tistory.com

문제 해결 방법

High 단계에서는 Medium 단계와 동일하게 관련 문자를 필터링하여 커맨드 인젝션을 방지하고 있으나 '|'를 '| '로 착각하여 치환하는 바람에 보안 취약점이 발생하게 되었다.

지난 포스트에 언급했듯이 '|'는 파이프라인 문자로 왼쪽 명령어의 출력을 오른쪽 명령어에 입력으로 넘겨주는 역할을 한다. '|'를 사이에 두고 두 명령어는 'cat /etc/passwd | grep root'처럼 주로 공백을 두지만 'cat /etc/passwd|grep root'처럼 공백 없이 사용할 수도 있기 때문에 '| '가 아닌 '|' 자체를 필터링해야 이를 방어할 수 있다.

 

물론 제일 좋은 방법은 이런 시스템 커맨드를 사용하지 않고 관련 라이브러리를 사용하는 것이다. 예를 들어 ping 명령을 대신하는 소켓 라이브러리를 사용한다던지 디렉토리를 생성하기 위해 mkdir() 함수를 사용한다던지 등 대체할 수 있는 방법은 충분히 많으며 불가피하게 시스템 커맨드를 사용해야 하는 경우 Impossible 단계처럼 최대한 필터링 및 입력값 검증을 수행해야 한다.

'프로젝트 > DVWA 실습' 카테고리의 다른 글

DVWA 실습 #4-1 - CSRF(low)  (0) 2021.01.06
DVWA 실습 #4 - CSRF  (0) 2021.01.06
DVWA 실습 #3-2 - Command Injection(medium)  (0) 2021.01.05
DVWA 실습 #3-1 - Command Injection(low)  (0) 2021.01.05
DVWA 실습 #3 - Command Injection  (0) 2021.01.05