漏洞分析
uc_client\model\base.php 37行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LSHXEZvc-1647761074924)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320145305217.png)]](https://img-blog.csdnimg.cn/4ff1de214ff541bba283cd28d0a33623.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmVyY2U=,size_20,color_FFFFFF,t_70,g_se,x_16)
跟进
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SJRqxLeD-1647761074925)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320145330072.png)]](https://img-blog.csdnimg.cn/88ac7408748b4a5bae3fb654ffcde100.png)
继续跟进,可以看到此处进行了mysql查询,此处的UC_APPID查找其来源
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ebKfRVog-1647761074925)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320145355014.png)]](https://img-blog.csdnimg.cn/fc18334662004f11a0fa92f6ae01aa13.png)
ctrl+左键点进去看一下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EaaZmEMt-1647761074925)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320145919423.png)]](https://img-blog.csdnimg.cn/bc92e304f1d14620a52742dd0b06e9b8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmVyY2U=,size_20,color_FFFFFF,t_70,g_se,x_16)
发现是在配置文件里面写着的
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qra77EfQ-1647761074926)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320150041488.png)]](https://img-blog.csdnimg.cn/21a99ed006d5466589ad3d8d77b2d045.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmVyY2U=,size_20,color_FFFFFF,t_70,g_se,x_16)
全局搜索一下UC_APPID
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4HZce3K6-1647761074926)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320150113528.png)]](https://img-blog.csdnimg.cn/a018bc42637c4d01b2ca5d2521b1d9b1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmVyY2U=,size_20,color_FFFFFF,t_70,g_se,x_16)
发现是这样写进去的,首先在配置文件里面查找原先的define(‘UC_APPID’, …);然后用"define(‘UC_APPID’, ‘".$settingnew[‘uc’][‘appid’]."’)"进行替换,UC_APPID的值为$settingnew[‘uc’][‘appid’]
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8OYF0JsY-1647761074927)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320150150954.png)]](https://img-blog.csdnimg.cn/c9ebfa19c00f4a6a91bc397739360f1b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmVyY2U=,size_20,color_FFFFFF,t_70,g_se,x_16)
向上找$settingnew[‘uc’][‘appid’]的来源,发现参数可控,且只是对内容进行了简单的addslashes
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XJjpNhXn-1647761074927)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320150302939.png)]](https://img-blog.csdnimg.cn/0083bc5db57e4f59a41a833f7e7af0f8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmVyY2U=,size_20,color_FFFFFF,t_70,g_se,x_16)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SGOQby3w-1647761074927)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320150334738.png)]](https://img-blog.csdnimg.cn/ae7d03ed94b0426aab2d01af02901e88.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmVyY2U=,size_20,color_FFFFFF,t_70,g_se,x_16)
那么我们只需要将payload赋值给$settingnew[‘uc’][‘appid’],其会被addslashes后(2280行)存入配置文件(2295行),然后当mysql查询时,从配置文件查询出来的还是原来的字符串,原因如下
转义一次的字符串被写入文件中,在PHP解析时就是没有转义过的原始内容 造成了二次注入的产生
比如
<?php
define('UC_APPID', 'sadsadsadasd\'');
printf(UC_APPID);
结果如下

漏洞复现
进入后台
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ocszt5Jj-1647761074928)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320150942236.png)]](https://img-blog.csdnimg.cn/52f0d495499a45d297cfcb46bd32723a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmVyY2U=,size_20,color_FFFFFF,t_70,g_se,x_16)
抓包,此处写入payload
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wQKVk1cz-1647761074928)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320151040757.png)]](https://img-blog.csdnimg.cn/0dfe2fdead1b411589ad8cca2fcc9054.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmVyY2U=,size_20,color_FFFFFF,t_70,g_se,x_16)
发包
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jmwCsOkz-1647761074928)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320152307148.png)]](https://img-blog.csdnimg.cn/780dec7b3d18463db022b70bdd4a3aef.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmVyY2U=,size_20,color_FFFFFF,t_70,g_se,x_16)
发现成功写入
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sOEeS1wA-1647761074928)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320151138183.png)]](https://img-blog.csdnimg.cn/e7a76fe18a7a476ea7e05c5caabe6c6e.png)
附
我们可以看到此时配置文件中为这样![(img-hJW3XIny-1647761074929)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320151247139.png)]](https://img-blog.csdnimg.cn/aac889f62cf74da782f6428d7f2780d7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmVyY2U=,size_20,color_FFFFFF,t_70,g_se,x_16)
当mysql查询时,要获取配置文件中UC_APPID的值,而该值只被转义过一次,所以在PHP解析时就是没有转义过的原始内容 造成了二次注入的产生
如下是漏洞触发点,简单调试一下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x6fNQPi1-1647761074929)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320151530527.png)]](https://img-blog.csdnimg.cn/1df917e140644e9091d110b6efbfc6ba.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmVyY2U=,size_20,color_FFFFFF,t_70,g_se,x_16)
再次发包,发现UC_APPID的值确实为最原始的值,没有被转义,造成了二次注入
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aPsfBN89-1647761074929)(C:\Users\91136\AppData\Roaming\Typora\typora-user-images\image-20220320151608290.png)]](https://img-blog.csdnimg.cn/78902f70533840eaa2130a1c0d585831.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcmVyY2U=,size_20,color_FFFFFF,t_70,g_se,x_16)
修复建议
对$settingnew[‘uc’][‘appid’]在进行一次addslashes
参考链接
https://www.hacking8.com/bug-web/Discuz/Discuz!-X-系列全版本-后台Sql注入漏洞.html
|