最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

XSS基礎(chǔ)學(xué)習(xí)筆記

2023-03-20 13:02 作者:Binary-Royallu科技  | 我要投稿

XSS基礎(chǔ)

XSS概念:

通常情況下,在Web應(yīng)用的網(wǎng)頁中,有些部分的顯示內(nèi)容會根據(jù)外屆輸入值而發(fā)生變化(會反彈惡意代碼),而如果生成這些HTML的程序中存在問題,就會滋生名為跨站腳本(Cross-Site Scripting)的安全隱患。由于它和知名的CSS(層疊樣式表)縮寫沖突,所以經(jīng)常縮寫為XSS。

XSS的實(shí)質(zhì)其實(shí)是HTML代碼與Javscript代碼的注入。但由于XSS的攻擊對象是與客戶對等的Browser端,因此常常不被開發(fā)者所重視。

一般意義上的XSS通??梢杂煤唵蔚姆椒z測出來:當(dāng)用戶輸入中某個參數(shù)的全部或其中一部分,原封不動地在源代碼里出現(xiàn)時,我們就可以認(rèn)為這個參數(shù)存在XSS漏洞。

XSS的風(fēng)險:

Web應(yīng)用若存在XSS漏洞,就會有如下風(fēng)險:

  • 用戶的瀏覽器中運(yùn)行攻擊者的惡意腳本,從而導(dǎo)致Cookie信息被竊取,用戶身份被報名頂替。

  • 攻擊者能獲得用戶的權(quán)限來惡意使用Web應(yīng)用的功能。

  • 向用戶顯示偽造的輸入表單,通過釣魚式攻擊竊取用戶的個人信息。

XSS漏洞總覽:

  • 產(chǎn)生地點(diǎn):Web應(yīng)用中南生成HTML和JavaScript的地方。

  • 影響范圍:Web應(yīng)用全體

  • 影響類型:在網(wǎng)站用戶的瀏覽器中執(zhí)行JavaScript,顯示偽造的網(wǎng)站內(nèi)容。

  • 影響程度:中~大。

  • 用戶參與程度:需要—> 瀏覽惡意網(wǎng)站、點(diǎn)擊郵件內(nèi)的附屬連接、瀏覽已被入侵的網(wǎng)站等。

  • 對策概要:用雙引號括起來屬性對,轉(zhuǎn)義HTML中的特殊字符。

XSS被惡意使用的三種方法:

  1. 竊取Cookie值

  2. 通過JavaScript攻擊

  3. 篡改網(wǎng)頁

同源策略:

  • 同源策略:來自相同網(wǎng)站的頁面。

  • 不同源策略:來自不同網(wǎng)站的頁面。

跨站腳本類型:

XSS分類:可根據(jù)不同分類方式,分為不同類型。

  • 按形式分:反射型XSS 存儲型XSS

  • 按介質(zhì)分:JSXSS FlashXSS

  • 按接口分:DOM base XSS , 非DOM XSS

注:因此沒有反射型XSS、存儲型XSS、DOM XSS這種分類,因?yàn)榉诸愐罁?jù)都不同…

反射型XSS:

如果攻擊用JavaScript代碼位于攻擊目標(biāo)網(wǎng)站之外的其他網(wǎng)站(惡意網(wǎng)站或者郵件中的URL),就 稱為反射型的XSS(Reflected XSS)。

竊取Cookie實(shí)例中用到的XSS攻擊模式就屬于反射型XSS。

反射型XSS多發(fā)生于網(wǎng)頁將用戶輸入值原封不動地顯示出來的情況。其中,輸入值確定頁面就是一個典型的例子。

存儲型XSS:

有時攻擊者也會將攻擊用JavaScript代碼保存至攻擊對象的數(shù)據(jù)庫中。這種模式的XSS就被稱為存儲型的XSS(Stored XSS)或持久性的XSS(Presistent XSS)。

存儲型的XSS的典型攻擊對象為Web郵箱客戶端以及社交網(wǎng)站(Social Networking Service,簡稱SNS)。

存儲型XSS無需攻擊者費(fèi)勁心思將用戶引誘至惡意網(wǎng)站,而且即使是戒心很重的用戶也會有很大的幾率中招,因此對攻擊者來說益處多多。

