[Web Security] 파일 업로드 공격Security/Web Security2024. 5. 29. 22:25
Table of Contents
웹 애플리케이션 개발/운영 환경에서 공격자가 실행 가능한 언어로 작성된 공격 프로그램을 업로드한 후 원격 해당 파일에 접근하여 실행시키는 취약점이다.
1. 파일 업로드 해킹 방법
1) 공격자가 실행 가능한 언어로 작성된 공격 프로그램을 업로드
- 업로드 기능 이용
- 개발/운영 환경 : JAVA / .NET / PHP
- JAVA 환경에서 실행 가능한 언어로 작성된 파일 : .jsp 등
- .NET 환경에서 실행 가능한 언어로 작성된 파일 : .asp 등
- PHP 환경에서 실행 가능한 언어로 작성된 파일 : .php 등
.asp 환경임을 확인
2) 업로드한 악성 파일을 실행
- 업로드 한 파일은 서버측 업로드 전용 폴더를 만들어 놓았을 때 보통 해당 폴더에 저장됨
- 공격자는 업로드 파일 위치한 경로명(폴더 이름)을 알아내고, URL 직접 접근을 통해 실행함
실습을 위해 백신을 꺼야함! 악성 파일임을 확인하고 바로 삭제시키기 때문 -> 실습이 끝나면 바로 백신 켜기!!!
GitHub에 공개된 webshell 파일 다운
웹 쉘(Webshell) : 서버에서 명령어를 실행할 수 있는 악성코드 파일
2. 파일 업로드 취약점
1) 취약성 및 위험성
- 애플리케이션의 개발, 운영 환경과 동일한 언어로 작성된 악성 파일을 웹 서버 측에 업로드
- 원격으로 해당 파일에 접근하여 실행시키는 취약점
- 작성된 공격 파일의 기능에 따라 다양한 위험 존재
- Websehll 등의 파일을 이용한 시스템 장악 목적
2) 진단 방법
- 게시판에 첨부파일 기능을 이용하여 가능 여부 확인
- 게시판에 글쓰기 권한과 파일 첨부 기능이 있는지 확인한 후 확장자가 jsp/php/asp/cgi 등의 파일들이 업로드 가능한지 확인
다운 받은 cmd.asp 파일 업로드 테스트
특정 확장자만 업로드 가능
3. 우회 기법
1) 대소문자 우회 공격
- 확장자를 비교할 경우 대소문자를 무시한 문자열 비교를 해야 함
- 대소문자 혼합도 시스템에서는 인식하기 때문에 모든 가능한 문자 조합에 대한 필터링 필요
- Ex) ".aSp", ".Jsp", ".phP", ".eXe" 등등
더보기
.aSp 확장자로 업로드 시도
대소문자 우회 공격 실패
2) 확장자 연장 우회 공격
- 확장자 필터링을 조건문자 ('.')를 기준으로 앞쪽부터 유효한 파일인지 필터링하게 되면 공격 받을 수 있음
- 확장자 필터링을 조건문자 ('.')를 기준으로 맨 마지막부터 해야 함
- Ex) attack.txt.asp
더보기
txt를 확장자로 인식하고 업로드 되도록 공격
확장자 연장 우회 공격 성공
확장자를 구분짓는 조건문자 ('.') 를 왼쪽부터 검사해서 txt를 확장자로 인식 한 것 -> 우측부터 검사하도록 해야 함!
3) 특수문자 우회 공격
- 종단문자를 이용한 우회 공격
- Ex) "%00", "%ZZ", "%09", "%13" -> %가 들어갔다는 것은 URL 인코딩으로 판단 가능
더보기
URL Incode 확인
%00이 Null인 것 확인
%00이 Null 값(종단)을 의미하므로 cmd.asp 가 되는 것이다.
업로드 성공
'Security > Web Security' 카테고리의 다른 글
[Web Security] XSS(Cross Site Script) - Reflected XSS(반사형) (0) | 2024.05.27 |
---|---|
[Web Security] SQL Injection(2)_인증 우회, DB 획득 (0) | 2024.05.27 |
[Web Security] SQL Injection(1)_Burp Suite, 프록시 설정, CA인증서 등 (0) | 2024.05.26 |
[Web Security] 쇼단(Shodan), Censys, GHDB (0) | 2024.05.26 |
[Web Security] 웹 서비스 공격(웹 해킹, Web Hacking) (0) | 2024.05.26 |
@학슈퍼맨 :: 뭉게뭉게 학수의 클라우드 세상
개인 공부 목적으로 사용하는 블로그입니다 :)
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!