-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ThinkPHP 6.0.12 Unserialize RCE #2717
Comments
安全老哥tql |
天天来此打卡,能不能官方来个人给个消息啥时候修复啊? |
不要相信用户输入,不要直接反序列化用户传进来的数据,建议用 json 来传参数 |
是的,注意就行了。这根eval($cmd)没啥区别了。unserialize本来就应该在信任的数据中执行。 |
可能影响比较大的还是phar反序列化,因为上传文件是没有办法检测其正规内容的,网上只是爆出来了一些php函数支持phar协议,或许其他扩展还会有。 |
再安全点,就是用第三方存储,程序和数据分离。php-fpm环境确实有这种问题。 |
上传文件目录nginx禁止php执行就完事了,最好是用对象存储 |
我觉得师傅可以去理解一下什么是phar反序列化,phar反序列化只需要满足, |
是的,师傅所说的完全可以避免这种安全风险。但是可能考虑到实际的应用环境,因成本,安全等问题可能不会考虑到第三方存储等等。因为如果交给第三方,还可以会面临供应链攻击。 |
也不用非得第三方,自己搭一个静态站点,用ftp连上去,也行。不过这些都是运维和架构的事了。 tp的这个反序列化问题,得看看是不是会影响到特性。看样子只要使用的类库(不管是不是tp的)在反序列化时能执行东西,就有问题。 |
是的师傅。确实是这种的,tp的这个反序列化问题,只有一部分用到了tp的类库。其他的pop部分还是其他的类库,不过反序列化问题在实际的渗透测试环境中还是比较鸡肋的,大部分应用在白盒代码审计之中(还是蛮好用的)。在没有分离的情况下,tp5、6的二开CMS还是很多都存在这个问题的。 |
其实还是要看下产品的成本和使用者的成本就可以了。 这种问题,如果稍微规范一点使用方式,稍微专业一点的开发和运维就能避免,那其实不需要去考虑的, 其实箱laravel这种框架,都已经很流行使用serverless容器之类的东西了,肯定不会碰到上传文件的。 虽然php的发展方向咱不知道,但是如果无底线的降低使用者的成本,但是却限制了框架的发挥,也不是好事。 具体还是得看实用经验,大家可以反馈讨论一下这个事。 |
反正我基本没有遇到过反序列化请求数据的情况。 顶多就是序列化的数据存到数据库、对象存储或者本地存储。直接请求的还没遇到过。 |
是phar反序列化,不是类似unserialize这样的直接去请求数据。 |
phar包的话,很少把他当依赖加载吧。主要还是主动地去加载它,是不。 |
例如利用文件读取的函数file_get_contents()去调用phar协议来达到和unserialie一样的效果 |
ThinkPHP RCE链子
Environment installation
test version:Thinkphp6.0.12
Environment configuration:(tp6只支持用composer安装)
composer create-project topthink/think=6.0.12 tp612
Add deserialization entry point
access
sess_huahua.php
successfully RCE
exp
The text was updated successfully, but these errors were encountered: