bWAPP A1 OS command Injection
itsecgames.com
www.itsecgames.com
리눅스 명령어 인젝션 문제이다. nslookup 명령어가 사용되는 것으로 보인다. 텍스트 값이 nslookup 명령어의 인자로 전달되는 것 같은데, linux의 ";" "&", "&&", "||" 명령어를 통해 추가적인 명령을 연속하여 실행할 수 있다.
low
";" 세미콜론을 사용하여 추가적인 명령어를 사용할 수 있다.
medium
medium 레벨이다. low 레벨에서 사용했던 ";" 세미콜론을 사용하면 추가적인 명령어가 실행되지 않는다.
하지만, "|" 파이프를 통해 추가적인 명령어를 실행할 수 있다.
high
high 레벨이다. low, medium 레벨에서 사용했던 세미콜론, 파이프를 이용해도 추가적인 명령어를 실행할 수 없다.
low 레벨의 경우 필터링이 되지 않고 있고 medium, high 레벨의 경우 각각 commandi_check_1(), commandi_check_2() 함수에 의해 텍스트 값이 변환된다.
먼저, medium 레벨의 경우 "&", ";" 문자를 지워버린다. medium 레벨에서 "&" 세미콜론 문자를 사용하여 추가적인 명령어를 실행할 수 없었던 이유이다.
다음으로, high 레벨의 경우 php escapeshellcmd() 함수로 전달한 텍스트를 변환한다. escapeshellcmd(0 함수는 다음 문자 앞에 백슬래시를 붙인다. `|*?~<>^()[]{}$\, \x0A and \xFF. ' 즉, 추가적인 명령어의 실행이 매우 어려워진다.
* PHP escapeshellcmd() function
PHP: escapeshellcmd - Manual
I've got a php script that needs to pass a username and password via exec to a perl script. The problem is valid password characters were getting escaped...Here's a little perl function I wrote to fix it.sub unescape_string { my $string = shift;�
www.php.net
따라서, 텍스트 값을 인자로 전달 받아 리눅스에서 명령어를 실행할 때 injection을 방어하려면 escapeshellcmd() 함수 사용을 고려할 수 있다.
'Wargame > bWAPP' 카테고리의 다른 글
bWAPP A1 PHP Code Injection (0) | 2020.10.28 |
---|---|
bWAPP A1 OS Command Injection - Blind (0) | 2020.10.28 |
[풀이중] bWAPP A1 Mail Header Injection (SMTP) (0) | 2020.10.28 |
[풀이중] bWAPP A1 LDAP Injection (Search) (0) | 2020.10.28 |
bWAPP A1 iFrame Injection (0) | 2020.10.28 |