怎么进行CVE-2021-3129 漏洞分析


今天就跟大家聊聊有关怎么进行CVE-2021-3129 漏洞分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。CVE-2021-3129漏洞很像hitcon2018的One Line PHP Challenge,于是去看了看通过Get传入orange参数作为文件名,系统将该文件的前6个字符与@

文件上传时应用可以发送一个POST请求到终端(例如通过XHR)来检查这个状态如下:简而言之,我们可以在上传文件时POST一个可控参数来达到远程命令执行的目的php.ini的默免费云主机域名认选项enabled=on表示upload_progress功能开始,也意味着当浏览器向服务器上传一个文件时,php将会把此次文件上传的详细信息(如上传时间、上传进度等)存储在session当中 ;cleanup=on表示当文件上传结束后,php将会立即清空对应session文件中的内容,这个选项非常重要;name当它出现在表单中,php将会报告上传进度,最大的好处是,它的值可控;prefix+name将表示为session中的键名这里主要是介绍filter伪协议的convert.base64-decode会将非base64字符给过滤掉后再进行decode,但是如果=后面出现了别的base64字符,则会出现报错个人理解:interface类似于python的装饰器,implements就是@。清空log写入phar读取phar通过对Laravel的debug页面进行抓包,再对比源码
我们发现ViewFile以及variableName参数是可控的,源码如下分析下来,发现viewFile参数利用了php的”危险函数”进一步分析,发现我们可以通过此页面往Laravel的log文件写入数据。那么我们可以结合上述函数,对laravel的log文件进行注入,达到远程执行命令的目的。我们首先清空log,然后写入phar的POP链,再清空多余的字符,这样就把log文件完全变成了phar规范的代码,所以可以利用phar协议,反序列化执行代码,达到RCE。难点在于清空log以及POP构造通过多次编码,将log文件内的字符转换为非base64字符,然后再base64_decode写入AA,对齐log文件的格式:PAYLOAD会在log中出现两次,我们可以通过编码去掉其中一个以及其他无关的字符。记得在payload后添加一个字符payload的生成一般使用phpggc小问题:在file_get_contents()传入0的时候php会报Warning,导致phar无法写入。那么可以替代0使用=00(python编码),使用convert.quoted-printable-encode过滤器将所有字符转为=+ascii码,再解码出来。清除多余字符看完上述内容,你们对怎么进行CVE-2021-3129 漏洞分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注云编程开发博客行业资讯频道,感谢大家的支持。

相关推荐: 怎么通过MySQL-Proxy实现数据库的认证、授权与审计

怎么通过MySQL-Proxy实现数据库的认证、授权与审计,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。总来的话数据库里面的账号就会越来越多,账号授权也是一个蛋疼的工作。特别是还会有“mysq…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/05 16:13
下一篇 02/05 16:14