XSS語義分析的階段性總結(二)

2021-01-07 湖南蟻景

前言

上次分享了javascript語義分析,並且簡單介紹了新型xss掃描器的一些想法,如何在不進行大量fuzz的情況下又能準確的檢測出xss漏洞,這其中我們又可以儘量的避免觸發waf的xss防護功能!

關聯文章:XSS語義分析的階段性總結(一)

首先先接著上文介紹一下html語義分析的方法。

掃描思路

HTML語義分析

如果把html語義分析看為對html結構的解析與識別,在python中我們可以使用HTMLParser,對,又是python幫我解決了難題。在XSStrike裡面同樣使用了自定義的HTMLParser進行漏洞的輔助識別。

我們可以通過繼承HTMLParser並重載其方法來實現我們需要的功能

下面是簡單的 HTML 解析器的一個基本示例,使用HTMLParser類,當遇到開始標記、結束標記以及數據的時候將內容列印出來

class MyHTMLParser(HTMLParser):

def handle_starttag(self, tag, attrs):

print("Encountered a start tag:", tag)

def handle_endtag(self, tag):

print("Encountered an end tag :", tag)

def handle_data(self, data):

print("Encountered some data :", data)

parser = MyHTMLParser()

parser.feed('<html><head><title>Test</title></head>'

'<body><h1>Parse me!</h1></body></html>')

我們需要定義一個我們自己的HTML解析器來處理我們的標籤,標識出來script標籤,html注釋,html標籤,屬性,css等等

部分代碼如下

尋找反射點的思路和js的類似,通過遍歷標籤來來解析html結構,tagname代表標籤名,attibutes代表屬性,content代表數據內容,#comment代表注釋,每個標籤被封裝為字典形式的列表元素

使用以下的demo

<body>

<a href="?q=1&w=2&e=3&r=4&t=5">test</a>

<style>

body{

background:#aaaflag{111222};

}

</style>

<script>

var a = 'xx';flag{111222}</script>

<div>

<textarea>flag{111222}</TexTarea>kkk

</div>ffff<aaaaa>bb

<input style="color:flag{111222}" value2="flag{111222}" aflag{111222}="aaa"/>

<!--

this is comment

5flag{111222}

-->

</body>

</html>

處理後的效果

處理完html標籤,接下該尋找sink輸出點在html的上下文。思路跟js的尋找思路是相同的。通過遍歷列表內容來找到我們的input,部分代碼如下:

最後會給出輸出點上下文的一些細節信息,如是否是html標籤等等

然後根據不同的上下文給出我們的payload,使用html語法樹有很多好處,比如可以準確判斷回顯的位置

探究發包

X3Scan的掃描思路參考了一些xray的掃描思路,比如不發送一些產生危害的payload,只根據回顯的上下文發送一些flag測試一些關鍵字符是否被轉義和過濾,如<>,".',()等,如果沒有過濾最後給出建議payload,如:confirm()

首先對於無法使用html和js解析的回顯,如jsonp和json格式的相應包,我們使用如下的發包順序:

隨機flag ---》判斷回顯 ----》解析找不到回顯 ---》發送<隨機flag> ---》判斷響應包中字符是否轉義---》給出payload

最後給出<img src=1>的payload,對與jsonp_xss這裡有一個tip,正常情況下判斷jsonp_xss,會首先判斷content-type是包含text/html,然後繼續測試,實際測試中當content-type為空時,也可能存在xss漏洞,因此應該對兩種情況都進行一下判斷。

if 'html' in (resp_headers.get("content-type","").lower()) or resp_headers.get("content-type")==None:

對於html標籤內的內容

<h2>xxxxx</h2>

掃描器會依次發送0xb9d8c,</H2><mowvhry>當確認標籤可以閉合,會給出</h2><img src=1>

對於標籤屬性

demo:https://brutelogic.com.br/xss.php?b3=

掃描器會依次發送0xb78123,'psafq=','><arcbvyf>,"psafq=","><arcbvyf>,當確認引號和尖括號沒有被過濾時,最終給出"><img src=1>,"OnMoUsEoVeR=confirm()//。

對於html注釋

`<!-- this is comment <?php echo $t;?> -->`

掃描器會依次發送0xfda748,--><aorxlwd>,--!><aorxlwd>,當確定-->或--!>沒有過濾時,給出payload,--><aorxlwd>

對於script標籤的回顯

掃描器會依次發送0x829a5c,-829a5c-,</sCRiPt><sCRiPt>dncjbwv</sCRiPt>,當最後確認</sCrIpT>未被過濾時,最終給出payload,</sCRiPt><sCRiPt>confirm()</sCRiPt>

另外一種情況就是回顯到script標籤的注釋裡面

使用以下demo

掃描器會依次發出0x829a5c,-829a5c-,</sCRiPt><sCRiPt>dncjbwv</sCRiPt>,\n;rmhwe;//,最後給出payload,</sCRiPt><sCRiPt>confirm()</sCRiPt>,/n;prompt(1);//。

