某开源商城的代码分析
1135198055487331 漏洞分析 241浏览 · 2025-03-21 05:06

任意代码执行1

image.png
发现可以上传主题,但是我没获取到官方主题下载包,只能一步一步调
Pasted image 20250319221710.png


跟进ThemeAdminUploadHandle

主要就是解压压缩包,但是有一系列判断,是否有config.json都无所谓,看到

意思是压缩包里的文件要在_html_或者_static_文件夹下,后面还有

意思是禁止php后缀上传,然后就根据路径上传,思路就是将一个html文件(里面是php代码)上传到app/index/view/default/agreement,压缩包里的路径_html_/default/agreement/1.html,这个系统会动态加载模板里的文件,具体就不细调了,感兴趣的可以去调一调

Pasted image 20250319222944.png
上传成功后访问http://127.0.0.1/?s=agreement/index/&1=whoami
Pasted image 20250319223017.png


任意代码执行2

支付方式处可上传插件
Pasted image 20250319201436.png
对应app/admin/controller/Payment.phpUpload()

跟进Upload方法

没看到啥特别的,继续跟进UploadHandle方法

发现是先stream_get_contents代码再进行校验,所以直接就可以写个1.php,内容

然后就是校验GetPaymentConfig(),跟进

class_exists这里会动态加载刚刚上传的1.php,调试结果如下
Pasted image 20250319215513.png
成功执行
Pasted image 20250319202205.png
有个strpos($file_content, 'eval(') === false过滤,但是没啥用

Pasted image 20250319202643.png
也可以写一个AlipayScanQrcode.php持久性上传

Pasted image 20250319224651.png
直接就渲染了
Pasted image 20250319224728.png


0 条评论
某人
表情
可输入 255

没有评论