문제 해결 방법
Medium 단계에서는 '&&'과 ';'만 필터링하고 있다. 하지만 '&', '||', '|' 등 이 필터링을 우회할 수 있는 문자는 많기 때문에 다른 문자를 입력해서 어렵지 않게 우회할 수 있다.
'' 문자를 사용해서 우회했다.
결정적으로 str_replace() 함수를 이용하여 '&&'를 ''로 치환하는 과정을 단 한번만 반복하고 있기 때문에 이는 '&&&'을 '&'으로 치환하는 불완전한 연산을 수행하게 된다. 이 '&' 문자는 해당 명령어를 백그라운드로 실행하라는 명령이기 때문에 추가적인 명령어를 실행할 수 있다.
이를 방지하려면 지난번 워게임 풀이에서 언급했듯이 str_contains() 함수를 이용하여 아직 치환 대상 문자열에 아직 치환할 문자열이 남아있는지 검사하면서 반복문을 통해 완전히 치환해줘야 한다. 하지만 '&&'를 ''으로 치환하는 이상 '&'를 막을 방법은 없기 때문에 '&&' 대신 '&'를 치환하도록 수정하는 것이 더욱 바람직할 것이다.
https://basic-computer.tistory.com/entry/DVWA-%EC%8B%A4%EC%8A%B5-Commandhigh
[DVWA 실습] Command(high)
문제 해결 방법 High 단계에서는 Medium 단계와 동일하게 관련 문자를 필터링하여 커맨드 인젝션을 방지하고 있으나 '|'를 '| '로 착각하여 치환하는 바람에 보안 취약점이 발생하게 되었다. 지난 포
basic-computer.tistory.com
'Security > DVWA' 카테고리의 다른 글
DVWA - CSRF (2) | 2022.09.25 |
---|---|
[DVWA 실습] Command(high) (0) | 2022.09.21 |
[DVWA 실습] Command Injection(low) (0) | 2022.09.21 |
DVWA - Command Injection (2) | 2022.09.21 |
[DVWA 실습] Brute Force(high) (0) | 2022.09.21 |