日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对未标记为可安全执行的脚本_三、??XSS跨站脚本攻击

發(fā)布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对未标记为可安全执行的脚本_三、??XSS跨站脚本攻击 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

跨站腳本攻擊(Cross Site Scripting),縮寫為XSS。惡意攻擊者往Web頁面里插入惡意Script代碼,當(dāng)用戶瀏覽該頁之時,嵌入其中Web里面的Script代碼會被執(zhí)行,從而達到惡意攻擊用戶的目的。理論上,所有可輸入的地方?jīng)]有對輸入數(shù)據(jù)進行處理的話,都會存在XSS漏洞,漏洞的危害取決于攻擊代碼的威力。

1??xss的危害:

攻擊者可以使用戶在瀏覽器中執(zhí)行其預(yù)定義的惡意腳本,其導(dǎo)致的危害可想而知,如劫持用戶會話,插入惡意內(nèi)容、重定向用戶、使用惡意軟件劫持用戶瀏覽器、繁殖XSS蠕蟲,甚至破壞網(wǎng)站、修改路由器配置信息等。XSS漏洞可以追溯到上世紀(jì)90年代。大量的網(wǎng)站曾遭受XSS漏洞攻擊或被發(fā)現(xiàn)此類漏洞,如Twitter、Facebook、MySpace、Orkut、新浪微博和百度貼吧。研究表明,最近幾年XSS已經(jīng)超過緩沖區(qū)溢出成為最流行的攻擊方式,有68%的網(wǎng)站可能遭受此類攻擊。根據(jù)開放網(wǎng)頁應(yīng)用安全計劃OWASP TOP10公布的2010年統(tǒng)計數(shù)據(jù),XSS排名第2名僅次于代碼注入,2017年的OWASP TOP10排行中位列第七名。
XSS 存在的根本原因是,對URL中的參數(shù),對用戶輸入提交給 webserve r的內(nèi)容,沒有進行充分的過濾。如果我們能夠在 web 程序中,對用戶提交的URL中的參數(shù),和提交的所有內(nèi)容,進行充分的過濾,將所有的不合法的參數(shù)和輸入內(nèi)容過濾掉,那么就不會導(dǎo)致“在用戶的瀏覽器中執(zhí)行攻擊者自己定制的腳本”。
但是,其實充分而完全的過濾,實際上是無法實現(xiàn)的。因為攻擊者有各種各樣的神奇的,你完全想象不到的方式來繞過服務(wù)器端的過濾,最典型的就是對URL和參數(shù)進行各種的編碼,比如escape,encodeURI, encodeURIComponent, 16進制,10進制,8進制,來繞過XSS過濾。

2??xss的原理:

HTML是一種超文本標(biāo)記語言,通過將一些字符特殊地對待來區(qū)別文本和標(biāo)記,例如,小于符號(<)被看作是HTML標(biāo)簽的開始,<title>與</title>之間的字符是頁面的標(biāo)題等等。當(dāng)動態(tài)頁面中插入的內(nèi)容含有這些特殊字符(如<)時,用戶瀏覽器會將其誤認(rèn)為是插入了HTML標(biāo)簽,當(dāng)這些HTML標(biāo)簽引入了一段JavaScript腳本時,這些腳本程序就將會在用戶瀏覽器中執(zhí)行。所以,當(dāng)這些特殊字符不能被動態(tài)頁面檢查或檢查出現(xiàn)失誤時,就將會產(chǎn)生XSS漏洞。總結(jié)后為三點。

①攻擊者對含有漏洞的服務(wù)器發(fā)起XSS攻擊(注入JS代碼)。

②誘使受害者打開受到攻擊的服務(wù)器URL。

③受害者在Web瀏覽器中打開URL,惡意腳本執(zhí)行。
3??xss的分類:

從攻擊代碼的工作方式可以分為三個類型:

