Code::Security/비박스(BWAPP)

비박스(bWAPP) OS Command Injection

태군 코드 2019. 1. 23. 16:55
반응형

이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위 입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다. 

 

A1 - OS Command Injection

OS 커맨드 인젝션은 취약한 변수로 시스템 명령어를 실행하여 서버 운영체제에 접근하는 공격 방식 입니다.

 

OS Command Injection 실습페이지 화면 입니다. 화면을 보시면 [www.nsa.gov]에 대하여 DNS 주소를 출력하는 것을 알수있고, DNS를 조회하기 위하여 시스템 명령어인 nslookup 명령어를 사용합니다.

 

해당화면은 구글주소를 입력한 후  [Lookup] 버튼을 눌렀을때의 화면입니다. Low 단계에서는 아무런 검증을 거치지 않기 때문에 and, or 연산자를 입력하여 다른 정보들도 출력을 해보도록 하겠습니다.

 

저는 & 연산자를 이용하여 시스템의 commandi.php 파일을 조회 해 보았습니다.

 

입력 : www.google.com & dir /s commandi.php

 

정상적으로 원하는 파일을 찾을 것을 확인할수 있습니다. 이번에는 명령어를 사용하여 파일을 생성하보도록 하겠습니다.

 

입력 : www.nsa.gov & echo [입력 문자] > 파일명

 

해당 디렉토리를 가보시면 실제 파일이 생성되었고, 파일을 열어 확인해 보시면 입력한 문자가 있는것을 보실수 있습니다.

 

medium레벨에서는 replace 함수를 이용하여 특정한 문자가 들어오면 공백으로 치환을 해주고 있습니다.

 

해당 부분은 간단히 우회가 되니 어떠한 문자가 필터링 되는지 어떠한 문자로 OR 조건을 만족할수 있는지 확인해 보시기 바랍니다.

 

 

난이도 상

난이도 상에서는 commandi_check_2라는 함수를 사용하여 입력 데이터를 우회 합니다. commandi_check_2 함수는 functions_external.php에 정의되어 있으며 'escapeshellcmd' 함수를 사용하여 입력 값을 우회 합니다.

 

escapeshellcmd 함수는 시스템 셸로 실행할 수 있는 특수 문자에 백슬래시를 붙여 명령을 실행할 수 없도록 방어 합니다. 사용할수 있는 우회 문자는 &, #, ;, `, |, *, ?, ~, <, >, ^, ( ,), [, ], {, }, $, \, \x0A, \xFF 있습니다.

 

참고사이트

http://php.net/manual/en/function.escapeshellcmd.php

 

 

 

반응형