본문 바로가기

프로젝트/DVWA 실습

DVWA 실습 #3-2 - Command Injection(medium)

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

 

DVWA 실습 #3 - Command Injection

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

haruhiism.tistory.com

문제 해결 방법

Medium 단계에서는 '&&'과 ';'만 필터링하고 있다. 하지만 '&', '||', '|' 등 이 필터링을 우회할 수 있는 문자는 많기 때문에 다른 문자를 입력해서 어렵지 않게 우회할 수 있다.

'' 문자를 사용해서 우회했다.

결정적으로 str_replace() 함수를 이용하여 '&&'를 ''로 치환하는 과정을 단 한번만 반복하고 있기 때문에 이는 '&&&'을 '&'으로 치환하는 불완전한 연산을 수행하게 된다. 이 '&' 문자는 해당 명령어를 백그라운드로 실행하라는 명령이기 때문에 추가적인 명령어를 실행할 수 있다.

이를 방지하려면 지난번 워게임 풀이에서 언급했듯이 str_contains() 함수를 이용하여 아직 치환 대상 문자열에 아직 치환할 문자열이 남아있는지 검사하면서 반복문을 통해 완전히 치환해줘야 한다. 하지만 '&&'를 ''으로 치환하는 이상 '&'를 막을 방법은 없기 때문에 '&&' 대신 '&'를 치환하도록 수정하는 것이 더욱 바람직할 것이다.