[SK쉴더스 Rookies 19기] 클라우드 기반 스마트 융합보안 과정
[case1]
String fileName = request.getParameter("P");
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
FileInputStream fis = null;
try {
response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ";");
...
fis = new FileInputStream("C:/datas/" + fileName);
bis = new BufferedInputStream(fis);
bos = new BufferedOutputStream(response.getOutputStream());
...
취약점 | 경로 순회 공격 (Path Traversal) |
양호/취약 | 취약 |
사유 | 파일명(P)에 대한 검증 없이 파일을 읽고 있기 때문 |
[case2]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
...
<select id="boardSearch" parameterType="map" resultType="BoardDto">
select * from tbl_board where title like '%'||#{{keyword}||'%' order by pos asc
</select>
취약점 | SQL Injection |
양호/취약 | 취약 |
사유 | 입력 값 Keyword를 mybatis를 사용하여 #으로 바인딩 처리하기 때문 (# 문법으로 prepared statements를 사용 가능) |
[case3]
<% String keyword = request.getParameter("keyword"); %>
keyword = keyword.replaceAll("&", "&");
keyword = keyword.replaceAll("<", "<");
keyword = keyword.replaceAll(">", ">");
keyword = keyword.replaceAll("₩"", """);
keyword = keyword.replaceAll("'", "'");
keyword = keyword.replaceAll("/"", "/");
keyword = keyword.replaceAll("(", "(");
keyword = keyword.replaceAll(")", ")");
<%=keyword%>
취약점 | XSS |
양호/취약 | 양호 |
사유 | 입력 값 Keyword에 대해 적절한 특수문자 필터링을 하고 있기 때문 |
728x90
'Rookies > 클라우드 기반 취약점 진단 및 대응 실무' 카테고리의 다른 글
[SK shieldus Rookies 19기] 소스코드 진단 03 (0) | 2024.05.17 |
---|---|
[SK shieldus Rookies 19기] 소스코드 진단 02 (0) | 2024.05.17 |
[SK shieldus Rookies 19기] 12 - 인증 우회 2 (Burp Suite Academy) (0) | 2024.05.17 |
[SK shieldus Rookies 19기] 11 - 인증 우회 (Burp Suite Academy) (0) | 2024.05.16 |
[SK shieldus Rookies 19기] 10 - Directory Traversal URL-decode (Burp Suite Academy) (0) | 2024.05.15 |