파일 업로드에 제한이 없다면 시스템에 코드를 업로드하기 굉장히 쉬워질 것이다.
위 취약점으로 가능한 공격은 명령 실행 및 파일 탐색 등 서버측 공격, 다른 취약점 유발, 바이러스 배포, 셸 스크립트 삽입 등 그 시스템으로 가능한 모든것을 할 수 있게 될 것이다.
우회 방법
- 서버측에서 실행 가능한 확장자 찾기 (php5, pht, phtml 등)
- 이중확장자 파싱
주의할점으로 php와같이 실행하고 싶은 확장자가 뒤에 와야함.
Apache의 경우 file.php.123와 같이 우회 가능
단, 현제는 업데이트를 톻애 apache에서 전반적으로 전반적으로는 이중확장자를 하나가 없는확장자일경우 나머지 하나를 인정하지만, 만약 맨 뒤의 확장자가 실제로 사용되는 확장자이거나 파일명에 한정해서는 이중확장자중에 뒤의확장자만을 인정.
- 구분 기호 뒤 위협적인 확장자 (file.jpg에 php포함시 file.jpg/file.php)
- 확장자 난독화(대소문자 혼합 : JpG)
- 파일 업로드시 변환되는 문자 찾기
IIS에서 '<<'의 경우 '.'으로 변환. file<<php === file.php
- 확장자 감지기술 결함
확장자를 찾을떄 마지막 점 뒤를 확장자로 인식할 경우 -> 이중확장자
- 금지 확장자 뒤, 허용된 확장자 앞에 null문자를 사용
null문자 뒤 모든 문자열 모두 삭제.
- 보호 메커니즘 결함
만약 위험한 확장자를 삭제할경우 file.ph.phpp - > file.php
대처방안
- 화이트리스트 기반 확장자명 필터링
- 컨텐츠 검사 실행
- 영문자와 점 하나만을 허용.
- 파일 길이 제한
- 업로드된 디렉토리에 실행권한 미부여
- 파일 크기 제한
- 파일을 덮어쓰지 않도록 주의
- PUT / GET 대신 POST사용
- 파일 시스템보다 데이터베이스에 저장 권장
- 업로드 폴더 이외 파일 및 폴더의 쓰기권한 제한.
- .htaccess, web.config등 구성파일 대체 및 변경 확인 및 무시 설정.
- 이중확장자 실행 확인.
'모의해킹 및 보안' 카테고리의 다른 글
File Upload Vulnerability Summary (0) | 2023.06.02 |
---|---|
NoSQL Injection (0) | 2023.05.31 |
CSRF attack scenario (0) | 2023.05.28 |
CSRF_1 (0) | 2023.05.22 |
XSS정리 (0) | 2023.05.22 |