파일 업로드 실습 (1)
실습 내용
25년 2회 보안기사 실기 파일 업로드 문제에서
우회 방법을 서술한 답안에 애매한 부분이 있어 직접 확인하고자 APM 환경에서 실습해보았다.

문제 상황을 기반으로
파일 타입이 허용되는 이미지 파일 타입이 아닌 경우 이전 화면으로 이동시키고, 그 외에는 업로드 허용한다.


이제 웹쉘을 어떻게 이미지 파일로 우회하면 되는지 확인한다.
나는 “문제에 주어진 코드가 단순하게 파일 타입만 검증하고 있으니 웹 프록시 툴을 이용하여 클라이언트 측에서 변조 가능한 부분(확장자 변조 .php.img로 하는 방법 등)을 활용하여 우회할 수 있다.”라는 식으로 썼었다…
정확하게 파일 타입을 우회하면 된다고 쓰면 됐는데, 뭉뚱그려 쓴데다 확장자 변조 부분을 끼워 쓴 부분이 깎일 요소가 있는 것 아닌가 싶어 찝찝했다.



역시 파일 타입을 우회해야 한다고 정확히 써야 했다. 확장자 예시를 왜 썼지… 다행히 써도 무방했다는 걸 확인하긴 했지만… 내가 채점자라면 점수 깎을 것 같다.
쉬운 문제였는데…ㅜ 실기 1트만에 합격하기는 실패한 듯하다. 다음 시험에 꼭 합격해야지.
대응 방안
- 업로드 파일에 대한 파일 타입 및 확장자 검증
- 허용된 이미지 포맷 등만 통과시키는 화이트리스트 정책 적용
- 업로드 전용 디렉터리 분리 및 실행 제한
- 업로드 파일을 웹루트 외부 또는 별도의 디렉터리에 저장
- 웹서버 설정을 통해 해당 디렉터리 내 스크립트 실행 금지
- 해당 디렉터리에 대한 직접 URL 접근 차단
- 업로드 파일의 개수 및 크기 제한
- 요청당 업로드 파일 수 제한
- 개별 파일 크기 또는 전체 업로드 용량 제한
This post is licensed under CC BY 4.0 by the author.