存儲型XSS:

  • 長期存儲與服務(wù)器端

  • 每次用戶訪問都會被執(zhí)行JS腳本

客戶端表單長度限制:

  • 客戶端源碼修改限制

  • 代理截斷

DOM型XSS:

  • DOMXSS漏洞是基于文檔對象模型(Document Object Model)的一種漏洞。

  • DOM是一套JS和其他語言課調(diào)用的API(遍歷、獲取、修改)。

  • 根據(jù)XSS在DOM中輸出點(diǎn)的不同,DOM XSS機(jī)有可能是反射型,也有可能是存儲型。

注意:‘#’,它告訴瀏覽器所有在它后面的東西都是個片段,也就是不作為查詢的一部分。IE(6.0)和Mozilla不會把這個片段發(fā)送到服務(wù)器,因此服務(wù)器端看到的只是#號前面提交的參數(shù)。這樣如果#號后面填充了惡意腳本,就不會被服務(wù)器端看到。

如果服務(wù)器端直接讀取客戶端提交參數(shù)的所有,重寫改寫頁面,就會將惡意腳本寫到頁面。在寫頁面時,需要先使用URL解碼。

兩種典型的DOM過程:

反射型DOM base XSS:

  1. 用戶輸入帶有參數(shù)的URL

  2. JavaScript處理URL并獲取參數(shù)

  3. 通過DOM調(diào)用參數(shù)對頁面進(jìn)行排版。

  4. 通過DOM動態(tài)輸出到頁面上。

存儲型DOM base XSS:

  1. 用戶輸入帶有參數(shù)的URL或者Body域數(shù)據(jù)

  2. 服務(wù)器將參數(shù)存入數(shù)據(jù)庫

  3. 通過JSON格式返回參數(shù)到頁面

  4. 通過DOM調(diào)用參數(shù)進(jìn)行排版

  5. 通過DOM動態(tài)輸出到頁面上。

XSS產(chǎn)生的根源:

XSS漏洞產(chǎn)生的原因?yàn)椋?strong>生成HTML的過程中,HTML語法中含有特殊意義的字符(元字符)沒有被正確處理,結(jié)果導(dǎo)致HTML或JavaScript被肆意注入,從而使得原先的HTML結(jié)構(gòu)產(chǎn)生變化。為了消除元字符的特殊意義,將其轉(zhuǎn)化為普通字符,就需要用到轉(zhuǎn)義(Escape)處理。HTML的轉(zhuǎn)義處理對消除XSS至關(guān)重要。

HTML轉(zhuǎn)義:

在HTML中顯示< 時,必須按照字符實(shí)體引用(Character Entity Reference)將其轉(zhuǎn)義記載為 &lt;而如果忽略這一步驟直接生成HTML的話,瀏覽器會將 < 解釋為標(biāo)簽的開始。從而就或招致惡意利用此漏洞進(jìn)行的XSS攻擊。

在HTML中,根據(jù)字符所處位置的不同,應(yīng)當(dāng)轉(zhuǎn)義的元字符也會發(fā)生變化。

元素內(nèi)容轉(zhuǎn)義:

  • 特征:能解釋Tag和字符實(shí)體;結(jié)束邊界字符為<。

  • 轉(zhuǎn)義:< 和 & 使用字符實(shí)體轉(zhuǎn)義。

PHP轉(zhuǎn)義函數(shù):

htmlspecialchars($String, $quote_style, $charset)

  • $string :轉(zhuǎn)換對象字符串

  • $quote_style:轉(zhuǎn)換方法。

    | 轉(zhuǎn)換前 | 轉(zhuǎn)換后 | ENT_NOQUOTES | ENT_COMPAT | ENT_QUOTES |
    | —— | ——- | ———— | ———- | ———- |
    | < | &lt; | 支持 | 支持 | 支持 |
    | > | &gt; | 支持 | 支持 | 支持 |
    | & | &amp; | 支持 | 支持 | 支持 |
    | “ | &quot; | 不支持 | 支持 | 支持 |
    | ‘ | &#39; | 不支持 | 不支持 | 支持 |

    一般使用最后一種即可:ENT_QUOTES

  • $charset:字符編碼。如UTF-8、GBK。

