Web Hacking Study/수업 정리

[9주차] File Upload 공격 개념, 검증 및 우회

silver surfer 2022. 5. 27.

** 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 준비..+취미

댓글