對於 scheme 的利用
但 gopher 這堂課不會詳細講道,之後再看
目標: 成功存取內網的 ip 位置
可能被阻擋的方法
黑名單
破解方法:
利用 Domain 混淆
白名單
破解方法:
利用 Open Redirecthttps://google.com/amp/moon-jam.me
就會自動轉址到 moon-jam.me
DNS 解析後判斷是否合法
破解方法:
利用 DNS Rebinding
上一秒的時候解析是 8.8.8.8
所以不會被擋掉
但下一秒的時候解析就變成 127.0.0.1
了,就能成功存取內網 ip
orange 做的神奇東西,在不同服務解析出來的結果不一樣
用之前介紹的方法,利用 http://0
會被當成 http://localhost
,所以就可以成功存取內網 ip
看他的程式碼知道網址的開頭要是 httpbin.dev
,去 https://httpbin.dev
看看有什麼東西,發現了
於是只要使用 https://httpbin.dev/redirect-to?url=http://localhost/internal-only
就可以成功存取內網 ip 拿盪 flag 了
這提是用 DNS Rebinding 的方式,但試了好幾次都沒成功,只好來寫個程式以量取勝
import requests
url = "http://chall.nckuctf.org:28123/mkreq?url=http%3A%2F%2F7f000001.c0a80001.rbndr.us%2Finternal-only"
while True:
response = requests.get(url)
print(response.text)
if "NCKU" in response.text:
print(response.text)
break
然後跑一下下之後就拿到 flag 了
除了 XSS 和 CSRF 之外,還有很多其他的酷東西
網頁前端本身的限制,例如說不可能單純透過網頁讓你家的印表機列印東西,需要一個本地的伺服器,讓網頁去戳本地伺服器,再由本地伺服器去戳印表機
So
這個 CVE 只要你點開一個網頁,你的小算盤就會跳出來
或者是很多人用的 electron ,背後其實也算是一個瀏覽器,也有可能被攻擊
Self-XSS: 只能攻擊自己的 XSS ,但可能可以透過其他攻擊手法造成更嚴重的影響
Blind-XSS: XSS 在不知道甚麼時候可能會被觸發,例如當你把名字改成 XSS payload
有個人把自己特斯拉的名字改成 XSS payload ,有天車壞了拿去送修,結果剛好 XSS payload 被觸發,拿到 10000 USD 的 Bug Bounty
分類
常見 payload
常見 payload - javascript 偽協議
避免 htmlescape
因為 javascript 偽協議可以不包含任何雙引號,所以就可以繞過 htmlescape
常見 payload - innerHTML bitfall
搞懂那 XSS Lab 怎麼拿到 Flag