Code::Security/DVWA

취약한 웹 애플리케이션을 이용한 (DVWA) File Upload 취약점 진단

태군 코드 2018. 8. 1. 17:34
반응형

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


File Upload 취약점은 파일을 첨부할 수 있는 게시판 등에서 악성 스크립트 파일을 웹 서버에 업로드하여 웹쉘 등을 실행 시킬수 있는 취약점입니다.



해당화면은 File Upload 취약점 진단항목의 화면이며, 간단하게 파일을 업로드 할수 있게 화면이 이루어져 있습니다. 해당 진단항목 역시 링크를 타고 들어 가시면 File Upload 취약점에 대한 정보를 보실수 있습니다.



Low레벨의 소스코드를 보시면 업로드 파일에 대한 검증없이 모든 파일에 대하여 업로드를 허용하고 있습니다. 그럼 간단하게 파일을 업로드 해보도록 하겠습니다.



Low 레벨은 소스코드상의 아무런 검증 로직이 존재하지 않으므로, 파일을 선택후 [Upload] 버튼을 클릭하면 업로드 성공 메시지를 보실수 있습니다. 그럼 실제 디렉토리를 찾아가 파일이 업로드 되었는지 확인해 보도록 하겠습니다.



저는 예전에 만들어 놓았던 CSRFTEST.html 파일을 업로드 하였습니다. 해당 디렉토리를 가보면 정상적으로 업로드가 되어 있는것을 확인 할수 있습니다.



업로드 한 파일을 실행했을때의 화면 입니다. 만약 해당 파일이 스크립트로 짜여진 파일이라면 원격코드 및 임의코드를 실행시켜 서버에 악의적인 행위들을 할수 있습니다.



Medium레벨의 소스 코드 입니다. 해당 소스코드를 살펴보면 업로드 파일 타입이 image/jpeg, image/png 이고 크기가 100,000 이하인 파일만 업로드 할수 있게 되어 있습니다. 해당 코드는 파일 업로드시 이미지 타입을 변환하면 간단히 우회가 가능합니다.


Medium레벨 테스트를 하기 전에 DVWA Security -> Security Level -> Medium 으로 바까 주시고 조금전 올렸던 파일은 삭제를 해주시기 바랍니다. 그럼 Medium 레벨로 바꾼후 동일한 파일을 업로드 해보도록 하겠습니다.



해당 업로드할 파일의 확장자가 html 파일이기 때문에 파입타입 형식이 맞지 않아 업로드가 되지 않는 다는 메시지를 표시하고 있습니다. 그럼 버프스위트를 이용하여 이러한 이미지 검증을 우회해보도록 하겠습니다.



업로드할 파일을 선택한후 [Upload] 버튼을 눌렀을때 버프스위트에서 패킷을 잡은 화면 입니다.



패킷을 잡은후 'Content-Type' 부분을 소스코드에서 허용되었던 파일 타입으로 수정후 (image/jpeg, image/png) [Forward] 버튼을 클릭하여 웹브라우저로 프록시를 넘겨줍니다.



File Upload 검증을 우회하여 업로드에 성공하였습니다. 실제 파일 디렉토리를 확인하신후 업로드가 되었는지 확인하시기 바랍니다.


High 레벨의 소스코드는 확장자만 검증하기 때문에 확장자 검증으로 우회가 가능합니다. 지금까지의 내용을 종합하여 확장자 검증 우회를 직접 해보시기 바랍니다.














반응형