目前XSS漏洞普遍存在,但是所玩出的花樣招式并不多。希望這這個(gè)議題能夠起到拋磚引玉的作用吸引更多的人分享有意思的玩法。
議題介紹一些XSS的基本應(yīng)用以及進(jìn)階玩法,比如XSS探測(cè)環(huán)境,釣魚,攻擊內(nèi)網(wǎng)這些非常有趣的玩法。讓大家不再僅僅局限于拿個(gè)Cookie進(jìn)后臺(tái)。因?yàn)橐坏〤ookie存在HttpOnly屬性或者后臺(tái)做了訪問控制等,就沒的玩了 此議題希望能改變目前的這種狀態(tài)。
議題前半部分更多是介紹玩法以及玩法的原理,后半部分便是結(jié)合實(shí)際的例子來給大家演示下這些玩法到底是如何去玩的有多么的有意思。
1.Xss的多種利用方式
1.1 XSS獲取觸發(fā)頁面以及Cookie等敏感信息
如果Cookie的關(guān)鍵字段沒有使用HttpOnly , 后臺(tái)訪問限制等防護(hù)手段。
那么攻擊者便可以利用Cookie進(jìn)入到網(wǎng)站后臺(tái),進(jìn)一步在后臺(tái)發(fā)現(xiàn)SQL注入文件上傳等漏洞 拿下WebShell。
什么是關(guān)鍵字段?PHP的SESSION等用于驗(yàn)證身份的Cookie字段。
1.2 利用JavaScript協(xié)議來做些有意思的事情
為什么第一個(gè)iframe元素里會(huì)輸出XSS ? 而第二個(gè)iframe元素則不會(huì)?
第一個(gè)iframe里能顯示h1標(biāo)簽因?yàn)橛蟹祷刂登也粸閡ndefined
問:那我們可以利用這個(gè)做些什么?
利用可信任域的XSS來進(jìn)行釣魚攻擊
1.3 XSS蠕蟲
大概流程圖
通過各種方式讓更多的人觸發(fā)到你的XSS,然后使受害者成為攻擊者如何去實(shí)現(xiàn)?
如果你用有一枚XSS后,這些將不再是你蠕蟲的障礙。
如何去實(shí)現(xiàn)?
這樣的蠕蟲跟CSRF有什么區(qū)別?
如果你遇到一個(gè)點(diǎn)無需Token等驗(yàn)證信息即可發(fā)表動(dòng)態(tài)的話那么便可以使用CSRF來蠕蟲
案例:時(shí)光網(wǎng)前端禮包大放送 XSS+CSRF 各種刷轉(zhuǎn)發(fā) 回復(fù) 加關(guān)注
該如何去蠕蟲?
1.4 劫持表單
1.它適用于哪些環(huán)境?
可被植入XSS代碼的頁面存在表單
擁有網(wǎng)站的控制權(quán)限卻解不開用戶密碼
2.該如何去劫持表單?
目前在長(zhǎng)短短的xss庫(kù)中已擁有這個(gè)功能。
使用方法:xss.xform(表單對(duì)象,接受地址)
3.表單劫持的原理:
1.先獲得要劫持表單的action,target(為了不影響功能)
2.將當(dāng)前表單的提交地址替換為我們的地址
3.當(dāng)表單提交時(shí)先提交給我們,然后才提交給原本的地址
好處:在劫持到數(shù)據(jù)的同時(shí),又不影響功能,可以正常登陸
Sogili XSS庫(kù):http://pujun.li/xss.js
1.5 探測(cè)目標(biāo)環(huán)境
有時(shí)候?yàn)榱瞬幻つ抗粢粋€(gè)目標(biāo)我們需要去獲得更多信息。比如:Flash版本 Java版本 操作系統(tǒng) 瀏覽器等等信息
1.為什么要這樣去做?
我們?cè)撊绾稳ヌ綔y(cè)到目標(biāo)的環(huán)境?
雖然Navigator對(duì)象任何瀏覽器都支持,猶豫不是標(biāo)準(zhǔn)所以有的瀏覽器可能獲取不到某些信息
獲得flash版本 :http://jsbin.com/rukirayuca
獲得java版本 :http://jsbin.com/cabirudale
獲得插件列表 :http://jsbin.com/vejujatuxa
獲得插件列表2:http://jsbin.com/pebirixedo
從UserAgent中又可以看出操作系統(tǒng)以及瀏覽器版本
1.6 XSS的內(nèi)網(wǎng)應(yīng)用
1.獲得內(nèi)網(wǎng)IP:
獲得IP, 猜測(cè)下內(nèi)網(wǎng)的范圍,為以后掃描內(nèi)網(wǎng)的其他機(jī)器做準(zhǔn)備。
如何做到瀏覽器獲得內(nèi)網(wǎng)IP的?
Javascript : window.webkitRTCPeerConnection
WebRTC在firefox上已有在線聊天的例子,雖然他最初不是為方便xss而生的可是他的一些API可以方便我們用XSS去做更多的事情。比如獲得內(nèi)網(wǎng)IP。
WEBRTC主頁:http://www.webrtc.org/
2.掃描內(nèi)網(wǎng)機(jī)器的開放端口之Web端口:
利用javascript的onload特性來做即可。
2.掃描內(nèi)網(wǎng)機(jī)器的開放端口之服務(wù)端口:
利用其他服務(wù)的協(xié)議以及私有協(xié)議來探測(cè),比如FTP協(xié)議。
當(dāng)我們要探測(cè)21端口是否開放時(shí)便可以使用ftp協(xié)議,幾乎所有瀏覽器都支持它。
3.掃描內(nèi)網(wǎng)機(jī)器的Web容器:
利用img的onload,這兒可以發(fā)散性思考一下 還有什么可以這樣做?
4.攻擊內(nèi)網(wǎng)中的其他機(jī)器
前提:足夠多的路徑與POC
這樣我們便可以用利用一些cms的漏洞來攻擊內(nèi)網(wǎng)機(jī)器,比如wordpress安裝后默認(rèn)路徑是/wordpress
那么便可以用之前掃描得到的ip以及開放的端口配合上路徑去發(fā)動(dòng)一些攻擊。
不是所有的漏洞都可以,得是一些可被利用的漏洞才行。比如命令執(zhí)行,可以執(zhí)行個(gè)反彈shell的命令。
比如getshell getshell后用js去請(qǐng)求驗(yàn)證一下便可以知道成功否。
引用黑哥PPT中利用st2反彈shell的圖片:
XSS Proxy
1.攻擊者直接訪問后臺(tái)時(shí):
2.攻擊者用XSS Proxy訪問后臺(tái)時(shí):
5.XSS Proxy的原理
注:JS是客戶端腳本,能觸發(fā)你XSS的人,肯定是有權(quán)限訪問后臺(tái)的人。
2.那些實(shí)際案例中的XSS
2.1 案例1:圖蟲網(wǎng)存儲(chǔ)型XSS + CSRF + Phishing 即使有httponly 照樣玩的飛起
2.2 案例2:前程無憂(51job.com) 兩枚存儲(chǔ)型XSS + 蠕蟲 (html標(biāo)簽外20字符加載js)
圍脖沒人轉(zhuǎn)發(fā),露臉率不夠高?蠕蟲來幫你。
蠕動(dòng)時(shí):
如何去蠕蟲?先模擬正常操作走一遍,同時(shí)抓包。
轉(zhuǎn)發(fā)微博時(shí)抓包:
分析參數(shù)值:
Type 4 :代表轉(zhuǎn)發(fā)微博
Noticeid Replyid 代表微博ID
Content 代表轉(zhuǎn)發(fā)的內(nèi)容
分析完后,便可以把我們要蠕
動(dòng)的微博ID替換到Noticeid Replyid
然后用js來編寫ajax的代碼,使其蠕動(dòng)
代碼該如何編寫?
Address為接受請(qǐng)求的地址。
Shuju 為修改后的POST數(shù)據(jù)包
然后定義一個(gè)函數(shù),函數(shù)中創(chuàng)建了AJAX對(duì)象,并設(shè)置好了Content-Type
調(diào)用函數(shù)傳入地址以及數(shù)據(jù)包即可POST成功。
達(dá)到轉(zhuǎn)發(fā)微博的效果,轉(zhuǎn)發(fā)后別人點(diǎn)開微博,又會(huì)中招,傳遞給其他人
2.3 案例3:我是如何通過一個(gè) XSS 探測(cè)搜狐內(nèi)網(wǎng)掃描內(nèi)網(wǎng)并且蠕動(dòng)到前臺(tái)的!(附帶各種 POC)
Cookie獲取不全(因?yàn)橛衕ttpOnly) 后臺(tái)放在內(nèi)網(wǎng),這樣的XSS點(diǎn)你還會(huì)繼續(xù)下去么?
反正試試又不會(huì)懷孕,干嘛不試呢?
Sohu出了自媒體系統(tǒng),于是我便去測(cè)了下XSS,然后得到了以下信息。
從上圖中,我們得到了什么?
url,Ping這個(gè)Url發(fā)現(xiàn)顯示未知主機(jī),然后便意識(shí)到肯定是一臺(tái)內(nèi)網(wǎng)主機(jī)。
UserAgent,從UserAgent中看出了是WIN7+Chrome30(如果是存在漏洞的瀏覽器可以直接先弄員工機(jī))
得知到這些信息后對(duì)我們有什么用處?起碼我們知道他們的員工是使用的現(xiàn)代瀏覽器了,而不是老掉牙的IE6,現(xiàn)在便可以來大干一場(chǎng)了。
1.獲得內(nèi)網(wǎng)IP:
最后得到員工內(nèi)網(wǎng)IP段:10.7.8.1 – 10.7.8.255
可以干什么?
員工段應(yīng)該是辦公網(wǎng)段可以嘗試一些硬件設(shè)備的漏洞,比如TP-link的csrf 修改DNS。等等之類的,發(fā)揮自己的想象….
內(nèi)網(wǎng)XSS中,那些經(jīng)常方便我們的”通病”:
在內(nèi)網(wǎng)中有人通過域名訪問,有人通過內(nèi)網(wǎng)IP訪問。
從上邊的圖中可以看出當(dāng)有人通過內(nèi)網(wǎng)IP訪問時(shí),暴露了內(nèi)網(wǎng)IP以及端口號(hào),收集著為下一步掃描端口做準(zhǔn)備。
像sohu這種大公司內(nèi)網(wǎng)肯定劃分的比較嚴(yán)格的,服務(wù)器肯都放在一個(gè)網(wǎng)段中,所以只需要對(duì) 10.10.125.195網(wǎng)段掃描下常開的端口,80 8080 以及暴露的8087。
為什么不多掃描點(diǎn)端口呢?因?yàn)閽呙杼喽丝冢瑫?huì)導(dǎo)致網(wǎng)頁比較卡 甚至網(wǎng)頁崩潰
掃描內(nèi)網(wǎng)服務(wù)器網(wǎng)段所開放的WEB端口:
可以看到上邊的圖中每個(gè)ip都探測(cè)了3個(gè)端口,onload事件中的端口,也對(duì)應(yīng)了需要探測(cè)端口。
運(yùn)行后的結(jié)果:
整理去重后的結(jié)果:
得到了內(nèi)網(wǎng)Web服務(wù)器所開放的端口后,我們?cè)摳陕铮?/p>
收集一些CMS,框架的默認(rèn)路徑,以及POC,下一步可以嘗試?yán)肞OC去反彈shell或Getshell。
比如:命令執(zhí)行漏洞,例子有:struts2 Thinkphp Elasticsearch CVE-2014-3393 Cisco ASA Software遠(yuǎn)程認(rèn)證繞過漏洞……
引用黑哥PPT中的圖片
把收集到的ip,端口以及路徑集合在一塊去嘗試?yán)孟翽OC,如下圖:
如果上一步無法進(jìn)行,那么便可以先試試找到個(gè)sql注入,文件上傳漏洞。
如何去做?可以先通過ajax的方式把后臺(tái)的一些網(wǎng)頁給爬下來,然后本地渲染找下漏洞可能存在點(diǎn)。
發(fā)送了了一個(gè)文章URL的ID參數(shù)帶單引號(hào)和不帶單引號(hào)兩個(gè)請(qǐng)求。
第二個(gè)請(qǐng)求加了個(gè)單引號(hào)報(bào)錯(cuò)了,當(dāng)時(shí)我以為有注入,高興壞了 后來發(fā)現(xiàn)根本就不是注入點(diǎn)。
現(xiàn)在陷入了困境,后臺(tái)不存在漏洞,又沒有足夠的路徑以及POC,該怎么辦?
操起老行當(dāng),釣魚:
在爬網(wǎng)站后臺(tái)的時(shí)候特地去爬了下登陸界面,為釣魚做準(zhǔn)備。
由于不細(xì)致也可能是自己太貪心想多釣到點(diǎn)賬號(hào),沒有設(shè)置只出現(xiàn)一次,導(dǎo)致后來被發(fā)現(xiàn)。
PPT中的那些例子
獲得flash版本 http://jsbin.com/rukirayuca
獲得java版本 http://jsbin.com/cabirudale
獲得插件列表 http://jsbin.com/vejujatuxa
獲得內(nèi)網(wǎng)IP http://jsbin.com/riyisavura
掃描內(nèi)網(wǎng)端口 http://jsbin.com/ziwununivo
掃描WEB容器 http://jsbin.com/piwemaquwa
掃描FTP端口 http://jsbin.com/kulahicide