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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【安全漏洞】Easy代码审计

發(fā)布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【安全漏洞】Easy代码审计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

環(huán)境說明:

系統(tǒng):Windows 10
集成環(huán)境:phpstudy
php版本:7.3.4
mysql版本:5.7.25
cms版本:7.7.4

【查看資料】

前言

現(xiàn)在cms一般都是基于MVC思想去開發(fā),所以在審計這個cms時我是直接從控制器開始看的,thinkphp與laravel等開發(fā)框架會把控制器放在controller目錄,這個cms的控制器是在lib目錄。

目錄結(jié)構(gòu)

cmseasy/ |-- admin |-- api |-- apps |-- cache |-- cn |-- common |-- config |-- data |-- en |-- html |-- images |-- install |-- jp |-- lang |-- lib |-- license |-- readme |-- sitemap |-- sk |-- template |-- template_admin |-- ueditor |-- wap `-- webscan360

開始審計

1.SQL注入

1.在文件lib/admin/database_admin.php的dorestore_action()方法接收到GET參數(shù)db_dir后會使用front::scan($dir)函數(shù)獲取該目錄下的文件名,然后將目錄名與文件名傳遞給 tdatabase::getInstance()->restoreTables()函數(shù),跟進(jìn)該函數(shù)。

2.在文件lib/table/tdatabase.php的restoreTables函數(shù)可以看到,file_get_contents()函數(shù)讀取文件內(nèi)容后進(jìn)行了字符替換與字符分割,文件內(nèi)容被賦值給變量sqls,然后賦值給q,最終傳遞到$this->query()函數(shù)執(zhí)行,繼續(xù)跟進(jìn)該函數(shù)。

3.在文件lib/inc/table.php的query函數(shù),sql語句被傳遞給了this->db->query() 函數(shù)。

4.在文件lib/inc/dbmysqli.php的query函數(shù),sql被傳遞給this->mysqli->query() 函數(shù)執(zhí)行了,而在這個文件中可以看到 $this->mysqli 是mysqli 類實例化的對象。一路跟下來從文件讀取內(nèi)容到被執(zhí)行SQL語句沒有做任何安全處理。


5.從以上代碼分析可知該SQL注入需要配合文件上傳。

6.首先上傳一個文件,該文件寫入 sql 語句,注意這個文件需要是目錄下的第一個文件,否則sql語句可能會查詢失敗。
將靜態(tài)文件目錄設(shè)置為 /,點擊保存。這樣可以保證目錄下的第一個文件就是我們上傳的。


上傳文件使用 burpsuite 抓包將內(nèi)容修改為sql注入語句。


7.觸發(fā)SQL注入漏洞,這里其實也存在文件讀取漏洞。
2.任意文件寫入getshell

1.在文件lib/admin/table_admin.php的edit_action() 函數(shù)下,存在 file_put_contents 函數(shù)進(jìn)行寫入操作,文件名后綴默認(rèn)為 php,POST的所有內(nèi)容會在序列化之后放到 tagconfig變量,最后執(zhí)行fileputcontents將tag_config 變量內(nèi)容寫入 php 文件。雖然 POST 的內(nèi)容有被過濾,但是 POST 的參數(shù)名沒被過濾,也就是說我們可以通過參數(shù)名寫入 webshell。


2.發(fā)送構(gòu)造好的請求包寫入 webshell,沒有回顯但是沒有關(guān)系文件名是可預(yù)判的。

3.訪問webshell

總結(jié)

SQL注入:從文件中獲取SQL語句,如果文件名與內(nèi)容可控那么就可能存在SQL注入。
任意文件寫入getshell:雖然POST參數(shù)的值有被過濾,但是由于使用了序列化函數(shù)導(dǎo)致仍然可以通過參數(shù)名寫入惡意代碼。

最后

關(guān)注我-持續(xù)更新······

私我獲取【網(wǎng)絡(luò)安全學(xué)習(xí)資料·攻略

總結(jié)

以上是生活随笔為你收集整理的【安全漏洞】Easy代码审计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。