安全測試輔助之如何快速找出元素繫結的事件函式程式碼
*本文原創作者:ForrestX386,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載
0×00. 前言
在過往的安全審計中,我經常會遇到一些網站,其前端傳送至後端的資料被加密處理,此時如果我想利用burpsuite之類的工具測試其是否存在弱口令等安全風險,那我必須得知曉前端傳送至後端的資料包如何構造,如果要了解前端傳送至後端的請求資料如何構造,那麼必須要找到元素繫結事件對應的原始碼,下文,我簡單總結一下常見的發現元素繫結事件對應原始碼的方法,如有錯誤或不足之後,還望各位斧正。
0×01. 正文
1)型別1:元素原始碼中指明瞭繫結的js函式
比如10086的登入框
右鍵登入按鈕,選擇檢查 (chrome 為例)
找到此型別元素對應事件原始碼的關鍵就是在js原始碼中利用關鍵字搜尋,然後找到原始碼,此例以LoginSubmit在原始碼中搜索
使用CTRL + SHIFT +F 在全域性檔案中檢索會快一些
然後雙擊檢索結果即可跳轉到對應函式原始碼
這裡有個小技巧,可以不用以函式名為關鍵字進行檢索,在chrome 瀏覽器的console中直接鍵入函式名LoginSubmit,然後就可以得到函式的具體定義內容,如下
雙擊函式定義內容,就可以跳轉到相應地js原始碼檔案中找到函式的定義位置
2)型別2: 通過addEventListener 新增元素事件監聽(以Jquery為代表的DOM操作類庫元素繫結事件)
此例以我司內控堡壘機二次認證介面的登入框繫結事件為例
右鍵登入按鈕,選擇檢查 (chrome )
選擇右側的Event Listeners,選擇click (登入當然要先click嘍)
登入按鈕繫結的click事件原始碼位於index檔案的39行,點選跟進去,然後就找到了原始碼
如果你用的是firefox瀏覽器,則操作如下
右鍵 選擇登入框,選擇檢視元素
點選灰色區域的event,則可顯示出原始碼
當然也有一些瀏覽器外掛可以幫助我們找出元素繫結的事件原始碼,比如chrome 的 ofollow,noindex" target="_blank">Visual Event
2)型別3: 動態繫結事件(以VUE為代表的以資料為操作核心的帶有雙向繫結特性的類庫元素事件繫結)
此例以我司內控堡壘機子節點介面中重新整理按鈕繫結的click 事件對應的js原始碼
右鍵 重新整理按鈕,依次選擇檢查–>Console, 然後設定條件使得網路請求異常(比如用 SwitchyOmega 掛一個不存在的代理),當異常丟擲時候,可在console 下列印函式的呼叫棧,然後便可找到元素繫結事件對應的原始碼