屬性值(雙引號中南的內(nèi)容)轉(zhuǎn)義:

  • 特征:能解釋字符實(shí)體;結(jié)束邊界字符為雙引號。

  • 轉(zhuǎn)義:屬性值用雙引號括起來,< 和 & 和 “ 使用字符實(shí)體轉(zhuǎn)義。

XSS的輔助性對策:

  • 輸入校驗(yàn):通過檢驗(yàn)輸入值的有效性,當(dāng)輸入值不符和條件是就顯示錯誤消息,并促使用戶重新輸入,有時也能夠防御XSS攻擊。

  • 給Cookie添加HttpOnly屬性:Cookie中有名為HttpOnly屬性,該屬性能禁止JavaScript讀取Cookie值。

    通過給Cookie添加HttpOnly屬性,能夠杜絕XSS中竊取會話ID這一典型的攻擊手段。但需要注意的是其他攻擊手段依然有效,所以這樣只能是限制了攻擊者的選擇范圍,并不能杜絕所有的XSS攻擊。

    php.init:session.cookie_httponly=On

XSS對策總結(jié):

根本性對策(個別對策)

  • HTML的元組內(nèi)容:使用htmlspecialchars函數(shù)轉(zhuǎn)義。

  • 屬性值:使用htmlspecialchars函數(shù)轉(zhuǎn)義并用雙引號括起來。

根本性對策(共通對策)

  • 明確設(shè)置HTTL響應(yīng)的字符編碼。

輔助對策

  • 輸入校驗(yàn)

  • 給Cookie添加HttpOnly屬性。

XSS進(jìn)階

HTML組成元素

  • 腳本(事件綁定)

  • 事件綁定函數(shù)中的字符串字面量

  • 屬性值/(URL),屬性位置防止雙引號。

  • 元素內(nèi)容,元素位置防止尖角符號。

  • script元素中南的字符串字面量

JavaScript問題:

之所以會混入安全隱患,是因?yàn)?strong>沒有將JavaScript字符串字面量進(jìn)行轉(zhuǎn)義。因此,輸入?yún)?shù)中的單引號沒有被識別為字符,而是被當(dāng)成了JavaScript中南字符串的結(jié)束符。

為了避免這種情況,理論上應(yīng)采取如下措施:

  • 首先,將數(shù)據(jù)作為JavaScript字符串字面量進(jìn)行轉(zhuǎn)義。

  • 將得到的結(jié)果再次進(jìn)行HTML轉(zhuǎn)義。

JS字符串字面量中南應(yīng)被轉(zhuǎn)義的字符:

JS字符串字面量動態(tài)生成的對策:

按照J(rèn)avaScript語法,將引號(單引號及雙引號)和斜杠\及換行符等進(jìn)行轉(zhuǎn)義?!盶“” 。如果是事件綁定函數(shù),將JS執(zhí)行結(jié)果按照字符實(shí)體進(jìn)行HTML轉(zhuǎn)義, 并用雙引號括起來。

如果是在script元素中,執(zhí)行JS后,確保字符串中不存在</ 。

雖然理論上如此,但JavaScript的轉(zhuǎn)義規(guī)則相當(dāng)復(fù)雜,執(zhí)行起來很容易產(chǎn)生疏漏,因此一直以來都是安全隱患誕生的溫床。鑒于這種情況,最好的辦法可能是避免動態(tài)生成JavaScript。然而,現(xiàn)實(shí)中又會經(jīng)常需要傳給JavaScript的參數(shù)是動態(tài)的。此時,一般使用Unicode轉(zhuǎn)義的解決方案。

Unicode轉(zhuǎn)義:

為了避免動態(tài)生成JavaScript帶來的風(fēng)險,可以采取將字母和數(shù)字以外的其他所有字符都進(jìn)行轉(zhuǎn)義的方法。這種方法利用了JavaScript能將Unicode代碼點(diǎn)U+XXXX字符轉(zhuǎn)義為\uXXXX的功能。

輔助方案:錯誤消息導(dǎo)致的信息泄露。

  • 錯誤消息中包含對攻擊者有幫助應(yīng)用程序內(nèi)部信息。

  • 通過蓄意攻擊使錯誤信息中顯示隱私信息(如用戶個人信息等。)

