安全矩阵

 找回密码
 立即注册
搜索
查看: 1734|回复: 0

文件上传和文件包含的各种姿势

[复制链接]

252

主题

252

帖子

1309

积分

金牌会员

Rank: 6Rank: 6

积分
1309
发表于 2022-7-26 11:28:18 | 显示全部楼层 |阅读模式
原文链接:文件上传和文件包含的各种姿势


文件上传前端
JS 防护,通过抓包修改,或插件js禁用来绕过。
后端
  1. <code>黑名单</code><code>
  2. 上传陌生后缀 .php3 php5</code><code>
  3. 上传配置文件 .htaccess</code><code>
  4. 通过 双写 ,大小写,</code><code>
  5. 基于windows 特性 ::$DATE  .php空格 .php. .php:.jpg</code>
复制代码


白名单
  1. <code>%00截断  版本小于5.3.4 char(0) 空字符, c语言将空字符作为结束的标志,在字符串 中添加%00 解析时会将空字符之后的字符做丢弃处理</code><code>配合文件包含 上传图片码</code><code>
  2. 条件竞争(通过上传后 后端处理是 先存放在删除)</code><code>
  3. 修改 conten-type image/jpeg</code><code>
  4. 修改MIME 类型</code>
复制代码


IIs 服务器 解析漏洞
6.0 文件解析漏洞 .asp: . jpg 分号后面的不会被解析
目录解析漏洞 .asp/1.jpg .asp目录下的文件都会被解析成asp文件
7.0 CGI 解析漏洞 .jpg/.php
Apache
2.4.0-2.4.29 换行解析漏洞 \n换行
1.x 2.x 多后缀解析漏洞 .php.qwe
nginx
1.5.0-1.5.7 0.8.4-1.4.3 文件名逻辑解析漏洞 webshell.jpg空格 .访问 webshell/jpg%00.php 原因是错误地解析了请求的URI,错误地获取到用户请求的文件名,导致出现权限绕过、代码执行的连带影响。

0.5 0.6 0.7 %00截断

0.5.6 - 1.13.2 nginx整数溢出漏洞 在nginx作为反向代理服务器,且开启了缓存时,攻击者可以构造恶意的range域,来获取相应的服务器中的缓存文件头部信息,导致敏感的服务器信息泄露。

编辑
文件包含
  1. <code>包含函数 include_once include  require require_once</code><code>
  2. include 只会抛出错误,不会终止</code><code>
  3. require  到包含文件不存在时 直接终止程序</code>
复制代码



本地文件包含
远程文件包含 前提是 allow_url_fopen allow_url_include
php 伪协议
flie:// 访问 本地文件系统 不受 allow_url_fopen allow_url_include 影响

allow_url_include = on
php://input 读取post 请求中的数据
php://filter 读取源码

zip:// 协议
可以访问 压缩文件中分子文件, 不需要指定后缀名
?fi=zip://E:\phpStudy\PHPTutorial\WWW\phpinfo.jpg%23phpinfo.txt
data:// 协议
allow_url_fopen allow_url_include 0n
用法:include.php?filename=data:text/plain,<?php php代码?>
直接插入php代码的话,有些特殊符号容易出问题 抓包修改

http://127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.txt
防御绕过
  1. <code>00截断</code><code>
  2. 超长字符串</code><code>
  3. 目录穿越 (后端代码 包含对象中 追加 目录名)</code><code> </code><code>
  4. 问号截断</code><code>
  5. 井号</code><code>
  6. 后缀猜测</code>
复制代码


文件包含 码传不上去中间件日志文件
一句话木马插入 url 中, 中间件解析报错 报存在 日志文件中
ssh 登录日志文件保存路径 /var/log/auth
去包含这个文件
最好是在24.00 8.00 日志重制时
木马写在seesion中
session保存路径/var/lib/php/sess_phpsessid
防御绕过
  1. <code>将需要 包含的地方 写死</code><code>
  2. 过滤接收到的参数</code><code>
  3. 禁止远程文件包含</code><code>
  4. 限制访问范围</code><code>
  5. 使用白名单</code>
复制代码








回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-26 09:21 , Processed in 0.014228 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表