①持久型跨站:最直接的危害類型,跨站代碼存儲在服務(wù)器(數(shù)據(jù)庫)。②非持久型跨站:反射型跨站腳本漏洞,最普遍的類型。用戶訪問服務(wù)器-跨站鏈接-返回跨站代碼。③DOM跨站:DOM(document object model文檔對象模型),客戶端腳本處理邏輯導(dǎo)致的安全問題。
基于DOM的XSS漏洞是指受害者端的網(wǎng)頁腳本在修改本地頁面DOM環(huán)境時未進行合理的處置,而使得攻擊腳本被執(zhí)行。在整個攻擊過程中,服務(wù)器響應(yīng)的頁面并沒有發(fā)生變化,引起客戶端腳本執(zhí)行結(jié)果差異的原因是對本地DOM的惡意篡改利用。
4??xss的攻擊方式:

常用的XSS攻擊手段和目的有:

①盜用cookie,獲取敏感信息。

②利用植入 Flash,通過 crossdomain 權(quán)限設(shè)置進一步獲取更高權(quán)限;或者利用 Java 等得到類似的操作。

③利用 iframe、frame、XMLHttpRequest 或 Flash 等方式,以(被攻擊)用戶的身份執(zhí)行一些管理動作,或執(zhí)行一些一般的如發(fā)微博、加好友、發(fā)私信等操作。

④利用可被攻擊的域受到其他域信任的特點,以受信任來源的身份請求一些平時不允許的操作,如進行不當(dāng)?shù)耐镀被顒印?/p>

⑤在訪問量極大的一些頁面上的XSS可以攻擊一些小型網(wǎng)站,實現(xiàn)DDoS攻擊的效果。

⑥xss釣魚網(wǎng)站,利用JavaScript腳本直接放用戶跳轉(zhuǎn)到釣魚網(wǎng)站

⑦xss獲取鍵盤記錄,xss可以實現(xiàn)鍵盤操作,但是有局限性,不能跨域。
㈠、xss之存儲型xss:(又被稱為持久性XSS)

存儲型 XSS 的攻擊步驟:

①攻擊者將惡意代碼提交到目標(biāo)網(wǎng)站的數(shù)據(jù)庫中。②用戶打開目標(biāo)網(wǎng)站時,網(wǎng)站服務(wù)端將惡意代碼從數(shù)據(jù)庫取出,拼接在 HTML 中返回給瀏覽器。③用戶瀏覽器接收到響應(yīng)后解析執(zhí)行,混在其中的惡意代碼也被執(zhí)行。 存儲型 XSS攻擊常見于帶有用戶保存數(shù)據(jù)的網(wǎng)站功能,如論壇發(fā)帖、商品評論、用戶私信等。

儲存型XSS會把用戶輸入的數(shù)據(jù)“儲存”在服務(wù)器端。這種XSS具有很強的穩(wěn)定性。持久的XSS危害性大,容易造成蠕蟲,因為每當(dāng)用戶打開頁面,查看內(nèi)容時腳本將自動執(zhí)行。持久型XSS最大的危害在于可能在一個系統(tǒng)中的用戶間互相感染,以致整個系統(tǒng)的用戶淪陷。能夠造成這種危害的腳本我們稱之為XSS蠕蟲。
㈡、xss之反射型xss :(也被稱為非持久性XSS)

反射型 XSS 的攻擊步驟:

①攻擊者構(gòu)造出特殊的 URL,其中包含惡意代碼。

②用戶打開帶有惡意代碼的 URL 時,網(wǎng)站服務(wù)端將惡意代碼從 URL 中取出,拼接在 HTML 中返回給瀏覽器。

③用戶瀏覽器接收到響應(yīng)后解析執(zhí)行,混在其中的惡意代碼也被執(zhí)行。 反射型 XSS漏洞常見于通過 URL 傳遞參數(shù)的功能,如網(wǎng)站搜索、跳轉(zhuǎn)等。

反射型XSS只是簡單的把用戶輸入的數(shù)據(jù)“反射”給瀏覽器,也就是說需要誘使用戶“點擊”一個惡意鏈接,才能攻擊成功。漏洞產(chǎn)生的原因是攻擊者注入的數(shù)據(jù)反映在響應(yīng)中。非持久型XSS攻擊要求用戶訪問一個被攻擊者篡改后的鏈接,用戶訪問該鏈接時,被植入的攻擊腳本被用戶游覽器執(zhí)行,從而達到攻擊目的。
㈢、xss之DOM 型 XSS:

