악성 파일 실행 관련 문제이다.
아래의 Form은 원래 Image 파일만 올리도록 되어 있다.
서버 단에서의 확장자 필터링 등을 하지 않으면, 웹상에서 시스템 명령어를 실행시킬 수 있는 웹쉘이 업로드될 수 있기 때문에, 개발 시 주의가 필요하다.
우선 download.jpg라는 파일 하나를 업로드하자.
Start Upload 버튼을 누르면, Your current image 부분에 그 이미지가 보여진다.
이미지의 경로는 아래와 같다. uploads 디렉터리 안에 있는데, 문제에서는 mfe_target 디렉터리에 guest.txt를 만들라고 한다.
attack.jsp라는 이름으로, jsp 파일을 만들자.
경로를 하드코딩 했다. 6번 라인의 경로만 상황에 맞게 바꿔주면 되겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <html> <%@ page contentType="text/html; charset=euc-kr" %> <%@ page import="java.io.*" %> <% File file = new File("/home/pi/WebGoat/.extract/webapps/WebGoat/mfe_target/guest.txt"); file.createNewFile(); out.println("File created: " + request.getRealPath(file.getName())); %> <script type="text/javascript"> alert("attack.jsp is launched"); </script> </html> | cs |
jsp 파일을 만든 후, 업로드하자.
확장자 필터링이 안되어 있어, 업로드가 가능하다.
업로드 후, http://[주소]/WebGoat/uploads/attack.jsp로 들어가면, 방금 업로드한 코드를 실행할 수 있다.
파일이 만들어졌다고 한다. 이전으로 돌아가서 Complete 상태인지 확인해보자.
축하 메시지가 보인다. Clear~
'[Wargame Write-up] > WebGoat' 카테고리의 다른 글
[WebGoat] [Injection Flaws] Blind String SQL Injection (0) | 2017.03.21 |
---|---|
[WebGoat] [Injection Flaws] Blind Numeric SQL Injection (0) | 2017.03.20 |
[WebGoat] [Access Control Flaws] Bypass a Path Based Access Conrol Scheme (0) | 2017.01.10 |
[WebGoat] [AJAX Security] LAB: Client Side Filtering (0) | 2016.12.29 |
[WebGoat] [AJAX Security] LAB: DOM-Based cross-site scripting (0) | 2016.12.29 |