狂雨小说(KYXS)CMS 代码审计
CMS介紹
狂雨小說內容管理系統(以下簡稱KYXSCMS)提供一個輕量級小說網站解決方案,基于ThinkPHP5.1+MySQL的技術開發。
KYXSCMS,靈活,方便,人性化設計簡單易用是最大的特色,是快速架設小說類網站首選,只需5分鐘即可建立一個海量小說的行業網站,批量采集目標網站數據或使用數據聯盟,即可自動采集獲取大量數據。內置標簽模版,即使不懂代碼的前端開發者也可以快速建立一個漂亮的小說網站。
環境搭建
下載鏈接:http://bbs.kyxscms.com/?t/1.html
我這里使用的是phpenv進行搭建。
先手動創建數據庫(create database)。
可能會出現的問題,訪問主頁時模板存在問題。
解決方法:
刪除默認模板,再重新下載。
漏洞復現
文件包含漏洞
這個CMS的漏洞都在后臺。
在網站logo處可以上傳圖片馬。
上傳成功后會顯示上傳的路徑:
在模板管理中,編輯主頁html:
在該位置添加:
注意uploads前面沒有斜杠
保存,訪問主頁:
代碼分析
代碼結構:
addons 插件代碼 application 主要后端代碼 config 配置文件 extend 一些基礎類文件 public 靜態文件 route 路由 runtime 主要是緩存 template 模板文件 thinkphp thinkphp uploads 上傳文件漏洞成因:提供了修改模板的功能。再利用Thinkphp 模板/包含文件,造成文件包含漏洞。
這里代碼的關鍵字都是Template
修改模板代碼:
public function edit(){$Template=model('template');$data=$this->request->post();if($this->request->isPost()){$res = $Template->edit($data);if($res !== false){return $this->success('模版文件修改成功!',url('index'));} else {$this->error($Template->getError());}}else{$path=urldecode($this->request->param('path'));$info=$Template->file_info($path);$this->assign('path',$path);$this->assign('content',$info);$this->assign('meta_title','修改模版文件');return $this->fetch();}}這個沒什么好說的。
跟進edit($data):
public function edit($data){return File::put($data['path'],$data['content']);}跟進put:
static public function put($filename,$content,$type=''){$dir = dirname($filename);if(!is_dir($dir))mkdir($dir,0755,true);if(false === file_put_contents($filename,$content)){throw new \think\Exception('文件寫入錯誤:'.$filename);}else{self::$contents[$filename]=$content;return true;}}結束,沒有任何過濾。
從代碼的角度來說,接收了兩個參數content和path。
一個是文件的內容,一個是地址,而且是通過POST進行傳遞。
所以,直接通過數據包進行參數的修改:
這里的path可以自己設定。
訪問主頁:
還有個問題,數據包的路徑為什么這么寫,怎么判斷出來的?跟thinkphp框架有關?
總結
以上是生活随笔為你收集整理的狂雨小说(KYXS)CMS 代码审计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(2782):获取轮播图的数据
- 下一篇: 计算机专业学生学校活动,校园IT文化节活