DOM 型 XSS 的攻擊步驟:

①攻擊者構(gòu)造出特殊的 URL,其中包含惡意代碼。

②用戶打開帶有惡意代碼的 URL。

③用戶瀏覽器接收到響應(yīng)后解析執(zhí)行,前端 JavaScript 取出 URL 中的惡意代碼并執(zhí)行。 DOM 型 XSS 跟前兩種 XSS 的區(qū)別:DOM 型 XSS 攻擊中,取出和執(zhí)行惡意代碼由瀏覽器端完成,屬于前端 JavaScript 自身的安全漏洞,而其他兩種 XSS 都屬于服務(wù)端的安全漏洞。
?DOM通常代表在html、xhtml和xml中的對象,使用DOM可以允許程序和腳本動態(tài)的訪問和更新文檔的內(nèi)容、結(jié)構(gòu)和樣式。它不需要服務(wù)器解析響應(yīng)的直接參與,觸發(fā)XSS靠的是瀏覽器端的DOM解析,所以防范DOM型XSS完全就是前端的責(zé)任,必須注意!!!。
5??xss之繞過:

大多數(shù)網(wǎng)站為了避免xss的攻擊,對于攻擊者的輸入都采取了過濾的措施,導(dǎo)致攻擊者通常不能正常插入惡意代碼來達到攻擊目的。但是仍存在一些漏洞可以利用,來繞過過濾措施。

xss繞過的方法有許多,主要取決于攻擊者的思路和對前端技術(shù)的掌握,以下介紹幾個簡單的繞過方法。

1)對前端的輸入字符數(shù)量限制可以嘗試進行抓包重發(fā)或者修改前端的HTML。

2)防止后臺對輸入的內(nèi)容進行正則匹配來過濾輸入,對于這樣的過濾可以考慮大小寫混合輸入的方法。
payload:<sCRipT>alert('你打籃球像oldboy')</sCrIPt>

3)防止后臺對輸入的內(nèi)容進行替換,采用拼拼湊的輸入方法。
payload:<sc<script>ript>alert('你打籃球像oldboy')</scr<script>ipt>

4)使用注釋來干擾后臺對輸入內(nèi)容的識別。
payload:<sc<!--test-->ript>alert('你打籃球像oldboy')</scr<!--tshauie-->ipt>

5)編碼思路:后臺有可能會對代碼中的關(guān)鍵字進行過濾,但我們可以嘗試將關(guān)鍵字進行編碼后在插入。(注意:編碼在輸出時是否會被正常識別和翻譯才是關(guān)鍵,不是所有的編碼都是可以的)

例:使用事件屬性onerror(): <img src=# οnerrοr="alert('oldboy')"/>

使用HTML進行編碼: <img src=x οnerrοr="&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#121;&#97;&#110;&#103;&#115;&#104;&#117;&#97;&#110;&#103;&#39;&#41;"/> 6)htmlspecialchars()函數(shù)繞過:
該函數(shù)的語法:htmlspecialchars(string,flags,character-set,double_encode) 過濾原理:htmlspecialchars() 函數(shù)把預(yù)定義的字符轉(zhuǎn)換為 HTML 實體,從而使XSS攻擊失效。但是這個函數(shù)默認(rèn)配置不會將單引號和雙引號過濾,只有設(shè)置了quotestyle規(guī)定如何編碼單引號和雙引號才能會過濾掉單引號

預(yù)定義的字符是:

& (和號)成為 &amp

" (雙引號)成為 &quot

’ (單引號)成為&#039

< (小于)成為 &lt

>(大于)成為 &gt

可用的quotestyle類型:

ENT_COMPAT - 默認(rèn)。僅編碼雙引號

ENT_QUOTES - 編碼雙引號和單引號

ENT_NOQUOTES - 不編碼任何引號