對於塊注釋,掃描器會依次發出,0xc13f,*/0xc13f;/*,最後給出payload,*/prompt(1);/*

通過上面的分析,我們可以發現使用html語法樹有很多好處,比如通過發送一個隨機payload,例如:<wrqweew>,然後通過html語法樹檢測是否有wrqweew這個標籤,便可以確定payload是否執行成功了。

對於回顯在js的情況,發送測試payload後,通過js語法樹解析確定Identifier和Literal這兩個類型中是否包含,如果payload是Identifier類型,就可以直接判斷存在xss,最後給出payload,confirm();//。如果payload是Literal類型,再通過單雙引號來測試是否可以閉合。

另外,還有一些比較精緻的技巧,比如對payload的隨機大小寫,由於html對大小寫是不敏感的,但是一些waf由於設計缺陷能會被繞過。

大致流程

掃描器大致流程:

發送隨機字符--》確認參數回顯---》通過html/js解析確認回顯位置--》根據回顯的上下文發送不同的payload進行測試--》使用html,js語法樹解析是否多出來標籤,屬性,js語句等來確定是否執行成功

成果展示

由於一直處於開發階段,並沒進行大規模測試,但是偶爾也會有個小驚喜,某次調bug的時候發現京東某站的xss

合天網安實驗室相關實驗推薦==XSS進階二

(惡意攻擊者往Web頁面裡插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web裡面的html代碼會被執行,從而形成XSS攻擊)

相關焦點

  • XSS(跨站腳本攻擊)內容總結整理
    XSS(跨站腳本攻擊)內容總結整理跨站腳本攻擊(XSS)XSS 簡介人們經常將跨站腳本攻擊(Cross Site Scripting)縮寫為CSS,但這會與層疊樣式表(Cascading Style Sheets,CSS)的縮寫混淆。因此,有人將跨站腳本攻擊縮寫為XSS。跨站腳本攻擊(XSS),是最普遍的Web應用安全漏洞。
  • 「炒乾貨」XSS知識總結
    跨域方法總結網站推薦:http://www.xss-payloads.com/XSS payload總結再多不如給個github連結[dog]:PayloadsAllTheThings詳細參考(漏洞原理分析):sourse(https://www.madebug.net/static/drops/papers-6905.html)關於更多的Chrome XSS Auditor bypass參考:sourse(https://www.leavesongs.com/chrome-xss-auditor-bypass-collection.html?
  • Semgrep代碼靜態分析:從入門到實戰xss掃描
    靜態分析是一個非常有用的工具,使用它可以幫助開發者或者安全人員在開發階段就能發現代碼中存在的bug和安全問題。靜態分析是一個綜合性和系統性的工程,對於每一個開發者和安全人員來說了解其原理,並能使用工具進行初步的分析很有必要。
  • 鄒炎炎:語義分析介紹及跨語言信息在語義分析中的應用 | AI 研習社...
    雷鋒網 AI 研習社編者按:語義分析(semantic parsing)是人工智慧的一個分支,是自然語言處理技術的幾個核心任務,涉及語言學、計算語言學、機器學習,以及認知語言等多個學科。近年來,隨著人工智慧的發展,語義分析也越發重要。word embedding 是很常見的 input feature,能夠很大程度地提升語義分析模型的性能。
  • 一些BAT的XSS實例(一)
    前 言上次發了篇《強防禦下的XSS繞過思路》的文章,有很多人私信問我,能不能來一些XSS繞過實例分析,這裡我選了些N年前的BAT的XSS實例來聊聊構造和繞過思路。當然這些實例,都是已經公開並且修補完畢的,我這裡是只是以此為原型,並做了一定的修改,進行了一些XSS題目的設計而已。
  • Web滲透測試(XSS)
    http://192.168.16.107/xssTest/DOM-XSS/?message=%3Cscript%3Ealert(/xss/);%3C/script%3Ehttp://192.168.16.107/xssTest/DOMXSS/34;utf-8&34;message=& 號的⽅式,參數不會被提交到伺服器(沒有提交到伺服器,waf檢測不到!)
  • 視圖層wxml和wxss文件
    2.數據綁定在js文件的介紹中,我們也提及了簡單數據綁定的內容,下面我們再做進一步的分析。所謂的數據綁定就是,實現js文件和wxml文件之間的數據交互。具體的數據綁定有以下幾種:數據的簡單綁定就是我們在《邏輯層js文件》的文章中提及的數據綁定的形式。這裡不再贅述。屬性的綁定
  • 人工智慧中的語義分析技術及其應用
    一段文本通常由詞、句子和段落來構成,根據理解對象的語言單位不同,語義分析又可進一步分解為詞彙級語義分析、句子級語義分析以及篇章級語義分析。一般來說,詞彙級語義分析關注的是如何獲取或區別單詞的語義,句子級語義分析則試圖分析整個句子所表達的語義,而篇章語義分析旨在研究自然語言文本的內在結構並理解文本單元(可以是句子從句或段落)間的語義關係。
  • XSS攻擊的原理
    諸如此類,唯一能完全杜絕xss攻擊的方法,就是禁用script,img等,顯然這是不靠譜的,用戶需要豐富的頁面內容;當然我們可以用一些方法預防xss攻擊,儘量減少xss造成的危害。><iframe src=javascript:alert(『xss – gotcha!』)
  • 京東商品評論情感分析|語義網絡分析
    語義網絡的本質語義網絡是一種社會網絡分析的方法,由大量的常識與概念構成,用戶藉助於微博,臉書等社交媒體工具,由社交媒體工具構建聯繫網絡,通過語義網絡,識別評價主體與評論主體觀點間的聯繫。由網絡節點和有向線段組成完整的語義網絡關係圖,在圖中,概念之間的從屬關係用箭頭的方向來表示。
  • 英語偏正式名名合成的語義分析
    本文以 「headache」為例,在概念合成理論(Conceptual Integration Theory)的框架下,分析英語中偏正式名名合成(Subordinate noun-noun compounding)的語義特點。
  • Spring Boot XSS 攻擊過濾插件使用
    xss 攻擊流程簡單 xss 攻擊示例若網站某個表單沒做相關的處理對 json 字符串數據進行 xss 處理。提供路由和控制器方法級別的放行規則。使用 mica-xss引入一下 依賴即可<!")public String xss(String params){ return params;}返回為空⋊> ~ curl --location --request GET 'http://localhost:8080/xss?
  • XSS的相關知識
    詳情看下面《XSS的原理分析與解剖》博文說明。XSS攻擊:xss就是在頁面執行你想要的js,只要能允許JS,就能獲取cookie(設置http-only除外),就能發起一些事件操作等。現在測試xss一般都拿能過chrome的為主2、現在的chrome瀏覽器默認開啟了xss過濾機制,可以通過關閉該機制來進行xss測試,方法如下: windows下,右鍵桌面中的&34;快捷鍵,然後在目標選項,chrome.exe後面加上參數:--args --disable-xss-auditor即可。
  • 強防禦下的XSS繞過思路(二) 黑名單篇
    這樣子,由於語義解析問題和瀏覽器html代碼補全機制,這種方法在以前是可以幹掉很多富文本的規則的,現在隨著安全的發展,相對也不是太好用了。以前這個方法用的還是比較多的,現在很多程序已經考慮到這點,基本都會進行循環過濾和語義分析,所以這個姿勢已經不太能過一些大廠的規則了。二輸出在js代碼中1 過濾單引號、等號的時候在js環境中,方法相對靈活很多,比如單引號過濾,很多時候可以用反單引號。
  • 如何利用AI語義分析,做產品需求分析(1)
    二、AI人工智慧與產品需求管理可見許多時候產品在判斷用戶的需求的時候是沒有什麼數據支持的,或者是基於很小的數據樣本,這很容易導致產品方向上的錯誤,也讓我們遺漏了需求與機遇。那麼我們是否可以通過人工智慧技術幫助我們判斷用戶的需求,並且以數據為基礎指導我們產品方向呢?答案是肯定的,下面我列舉一些方向:1.
  • .| 多人姿勢估計;對話框語義分析;無監督語義分析;自然語言處理...
    還有一種是將自然語言直接轉換為計算機可以理解並且執行的語言,本文就是解決這個問題創新點:面向任務的對話框系統的分層語義表示,它可以對組合查詢和嵌套查詢建模。提出了一個語義解析的層次化注釋方案,它允許組合查詢的表示,並且可以被標準的選區解析模型高效準確地解析。而且還發布了一個由44k個帶注釋的查詢1組成的數據集。
  • Csrf+Xss組合拳
    0x02這個站簡單的先用手機看了下,這種網課站我感覺xss比較好尋找一些,所以我找到的都是一些存儲型xss,先看一下第一個基本沒鳥用的xss用戶個人資料處更改姓名成功顯示彈窗經測試1.學號2.身份3.學校4.姓名處均存在存儲型xss
  • 中美主流媒體人工智慧報導的框架建構——一種語義網絡分析的視角
    本研究以科技傳播為切口,對中美主流媒體關於人工智慧報導的文本進行框架分析,並借用語義網絡分析的視角,試圖通過探究文本中框架生成機制與相互勾連情況,對這一熱門科技的媒體圖景進行描摹。 二、 文獻綜述 (一)新聞框架:概念、作用與機制 眾所周知,受眾接觸到的新聞並不是社會現實「鏡子」式的反映,而是媒介組織藉助一定新聞框架建構呈現的事實。
  • xss攻擊原理與解決方法
    一、需要向web頁面注入惡意代碼;二、id=" /><script>alert(/xss/)</script><br x="最終反射出來的HTML代碼: <div> <img src="/images/handler.ashx?
  • 搭建自己的xss平臺
    環境php7.4kali 2020 (apache + mysql)安裝首先下載源碼git clone https://github.com/78778443/xssplatform.git將其放到var/www/html也可以自行在kali中配置虛擬主機。