應(yīng)用程序內(nèi)部信息是指,發(fā)生錯誤的函數(shù)名、數(shù)據(jù)庫的表名、列名等,這些信息都可能成為攻擊的突破口。

為了解決以上問題,當(dāng)應(yīng)用程序發(fā)生錯誤時,應(yīng)該僅在頁面上顯示“此時訪問量太大,請稍后再試”等提示用戶的消息。

PHP的情況下,禁止顯示詳細(xì)錯誤信息,只需要在php.ini中做如下設(shè)置:

display_errors = Off

HTML轉(zhuǎn)義概要:

XSSer簡介-確認(rèn)XSS存在的工具

XSSer概述:

跨站點(diǎn)“Scripter”(又名XSSer)是一個自動化框架,用于檢測、利用以及報告基于Web應(yīng)用程序
中的XSS漏洞。

XSS是Web應(yīng)用常見的漏洞。利用該漏洞,安全人員在網(wǎng)站注入惡意腳本,控制用戶瀏覽器,并發(fā)起其他滲透操作。XSSer是Kali Linux提供的一款自動化XSS攻擊框架。該工具可以同時探測多個網(wǎng)址。如果發(fā)現(xiàn)XSS漏洞,可以生成報告,并直接進(jìn)行利用,如建立反向連接。為了提供攻擊效率,該工具支持各種規(guī)避措施,如判斷XSS過濾器、規(guī)避特定的防火墻、編碼規(guī)避。同時,該工具提供豐富的選項(xiàng),供用戶自定義攻擊,如指定攻擊載荷、設(shè)置漏洞利用代碼等。

一個自動框架、檢測,利用和報告基于Web應(yīng)用的XSS漏洞。

支持命令行、圖形化界面。

提供繞過服務(wù)器過濾的選項(xiàng),以及一些特殊的代碼注入技術(shù)。

XSSer經(jīng)典命令:

BeEF攻擊簡介

BeEF概述:

通過XSS漏洞,將hook.js腳本注入,可將中招的客戶端掛起。

如果客戶端瀏覽器關(guān)掉,則連接會斷開。

可以做持久化連接。不讓用戶關(guān)閉瀏覽器,或者后臺開一個小窗。

BeEF(Brower exploitation framerwork):

  • 生成,交付Payload

  • Ruby語言編寫

  • 服務(wù)器端:管理Hooked客戶端

  • 客戶端:運(yùn)行與客戶端瀏覽器的JS腳本(hook)

降低白帽子對JS代碼的要求。

BeEF主要針對瀏覽器(客戶)進(jìn)行攻擊。

  • 應(yīng)用普遍轉(zhuǎn)移到B/S架構(gòu),瀏覽器稱為唯一客戶端程序。

  • 結(jié)合社會工程學(xué)方法對瀏覽器進(jìn)行攻擊。

  • 攻擊瀏覽器用戶

  • 通過注入的JS腳本,劉勇瀏覽器工具其他網(wǎng)站

BeEF攻擊手段:

  • 利用網(wǎng)站XSS漏洞實(shí)現(xiàn)攻擊

  • 誘使客戶端訪問包含hook的偽造網(wǎng)站

  • 結(jié)合中間人攻擊注入hook腳本

BeEF常見用途:

  • 鍵盤記錄器

  • 網(wǎng)絡(luò)掃描

  • 瀏覽器信息收集

  • 綁定shell

  • 與Metasploit集成


XSS基礎(chǔ)學(xué)習(xí)筆記的評論 (共 條)

分享到微博請遵守國家法律
龙山县| 石门县| 泰宁县| 固阳县| 仁化县| 县级市| 丁青县| 嘉定区| 广丰县| 碌曲县| 连江县| 鹤峰县| 陇南市| 洪泽县| 团风县| 山西省| 稻城县| 锦州市| 安龙县| 阿尔山市| 乃东县| 怀柔区| 黄冈市| 香港| 长垣县| 裕民县| 东源县| 镇宁| 长丰县| 万州区| 祁连县| 长岭县| 襄樊市| 江安县| 安多县| 东城区| 肇源县| 苍山县| 信阳市| 潮州市| 江津市|