可使用以下語句繞過: q' onclick**='alert(111)' 點擊執(zhí)行 7) href 繞過:當(dāng)輸入的值在 a 標(biāo)簽 herf 里
payload: javascript:alert(1111) 直接代入 a 標(biāo)簽 herf 里面一樣可以繞過 htmlspecialchars() 8)xss之js輸出繞過:當(dāng)目標(biāo)是用JavaScript腳本輸出的,只需閉合原有的表情即可插入代碼
payload:<script> $ms=' 11111111'</script><script>alert(1111)</script> ;
6??XSS的測試技巧:

①工具掃描:APPscan、awvs、burpsuite、XSSER XSSF②手動測試:Burpsuite、firefox(hackbar)
1)在目標(biāo)站點上找到輸入點,比如查詢接口,留言板等;
2)輸入一組"特殊字符+唯一識別字符",點擊提交后,查看返回的源碼,是否有做對應(yīng)的處理;
3)通過搜索定位到唯一字符,結(jié)合唯一字符前后語法確認(rèn)是否可以構(gòu)造執(zhí)行js的條件(構(gòu)造閉合);提交構(gòu)造的腳本代碼,看是否可以成功執(zhí)行,如果成功執(zhí)行則說明存在XSS漏洞;第一種情況:可得知輸出位置
輸入一些敏感字符,例如<、>、"、'、()等等,在提交請求后去查看HTML源代碼,看這些輸入的字符是否被轉(zhuǎn)義。在輸出這些敏感字符的時候,很有可能程序已經(jīng)做過了過濾,那么你在尋找這些字符的時候就不是那么容易了,這時候你可以直接輸入“XXSER<>"'&”折床字符串,然后在查找源代碼的時候直接進行查找XXSER或許比較方便一些。第二種情況:無法得知輸出位置
非常多的Web應(yīng)用程序源代碼是不對外開放的,這時在進行測試XSS時就有可能無法得知輸入數(shù)據(jù)到底在何處顯示,比如測試某留言本是否存在XSS,那么在留言之后,你必須要經(jīng)過管理員的審核才能進行顯示,這時你是無法得知,你輸入的數(shù)據(jù)在后臺管理頁面處于何種狀態(tài)。
萬能測試XSS漏洞payload:"/></textarea><script>alert(1)</script>
7??XSS的防御策略:

只要有輸入數(shù)據(jù)的地方,就可能存在 XSS 危險。永遠(yuǎn)不相信用戶的輸入。需要對用戶的輸入進行處理,只允許輸入合法的值,其它值一概過濾掉。

XSS防御的總體思路是:對輸入進行過濾,對輸出進行編碼

httpOnly: 在 cookie 中設(shè)置 HttpOnly 屬性后,js腳本將無法讀取到 cookie 信息。

輸入過濾:一般是用于對于輸入格式的檢查,例如:郵箱,電話號碼,用戶名,密碼…等,按照規(guī)定的格式輸入。不僅僅是前端負(fù)責(zé),后端也要做相同的過濾檢查。因為攻擊者完全可以繞過正常的輸入流程,直接利用相關(guān)接口向服務(wù)器發(fā)送設(shè)置。

轉(zhuǎn)義 HTML: 如果拼接 HTML 是必要的,就需要對于url中的引號,尖括號,斜杠進行轉(zhuǎn)義,但這還不是很完善.想對 HTML 模板各處插入點進行充分的轉(zhuǎn)義,就需要采用合適的轉(zhuǎn)義庫。 例如:htmlspecialchars()函數(shù)把一些預(yù)定義的字符轉(zhuǎn)換為 HTML 實體
預(yù)定義的字符是: & (和號)成為 &amp " (雙引號)成為 &quot ’ (單引號)成為&#039 < (小于)成為 &lt >(大于)成為 &gt**

白名單:對于顯示富文本來說,不能通過上面的辦法來轉(zhuǎn)義所有字符,因為這樣會把需要的格式也過濾掉。這種情況通常采用白名單過濾的辦法,當(dāng)然也可以通過黑名單過濾,但是考慮到需要過濾的標(biāo)簽和標(biāo)簽屬性實在太多,更加推薦使用白名單的方式。

總結(jié)

以上是生活随笔為你收集整理的对未标记为可安全执行的脚本_三、??XSS跨站脚本攻击的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。