安全app之PHP程式碼審計
2022-10-02由 小熊編tips 發表于 林業
systemupdate如何刪除
正文
原始碼結構如下,
經過我的一番菜雞分析,application下,admin是admin後臺,index是首頁的方法,api是使用者後臺,還有一個wxapi好像是微信小程式的使用者後臺(因為這個環境我本地沒有實現)。
首先是找上傳,一般後臺的都是這樣直奔主題,找到圖片管理處
先直接上傳個php,發現沒有反應,也沒報錯什麼的,感覺沒戲,但是檔案監控發現點東西
【一>所有資源關注我,私信回覆“資料”獲取<一】
1、網路安全學習路線
2、電子書籍(白帽子)
3、安全大廠內部影片
4、100份src文件
5、常見安全面試題
6、ctf大賽經典題目解析
7、全套工具包
8、應急響應筆記
發現上傳成功了,於是到原始碼中刪除這個檔案,又重新上傳了一下,結果
確實返回了json,
離譜啊,找到對應原始碼處,application/admin/controller/File。php
沒有進行過濾,為什麼php沒有顯示因為在呼叫圖片管理時讀取限定了字尾,
files = glob(
f
i
l
e
s
=
g
l
o
b
(
folder。’*。{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}’, GLOB_BRACE)
突然想到會不會使用者的對應功能點也有同樣的問題,找到使用者上傳,
發現用
file->validate(
f
i
l
e
>
v
a
l
i
d
a
t
e
(
this->rules)進行了字尾驗證,而$rules = [‘ext’ => ‘jpeg,jpg,png’, ‘size’ => 1024 * 1024 * 4],沒戲。
然後在wxapi介面中,
這裡是沒有驗證的,那麼普通使用者就有上傳(我本地沒有復現成功,有師傅會的教教我)
刪除的話也沒有限制,導致任意檔案刪除,嘗試刪除logo:
抓包修改,
原因也是直接拼接了value,
不過作用不大,但是這個站也是install。lock,要是有重灌寫shell那當我沒說。
另外一個就是邏輯上的問題,在站點系統設定中,
輸入個’就報錯了,
一些絕對路徑啊什麼的都有,
分析一下,application/admin/controller/Set。php中
跟進updatesystem
再跟setupdatesystem
以上流程將我們傳入的post 資料寫入在config/readfile 下新生成的system。php 中
透過json_encode($array, 1)
會將我們傳入的“ 轉義成” ,但是’無法轉義,因此可以傳入’從而導致報錯
在載入應用的時候會include(config/app。php)
config/app。php 會判斷是否存在system。php
存在就include,進而導致報錯。
後面也想到了閉合’,但是return一個字串,之後的就無法執行了。