目录
二次渲染原理
绕过方法
htaccess配置文件
.user.ini
二次渲染原理
在我们上传文件后,网站会对图片进行二次处理(格式、尺寸,保存,删除 要求等),服务器会把里面的内容进行替换更新,处理完成后,根据我们原有的图片生成一个新的图片(标准化)并放到网站对应的标签进行显示。
绕过方法
1.配合条件竞争漏洞
竞争条件是指多个线程在没有进行锁操作或者同步操作的情况下同时访问同一个共享代码,变量,文件等,运行的结果依赖于不同线程访问数据的顺序。
2.配合文件包含漏洞
将一句话木马插入到网站二次处理后的图片中,也就是将二次渲染后保留的图片和一句话木马制作成图片马,再配合文件包含漏洞解析图片马中的代码,获取webshell。
htaccess配置文件
htaccess文件是Apache服务器中的一个配置文件,只对该文件所在的目录下的文件起作用。
它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
用途:重新解析规则绕过黑名单
原理:上传覆盖.htaccess文件,重新解析规则,将上传的图片马以脚本方式解析
具体实现:
1、上传.htaccess文件至服务器上传目录,此时apache在解析该目录下的php时将按照文件要求。只要文件名匹配到所定义的字符串,就会将该文件当作php解析。
<FilesMatch "123">
SetHandler application/x-httpd-php
</FilesMatch>
.user.ini
php.ini是php的一个全局配置文件,对整个web服务起作用;而.user.ini和.htaccess一样是目录的配置文件,.user.ini就是用户自定义的一个php.ini,我们可以利用这个文件来构造后门和隐藏后门。
php.ini是php的一个全局配置文件,对整个web服务起作用;而.user.ini和.htaccess一样是目录的配置文件,.user.ini就是用户自定义的一个php.ini,我们可以利用这个文件来构造后门和隐藏后门。
实例
php 配置项中有两个配置可以起到一些作用
auto_prepend_file = <filename>//包含在文件头
auto_append_file = <filename>//包含在文件尾
这两个配置项的作用相当于一个文件包含,比如
// .user.ini
auto_prepend_file = 1.jpg
// 1.jpg
<?php phpinfo();?>
// 1.php(任意php文件)
满足这三个文件在同一目录下,则相当于在1.php文件里插入了包含语句require('1.png'),进行了文件包含。
另一条配置包含在文件尾,如果遇到了 exit 语句的话就会失效。
.user.ini使用范围很广,不仅限于 Apache 服务器,同样适用于 Nginx 服务器,只要服务器启用了 fastcgi 模式 (通常非线程安全模式使用的就是 fastcgi 模式)。
局限
在.user.ini中使用这条配置也说了是在同目录下的其他.php 文件中包含配置中所指定的文件,也就是说需要该目录下存在.php 文件,通常在文件上传中,一般是专门有一个目录用来存在图片,可能小概率会存在.php 文件。
但是有时可以使用 ../ 来将文件上传到其他目录,达到一个利用的效果。
第三十二天学习笔记-web漏洞-文件上传的条件竞争 .htaccess文件与.user.ini文件使用前提 二次渲染