✏️ Java 코드 에디터
취약한 코드
public void upload(FileItem item) throws Exception {
String fileName = item.getName();
// [취약한 코드] 확장자 검증 없이 파일을 서버에 저장
// 공격자가 'shell.jsp'를 업로드하면 실행 가능
File file = new File("/uploads/" + fileName);
item.write(file);
}
💡 수정 가이드 (KISA 가이드 기준)
1. 확장자 화이트리스트 검증
파일명에서 확장자를 추출하여 허용된 확장자(예: jpg, png) 목록에 있는지 확인합니다.
String ext = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
if (!"jpg".equals(ext) && !"png".equals(ext)) {
throw new SecurityException("Not allowed extension");
}
📊 분석 결과 및 설명
🎯 목표
악성 스크립트 파일(.jsp, .php, .asp)이 업로드되어 서버에서 실행되는 것을 방지하기 위해 파일의 형식과 확장자를 엄격히 제한해야 합니다.
⚠️ 현재 취약점
Unrestricted File Upload
파일 형식에 대한 제한이 없어 웹쉘 업로드를 통한 시스템 장악이 가능합니다.