整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          跨站腳本(XSS)漏洞實戰演示-由易到難2

          跨站腳本(XSS)漏洞實戰演示-由易到難2

          面幾篇文章我們講到了跨站腳本(XSS)漏洞的幾種類型和驗證方法以及防御措施,有興趣的朋友可以到我的主頁翻看文章《十大常見web漏洞——跨站腳本漏洞》和《實操web漏洞驗證——跨站腳本漏洞》,今天我們繼續由易到難實戰演示一下跨站腳本漏洞的形成,以便更好地了解漏洞的產生原理,進一步做好防御。

          上一篇文章我們已經闖過了5關,今天我們繼續。

          html事件中的xss

          html事件是在滿足一定條件的用戶行為發生時,所觸發的的事件,例如當單擊鼠標時的“onclick”以及當瀏覽器加載圖像時的“onload”,我們可以將這些特定的html事件發生時,將JavaScript語句作為屬性傳遞給特定的標簽,從而構成一個或多個JavaScript命令或函數。

          下圖我們從網上搜索了一些html事件屬性,有興趣的可以自己搜索學習。

          html事件屬性

          在這一關中,我們可以構造語句:

          111" onmouseover="alert(document.domain);"

          前邊的“111"”是為了閉合標簽,后邊的“onmouseover”屬性表示當鼠標移動到輸入框時執行后邊的語句,點擊“search”按鈕,將鼠標移動到輸入框時,頁面在彈出內容為當前頁面域名的彈窗后,提示“恭喜!”,就可以順利進入下一關了,如下圖所示:

          恭喜通關

          空格分隔屬性中的xss

          這一關我們先來探測一下注入點的情況,我們和之前一樣先閉合標簽,輸入“123456"”來閉合標簽,找到對應的代碼,發現我們輸入的內容被另一對引號括住了,如下圖所示:

          頁面代碼

          這表明我們輸入的內容直接被實體化了,那我們不使用引號閉合,直接輸入“123456 onmouseover=“alert(document.domain)””,發現只要是等號后邊的參數都被引號括了起來,如下圖所示:

          頁面代碼

          因此我們都不加引號,構造:

          123456 onmouseover=alert(document.domain)

          注意中間有個空格,點擊“search”按鈕時,頁面在彈出內容為當前頁面域名的彈窗后,提示“恭喜!”,就可以順利進入下一關了,如下圖所示:

          恭喜通關

          JavaScript偽協議觸發XSS

          有時候我們需要將JavaScript代碼添加到客戶端中,這時就需要JavaScript偽協議來幫助,它的格式為JavaScript:url,例如:JavaScript:alert("hello word!"),就是一個簡單的通過JavaScript偽協議來執行alert("hello word!")語句,它表示在頁面顯示“hello word!”。

          因此我們可以構造語句

          JavaScript:alert(document.domain);

          點擊“Make a Link”按鈕時,可見輸入框下邊出現一個URL超鏈接,我們點擊這個鏈接,如下圖所示:

          URL超鏈接

          頁面在彈出內容為當前頁面域名的彈窗后,提示“恭喜!”,就可以順利進入下一關了,如下圖所示:

          恭喜通關

          UTF-7中的xss

          這個比較簡單,因為UTF-7絕大多數瀏覽器都已經不用了,我們很少會遇到,因此我們直接構造語句:

          onclick=alert(document.domain);

          我們按F12鍵,根據下圖提示找到第三步位置,將以上語句寫入到對應位置,再點擊第二步的位置,如下圖所示:

          修改頁面代碼

          頁面在彈出內容為當前頁面域名的彈窗后,提示“恭喜!”,就可以順利進入下一關了,如下圖所示:

          恭喜通關

          繞過過濾domain為空的xss

          首先我們還是老辦法構造閉合語句,如下所示:

          "><script>alert(document.domain);</script>

          點擊“search”,按F12,找到如下圖紅框中的位置,發現我們上邊構造的語句中“domain”被刪除了,如下圖所示:

          頁面代碼

          既然被刪除了,這時我們可以通過雙寫來繞過domain被刪除這種情況,我們可以構造:

          "><script>alert(document.dodomainmain);</script>

          注意我們在單詞domain中間又加了一個單詞domain,這時系統在刪除一個單詞domain后,還會留下一個domain,這樣我們就成功執行了語句了。

          點擊“search”按鈕時,頁面在彈出內容為當前頁面域名的彈窗后,提示“恭喜!”,就可以順利進入下一關了,如下圖所示:

          恭喜通關

          當然我們也可以通過編碼的方法來繞過,我們可以構造:

          "><script>eval(atob('YWxlcnQoZG9jdW1lbnQuZG9kb21haW5tYWluKTs='));</script>

          其中“eval”是用來執行字符串,其后邊的內容會當成JavaScript語句執行,“atob”表示將加密的base64密文,轉換成原文,而里邊的一串亂碼就是通過base64加密過的的“alert(document.domain)”語句,關于加密,有興趣的可以閱讀我的文章《Web滲透測試——密碼學基礎》,其實和上邊的語句一樣,這樣就可以避免domain被刪除了。

          以上就是跨站腳本(XSS)漏洞實戰演示——由易到難第二部分的全部內容,希望對你了解XSS漏洞有所幫助,歡迎關注@科技興了解更多科技尤其是網絡安全方面的資訊和知識。

          對于客戶端,運行著 web 程序的服務器由于其擁有豐富的資源、對外公開的特性和復雜的業務邏輯對于黑客來說往往擁有更大的吸引力和攻破的可能性。

          對于xss這一個漏洞十分感興趣,或者出于各種各樣的目的需要深入學習,其實絕大多數網絡上博客、包括一些開源的工具,時效性較差,給初學者帶來很多困擾和不必要的坑。 我僅以xss這個漏洞的名稱來舉例:本身這個漏洞的名字叫 corss site scripting 簡寫為css,但是之所以叫xss是因為css與web瀏覽器中解析的層疊樣式表(css)重名,故取名xss。然而,cross site scripting 直譯過來叫做跨站腳本攻擊,其實這個名字本身也存在誤導性。如今的web前端開發者應該都清楚,在現代瀏覽器的同源策略保護下,瀏覽器中的跨域行為受到了限制,并且其實從xss這個漏洞的攻擊原理上講,“跨站”這兩個字其實真的沒有什么必要。

          請點擊此處輸入圖片描述

          跨站腳本攻擊(XSS)

          原理:

          服務器沒有對用戶的輸入做到充足的過濾,導致頁面被嵌入惡意腳本

          分類:

          • 反射型:只能通過用戶點擊惡意構造的鏈接才能觸發攻擊

          • 存儲型:惡意代碼保存在服務器,只要有人訪問該頁面就會觸發攻擊

          效果:

          • 通過獲取用戶的 cookie,實現會話劫持

          • 通過在頁面偽造表單,獲取用戶的賬號密碼

          • XSS 蠕蟲

          實現方式:

          在可提交的輸入框中構造輸入,有時需要閉合引號,中括號等,有時需要對輸入進行編碼以繞過 WAF。

          一般情況下,手動查找 XSS 注入點通常需要結合查看網頁的源代碼,找到自己的輸入出現在了頁面的哪個地方,然后根據該點附近的上下文構造惡意代碼,比如,一個用 php 編寫的頁面為:

          <? php $input=$_GET["param"]; echo "<div>".$input."</div>"; ?>

          在正常情況下,用戶的請求會在頁面中顯示出來。但是如果提供給 param 的參數是一段 HTML 代碼,那么瀏覽器就會將它當做代碼解析執行

          值得注意的地方:

          • 有時 web 程序會用轉義字符的方式轉義特殊字符,然而,如果數據庫使用的編碼方式與 web 程序不同時,特別是數據庫使用的是雙字節字符編碼,而負責過濾的 web 程序使用的是單字節字符編碼,可能會導致過濾失敗。例如,數據庫使用了 GBK 編碼,而 web 應用使用的是 ASCII 編碼,當用戶輸入 0xbf27 時,由于 27 是單引號 ',web 程序會將其轉義,變成 0xbf5c27,但是在數據庫中,由于使用的是 GBK 編碼,會將 bf5c 認為是一個字符,從而再次暴露了單引號 '

          • HTTP 參數污染有時可以繞過 WAF 的過濾

          跨站請求偽造(CSRF)

          原理:

          由于

          簡單的身份驗證只能保證請求發自某個用戶的瀏覽器,卻不能保證請求本身是用戶自愿發出的

          ——維基百科

          用戶訪問完某個網站之后,瀏覽器會在一定時間內保存這個網站產生的 cookie,如果在這個 cookie 的有效期內,攻擊者可以利用瀏覽器再次訪問網站時會自動帶上 cookie 的特性偽造請求,實現了 CSRF

          效果:

          可以執行任意在用戶的權限內的操作

          實現方式:

          在可跨域的標簽如img、iframe中構造惡意 url,或構造使用 post 方法的表單并誘導用戶訪問該頁面,即可實現攻擊

          總結針對 web 程序的攻擊方式,這些方式造成的后果不一,小到會話劫持,大到直接拿到服務器的管理員權限,這完全取決于 web 程序的安全設置,但從根本上來說,這些安全問題都是可以徹底避免的。

          經測試,發現 User ID 的輸入框中存在反射型的 XSS 漏洞,在該輸入框中構造輸入:test" onmouseover=prompt(100) bad=',點擊 Go 提交該輸入后,在返回的頁面中已被嵌入了惡意代碼,當鼠標移動到 User ID 上后,會彈出一個提示框

          請點擊此處輸入圖片描述

          XSS 后的頁面

          查看網頁的源代碼,可以發現 User ID 這個輸入框確實被我們的輸入控制了

          XSS 后的頁面和正常頁面的源碼比較

          請點擊此處輸入圖片描述

          值得注意的地方

          • 如果在前端過濾用戶輸入的話,可以使用 Burp Suite 等工具繞過過濾

          • 設置 HttpOnly 可以禁止客戶端的腳本訪問 cookie,但是依然可以通過抓包的方式獲取到 cookie

          SQL 注入

          原理:

          服務器沒有對用戶的輸入做到充分的過濾,導致可執行任意 SQL 語句

          效果:

          • 如果當前用戶具有對數據庫的讀權限,導致數據庫信息泄露

          • 如果當前用戶具有對數據庫的讀寫權限,可對數據庫進行任意修改

          • 如果當前用戶具有對數據庫的管理員權限,可對數據庫的用戶及數據庫進行任意操作

          對于XSS的漏洞挖掘過程,其實就是一個使用Payload不斷測試和調整再測試的過程,這個過程我們把它叫做Fuzzing;同樣是Fuzzing,有些人挖洞比較高效,有些人卻不那么容易挖出漏洞,除了掌握的技術之外,比如編碼的繞過處理等,還包含一些技巧性的東西,掌握一些技巧和規律,可以使得挖洞會更加從容。

          Fuzzing(模糊測試)是挖掘漏洞最常用的手段之一,不止是XSS,應該可以說Fuzzing可以用于大部分類型的漏洞挖掘。通俗可以把這種方式理解為不斷嘗試的過程。黑客入門書籍《網絡黑白》t寶有

          網站指令碼(英語:Cross-site scripting,通常簡稱為:XSS)是一種網站應用程式的安全漏洞攻擊,是代碼注入的一種。它允許惡意使用者將程式碼注入到網頁上,其他使用者在觀看網頁時就會受到影響。這類攻擊通常包含了HTML以及使用者端腳本語言。

          XSS攻擊通常指的是通過利用網頁開發時留下的漏洞,通過巧妙的方法注入惡意指令代碼到網頁,使用戶加載并執行攻擊者惡意制造的網頁程序。這些惡意網頁程序通常是JavaScript,但實際上也可以包括Java,VBScript,ActiveX,Flash或者甚至是普通的HTML。攻擊成功后,攻擊者可能得到更高的權限(如執行一些操作)、私密網頁內容、會話和cookie等各種內容。


          主站蜘蛛池模板: 一区一区三区产品乱码| 51视频国产精品一区二区| 国产成人综合亚洲一区| 国产一区在线视频观看| 亚洲一区二区精品视频| 色婷婷综合久久久久中文一区二区| 中文字幕日韩丝袜一区| 国产成人久久一区二区不卡三区 | 亚洲蜜芽在线精品一区| 精品无码国产一区二区三区51安| 狠狠爱无码一区二区三区| 亚洲AV无码一区二区二三区软件 | 国产成人精品一区二三区在线观看 | a级午夜毛片免费一区二区| 亚洲狠狠狠一区二区三区| 日韩一区二区免费视频| 日本一区精品久久久久影院| 亚洲欧美成人一区二区三区| 久久无码一区二区三区少妇| 国产日韩一区二区三区在线播放| 国产伦精品一区二区三区免费下载| 亚洲熟女一区二区三区| 日本精品一区二区三本中文| 亚洲av福利无码无一区二区| 国产福利一区二区| 免费无码毛片一区二区APP| 女人和拘做受全程看视频日本综合a一区二区视频 | 蜜臀AV无码一区二区三区| 中文字幕精品无码一区二区| 亚洲AV无码国产精品永久一区| 日韩精品无码一区二区三区AV | 中文字幕无线码一区二区| 中文字幕一区二区三区视频在线| 一区二区三区无码被窝影院| 亚洲一区AV无码少妇电影☆| 日本丰满少妇一区二区三区| 国产成人综合一区精品| 无码国产精品一区二区免费式芒果 | 一级特黄性色生活片一区二区| 亚洲一区欧洲一区| 久久久国产精品亚洲一区|