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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

布尔表达式的语法及语义分析程序_XSS语义分析的阶段性总结(一)

發布時間:2023/12/2 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 布尔表达式的语法及语义分析程序_XSS语义分析的阶段性总结(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:Kale 合天智匯

前言

由于X3Scan的研發已經有些進展了,所以對這一階段的工作做一下總結!對于X3Scan的定位,我更加傾向于主動+被動的結合。主動的方面主要體現在可以主動抓取頁面鏈接并發起請求,并且后期可能參考XSStrike加入主動fuzz的功能,這個目前還未加入,正在糾結中。。。而被動的方面,主要的工作就是xss語義分析的研究,通過xss語義分析而不是盲目的使用payload進行fuzz。

語義分析

業內提的比較早的是長亭的一款waf產品,語義分析說白了就是根據上下文來進行分析,而不是通過正則搜索的方式來匹配污染源,也就是我們的漏洞觸發點。

由于這個需求,我們需要開發一款可以理解上下文的工具。來幫助我們識別我們的payload是輸出在什么樣的語義環境,從而給出精確的payload,而這一點xray目前做的效果挺不錯的。

AST語法樹

在此之前我們先簡單了解一下JS抽象語法樹。

Javascript 代碼的解析(Parse )步驟分為兩個階段:詞法分析(Lexical Analysis)和 語法分析(Syntactic Analysis)。這個步驟接收代碼并輸出抽象語法樹,亦稱 AST

在分析 Javascript 的 AST 過程中,借助于工具 AST Explorer 能幫助我們對 AST 節點有一個更好的感性認識。

下面是AST Explorer對 Javascript代碼的解析,經過AST Explorer的解析Javascript代碼會被抽象成AST的形式。

下面簡單介紹幾個節點類型,更多的參考官方文檔定義https://esprima.readthedocs.io/en/3.1/syntax-tree-format.html

使用下面的demo為例

var param = location.hash.split("#")[1]; document.write("Hello " + param + "!");

VariableDeclaration

變量聲明,kind 屬性表示是什么類型的聲明,因為 ES6 引入了 const/let。declarations 表示聲明的多個描述,因為我們可以這樣:let a = 1, b = 2;

VariableDeclarator

變量聲明的描述,id 表示變量名稱節點,init 表示初始值的表達式,可以為 null

Identifier

標識符,就是我們寫 JS 時自定義的名稱,如變量名,函數名,屬性名,都歸為標識符

一個標識符可能是一個表達式,或者是解構的模式(ES6 中的解構語法)。

Literal

字面量,就代表了一個值的字面量,如 “hello”, 1 這些,還有正則表達式(有一個擴展的 Node 來表示正則表達式),如 /d?/

value 這里即對應了字面量的值,我們可以看出字面量值的類型,字符串,布爾,數值,null 和正則。

BinaryExpression

由于這里存在兩個個二元運算,所以簡單再介紹其中一個,其它的便不多簡紹。

二元運算表達式節點,left 和 right 表示運算符左右的兩個表達式,operator 表示一個二元運算符。

這里進行運算的一個是Literal類型也就是hello,一個是Identifier類型也就是param變量,運算符為+

AST的介紹先到這里。下面介紹一下檢測的原理

檢測原理

xss漏洞一般有兩種檢測方法,第一種是簡單粗暴的使用收集來的payload進行fuzz,通過頁面是否回顯來判斷是否存在漏洞,這種手段目前已經不適用了。另一種就是通過對返回頁面進行解析,結合語義分析,根據輸出在不同的上下文來選擇發送我們的payload,這樣的話,我們的payload即精巧又準確。

還是使用這個demo

var param = location.hash.split("#")[1]; document.write("Hello " + param + "!");

檢測思路一般為,我們首先找到document.write這個函數,從而定位到param,由param我們可以進行回溯到location.hash.split("#")[1],從而證明觸發點是可控的。在污點分析模型里面,我們稱document.write為sink,也就是污點匯聚點,代表直接產生安全敏感操作(違反數據完整性)或者泄露隱私數據到外界(違反數據保密性),稱location.hash.split("#")[1]為source,也就是污點源,代表直接引入不受信任的數據或者機密數據到系統中。很多代碼審計工具也是基于了這樣的模型。

基于上面的分析,我們需要開發一個可以理解js上下文的工具,幫助我們找到sink和source,讓我們可以由sink回溯source,或者由反過來亦可,正則上實現這個問題已經基本不可能了,我們需要能夠給上下文賦予準確意義。

而上面的AST語法樹可以滿足我們的需求,因為它可以幫助我們分析xss的輸出點的上下文

幸運的是python里面有將js代碼解析為語法樹的庫pyjsparser,還有在其基礎上實現的js2py

from pyjsparser import parse import json js = '''var param = location.hash.split("#")[1]; document.write("Hello " + param + "!");''' ast = parse(js) print(json.dumps((ast)))

解析出來的效果跟AST Explorer是一致的

接下來我們需要設計一個遞歸來找到每個表達式,每一個Identifier和Literal類型等等。

部分代碼如下:

然后再遍歷body的節點,找尋輸出位置

仍是上面的demo,我們嘗試找到Hello

輸出結果如下:

我們找到了Hello,并且輸出位置的上下文為Literal

有了上面的研究,通過sink回溯source的方法便可以實現,對于dom型xss的分析,也會更加精確,對于反射型xss輸出在js的情況,同樣適用

如果回顯在JS腳本中,發送測試payload后,通過js語法樹解析確定Identifier和Literal這兩個類型中是否包含,如果payload是Identifier類型,就可以直接判斷存在xss,如果payload是Literal類型,再通過單雙引號來測試是否可以閉合。

最后

關于js語義分析暫時先分析到這里,難點還是dom型xss的檢測,因為dom xss檢測識別有點復雜,下一篇會探討一下sink輸出在html的情況,探討一下html解析的一些問題。

復制鏈接做實驗:XSS進階一

http://hetianlab.com/expc.do?ce=2626aa4d-704e-4190-a80e-c14d1d47e88c

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

聲明:筆者初衷用于分享與普及網絡知識,若讀者因此作出任何危害網絡安全行為后果自負,與合天智匯及原作者無關!

總結

以上是生活随笔為你收集整理的布尔表达式的语法及语义分析程序_XSS语义分析的阶段性总结(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本性视频网站 | 老司机av影院 | 亚洲超碰在线 | 黄色a一级视频 | 午夜在线视频观看 | 暗呦丨小u女国产精品 | 国产麻豆免费视频 | 亚洲精品99 | 韩国无码一区二区三区精品 | 在线观看av中文字幕 | 国产亚洲无码精品 | 色屁屁www影院免费观看入口 | 超碰国产91 | 多啪啪免费视频 | 视频免费观看在线 | 日本一区视频 | 最新av在线网址 | 国产乱码精品一区二三区蜜臂 | 成人动漫av在线 | 欧洲视频在线观看 | 大肉大捧一进一出好爽mba | 操操操综合网 | 四川丰满妇女毛片四川话 | 日本人妖xxxx| 96av在线 | 精品午夜一区二区三区在线观看 | 国产三级精品三级在线观看 | xxxxx在线 | 伊人久久影院 | 欧美性tv| 性色av浪潮av | 国产美女精品一区二区三区 | av在线伊人 | 97在线观看免费高清 | 国产精品一区二区三区在线看 | 不许穿内裤随时挨c调教h苏绵 | 老鸭窝成人 | 天天草夜夜 | 91色片| 亚洲AV无码精品一区二区三区 | 欧美亚洲丝袜 | 人妻在线一区二区三区 | 国产视频一区在线观看 | 男女啪啪免费网站 | av天天色 | 在线观看日批 | 一级片一级 | 射进来av影视网 | 日本不卡在线观看 | 日本免费在线一区 | 成人日韩精品 | 国产一二三四五区 | 在线观看免费视频 | 国产在线传媒 | 男人的天堂va | 国产玖玖在线 | 调教少妇视频 | 免费一级一片 | 奇米影视四色7777 | www.黄色av | 成年人免费大片 | 国产免费无码一区二区 | 97精品超碰一区二区三区 | 久久久久99精品成人片试看 | 久久天 | 伊人春色av | 免费在线国产视频 | 超碰人人网| 国产r级在线观看 | 久久久成人精品视频 | 国产污视频在线观看 | 日本精品一区二区三区视频 | 亚洲精品久久久久久一区二区 | 极品销魂美女一区二区 | 欧美野外猛男的大粗鳮 | 欧美极品三级 | 91视频毛片 | 99re只有精品 | 亚洲精品丝袜 | 亚洲二区在线 | 狠狠老司机 | 91丨porny丨在线 | 丁香色欲久久久久久综合网 | 午夜激情小视频 | 禁止18在线观看 | 99热这里只 | 夜夜嗨老熟女av一区二区三区 | 日韩av影音先锋 | 最新地址在线观看 | 国产精品色在线网站 | 中文字幕一区二区三区人妻 | 日本一二三视频 | 女裸全身无奶罩内裤内衣内裤 | 国产一区二区电影 | 后入内射欧美99二区视频 | 色女人网 | 日韩av大片在线观看 | 艳母免费在线观看 | 日本一区二区视频在线观看 |