建设学校网站,免费域名空间国外,做高端品牌网站建设,国内重大新闻一、漏洞详情影响版本 Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7通过%00截断绕过后缀名的限制#xff0c;使上传的php内容文件被解析执行。当Nginx得到一个用户请求时#xff0c;首先对url进行解析#xff0c;进行正则匹配#xff0c;如果匹配到以.php后缀结尾的文件名#x…一、漏洞详情影响版本 Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7通过%00截断绕过后缀名的限制使上传的php内容文件被解析执行。当Nginx得到一个用户请求时首先对url进行解析进行正则匹配如果匹配到以.php后缀结尾的文件名会将请求的PHP文件交给PHP-CGI去解析。假设服务器中存在文件‘123.png 则可以通过访问如下网址让服务器认为123.png 的后缀为phphttp://127.0.0.1/123.png \0.php代码层面来说我们请求的url中123.png[0x20][0x00].php正好与location模块中的.php相匹配但进入该模块后Nginx确认为请求的文件名是123.png 就设置其为script_name的值交给CGI进行解析最终造成解析漏洞。二、复现过程搭建docker环境docker-compose up -d访问8080端口上传图片马创建一个新文档保存为123.png内容为GIF98A
?php phpinfo(); ?GIF98A可以将文件伪造成图片从而绕过一些文件上传的限制bp抓包%00截断解析php文件访问http://192.168.239.128:8080/uploadfiles/123.png%20a.php用bp抓包a是占位符把a的hex编码变为00新版本的bp已经没有了之前的Hex选项只能选中单个字符在右边的框里进行修改点击apply changes再把%20用一个空格代替点击发送phpinfo被成功执行三、总结复现的过程卡在了bp上面到现在也没弄懂为什么访问http://192.168.239.128:8080/uploadfiles/123.png时无法被抓包也算是个题外话虚心求教