代码审计 DSmall系统

admin 2022年2月10日14:15:57评论346 views字数 2226阅读7分25秒阅读模式
代码审计 DSmall系统
代码审计 DSmall系统

最近比较闲来学习学习代码审计顺便记录一下自己的成长。

找源码的话之前看到公众号发文可以在网站中找开放的源码项目,网站就是下方这个。个人感   觉这里的源代码审计还是有难度的例如本次审计的这个商城源码,我审计完之后才看到在CNVD 已经提交过好多漏洞了此次也没有什么重要的漏洞成果还是记录一下挖掘的一个思路

https://down.chinaz.com/class/5_1.htm

代码审计 DSmall系统

1.安装&使用
在站长之家找到这套PHP源码进行审计,首先在本地安装,安装不用多说。可以看到这个更新日 期是2022/1/15如的,还是最新更新的。

代码审计 DSmall系统

这套源码基于Thinkphp开发的,还需要熟悉一下他的路由。安装好之后后台如下,首先需要熟悉 一下后台的一些功能点

代码审计 DSmall系统

这里我是用的是VSCode,在当前目录下使用code . 打开当前目录至vscode。这里的源码数量太 大,不建议使用源码审计工具了

代码审计 DSmall系统

在route/app.php中可以看到使用的是ThinkPHP6我也就用过ThinkPHP5对这套还不怎么熟 悉

代码审计 DSmall系统

这里网站的入口文件是public/index.php然后路由也是在/index.php 后拼接

代码审计 DSmall系统

台文件从这里进入

代码审计 DSmall系统

功能的跳转就是这个样子

代码审计 DSmall系统

就可以根据路由规则去找到相应的功能点

代码审计 DSmall系统一些函数的功能我就不说了直接代码审计


2.存储型XSS
在这个位置,存在一个会员通知
http://dsmalltest.com:81/public/index.php/admin/Index/index.html

代码审计 DSmall系统

在会员列表和通知内容写入内容,通知内容可以写入XSS代码

代码审计 DSmall系统

放包之后就会触发存储型XSS这个位置的通知可以发送给全部人员也可以发给指定的人员 危害还是挺大的

代码审计 DSmall系统

来看源码,就是app/admin/controller/Notice.php的notice()方法

代码审计 DSmall系统

第一步就是判断了是否为POST传递的参数然后就使用input获取传递的内容intval这里将 send_type设置为整形

接着就判断了$send_type的值如果为1那么就发送给指定的会员,如果为2那么就发送给所有的

if (request()->isPost()) {//$notice_validate = ds_validate( 'notice ');$content = trim(input( 'param.content1')); //信息内容$send_type = intval(input( 'param.send_type '));//验证switch ($send_type) {//指定会员case 1:

}

$data = [ "user_name" => input("param.user_name")];if (!$notice_validate->scene( 'notice1')->check($data)) { $this->error($notice_validate->getError());}break;//全部会员case 2:break;

ds_validate()方法这个方法对传入的content内容无关

input方法()就是指定参数来源进行自动判断的

在下方的这里就会根据接收的内容发送给相应的会员


//接收内容
$array = array();$array[ 'send_mode '] = 1;$array[ 'user_name '] = $memberid_list;$array[ 'content '] = $content;//添加短消息$message_model = model( 'message ');$insert_arr = array();$insert_arr[ 'from_member_id '] = 0;if ($send_type == 2) { $insert_arr[ 'member_id '] = 'all ';} else { $insert_arr[ 'member_id '] = "," . implode( ', ', $memberid_list) .
}$insert_arr[ 'msg_content '] = $content;$insert_arr[ 'message_type '] = 1;$insert_arr[ 'message_ismore '] = 1;$message_model->addMessage($insert_arr);//跳转$this->log(lang( 'notice_index_send '), 1);dsLayerOpenSuccess(lang( 'notice_index_send_succ '));$this->success(lang( 'notice_index_send_succ '), 'notice/notice ');

这里并未对$content内容做一个处理导致了XSS漏洞像其他的一些功能点都对输入做了一个处 理

对输入做一个正则如果不是数字,就会赋值空

代码审计 DSmall系统

3.总结
    这个系统还是挺难的,看了共3小时,既要熟悉框架还要从中寻找漏洞点,其中也发现了其他的漏 洞点但是没有复现成功。还有一些函数的调用寻找起来很麻烦,还是不太熟悉框架,在审计的时  候会增加困难。前辈们都已经在这CMS挖到了很多的漏洞,我还需要提升技术跟上前辈们的脚步


4.关注公众号
                                    热烈欢迎关注本安全公众号


原文始发于微信公众号(moonsec):代码审计 DSmall系统

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月10日14:15:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   代码审计 DSmall系统https://cn-sec.com/archives/771952.html

发表评论

匿名网友 填写信息