** File Upload 공격
공격자가 원하는 임의의 파일을 업로드 하는 취약점
* 임의의 파일 : Server 측 실행 파일
서버에서 실행되는 파일: php, jsp, asp, sh, elf, bat, exe
** 발생 이유
무한 신뢰, Client 측의 데이터를 신뢰해서 검증이 없기 때문에
** 발생 Point
파일 업로드 기능: 프로필 사진, 서류 업로드, 고객 문의, 신분증 업로드 etc..
** 파일 업로드 공격 시나리오
> 어떤 공격이 가능할까
① 서버 측 실행 파일 업로드
→ Web shell, 서버 장악!
② Phising 공격
→ HTML 파일 업로드
③ Deface 공격
→ index.html 페이지를 다른 페이지로 덮어쓰는 것
④ XSS 공격 (Stored)
→ HTML 파일 업로드
⑤ DOS (Denial of Service) 공격
→ 서버의 자원 고갈
→ 용량이 큰 파일들을 서버에 저장시켜 다른 사람의 파일을 저장시킬 수 없게 한다
* 취약 조건
> 서버 측 실행 파일 업로드
> 업로드 한 파일을 실행할 수 있는지
** Web Shell
> 서버 측 실행 코드
> 서버에서 원하는 명령어를 실행할 수 있다
→ 내꺼다!
> 서버 시스템 명령어를 실행할 수 있는 파일 : Web Shell
> Shell: Interface
> web shell에 키포인트가 되는 함수
→ system(), eval()
* One Line Web Shell
ex) test.php
<?php
system($_GET['cmd']);
?>
system 함수를 실행하는데 GET 방식으로 cmd 파라미터에 온 값을 실행한다
/test.php?cmd=ls
* Web Shell 조건 2가지
① File Upload
② 업로드한 파일 경로 찾기
ex) webshll.php 를 실행시키기 위해 업로드한 경로(/data/webshll.php)로 호출한다
→ normaltic.com/data/webshll.php
** 경로 찾기
> 업로드한 파일을 다운로드 받기
> 업로드한 요청 확인
> 웹 서버의 소스코드에 경로가 노출되는 경우
** 웹 사이트 파일 업로드/다운로드 기능 만들 때 2가지 방법
① 웹 서버 앱 경로에 직접 업로드해서, 직접 접근으로 파일 받아가게 만들기
② 웹 서버의 아무 경로나 지정해서 업로드 하고, 파일 다운로드 스크립트 이용
→ 검증은 서버에서 한다
① MIME 검증
Multipurpose Internet Mail Extensions
> 우회
웹을 통해서 데이터를 전달할 때의 데이터 타입 Content-Type을 변조한다
② 블랙 리스트 필터링
php, jsp, asp 같은 확장자를 막는 것
ex) webshell.php 에서 .을 기준으로 뒤에 오는 단어를 보고 골라낸다
> 우회
→ PhP, pHp (대소문자 혼용)
→ jspx, php3, php7 .. (다른 확장자 사용)
→ 확장자 2개 사용해서 우회 ex) test.png.php (test.php.png - (x) .php는 맨 뒤에 붙여야한다)
→ NULL 문자 우회 ex) test.php%00.png - Windows 환경
③ File Signiture
> 우회
→ File Signiture를 앞에 붙여주고 Shell code를 사용한다
** 과제
(1) 문제풀이 후 정리
normaltic.com:6001~6005
(2) 웹 개발
(3) 1~5 문제들 직접 만들기
(+) CTF 준비..+취미
'Web Hacking Study > 수업 정리' 카테고리의 다른 글
| [11주차] 인증/인가 취약점 (0) | 2022.06.10 |
|---|---|
| [10주차] File Upload 대응방안, File Download 공격개념, 대응방안 (0) | 2022.06.03 |
| [8주차] CSRF 정리 & 문제풀이, 대응방안 (0) | 2022.05.20 |
| [7주차] 이전 내용 복습, XSS 시나리오, CSRF 문제풀이, 대응방안 (0) | 2022.05.13 |
| [6주차] 5주차 복습, CSRF (0) | 2022.04.29 |
댓글