文件上传漏洞解析与upload题库讲解

一:前端检测

  1.在前端文件上传时直接进行检测
  例如直接检测后缀名 
                       解决方法:
                       可以直接在页面中删除上传时所触发的事件
                       可以使用but进行抓包处理 修改文件后缀名

2.服务器端防御 (content-type类型)(例如14题)
MIME类型(描述消息类型的因特网标准)
常见的MIME举例
当需要读取图片大小时 (这时后缀名和类型都没用)
可以使用图片方法
(1).这时可以写一个简单的图片木马:(主要利用GIF89a)

GIF89a
<?php
phpinfo();
?>
          (  有时会发现可以上传但是服务器端无法读取里面的木马代码)

(2).可以将图片和木马的文件合并起来(这种情况有时候显示不出来 受到图片源码的影响)
例如: copy smile.jpg/b+infor.php/a smileinfor.jpg

(3).利用十六进制编辑器 (文件幻术 利用十六进制和ascii转换)
我们知道所有的jpg 图片的文件头部都是相同的,png和gif图片也一样
https://blog.csdn.net/tan6600/article/details/43672879—(常用的十六进制文件头部)

方法:可以将图片或文件的十六进制开头转换成ASCII 再接着在后边加上php木马病毒
服务器端在进行检测文件名的时候,依然会采用黑白名单策略。

(4) . 对于黑名单我们可以寻找其他可允许上传的类型来绕过限制
例如:

  • 禁止使用.php后缀时 我们可以使用 .php2 .php3 .phtml
    禁止.asp时 可以使用 .aspx .ascx .ashx .asa .cer
    禁止.jsp时 可以使用.jspx

    都可以进行尝试一下 是否可以执行

3.00截断 (%00 null空字符)(11题)

原理:0x00是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个字符当做结束符。这个可以用在对文件类型名的绕过上。
----https://www.fujieace.com/penetration-test/file-upload-00.html—(00截断原理)

4. .htaccess攻击 (web页面 可以搞破坏 在网站后台可以编辑这个文件)(第4题)
.htaccess是Apache 服务器的配置文件 能够覆盖掉Apache的全局配置 是非常危险的一种web服务器端漏洞
例子:创建一个.htaccess文件放在upload_www目录下
(1).然后写入一句话AddType application/x-httpd-php .png (意思是可以将此www目录下的png文件以php的形式来执行)
(2).匹配文件名 举例文件名为【ajest】 (意思是将此文件以php的格式输出)

<FilesMatch  "ajest">
SetHandler  application/x-httpd-php
</FilesMatch>

5.web容器解析漏洞
例子:
(1). Apache解析漏洞 在文件名后面加上php.xxx.xx.x

(2). IIS6.0解析漏洞 (IIS是网页服务组件,用来搭载网站运行程序的平台即可,比如IIS结合php+ASP环境,即可放置目前流行的ASP/PHPx程序的网站程序)
@ asp;.jpg
time.asp;1.jpg(虽然是jpg后缀名 jph文件 但是还是会执行成功)
@ 1.asp/time.jpg (虽然是jpg文件但还是会执行asp代码)
----https://www.w3school.com.cn/asp/asp_syntax.asp–(asp语法)

(3).php CGI解析漏洞 (这个和php中的一个数据有关 cgi.fix_pathinfo 将此参数改为0后就可以防御)
@ IIS7.5/7.0 +php 环境
infor.png/.php (意思是.png文件以php的形式打开)
解决方法:找到处理映射程序 然后找到搭建的名称 打开请求限制 勾选对钩

在这里插入图片描述

@ Nginx 解析漏洞
例子:/info.png/1.php
@ Nginx 空字节漏洞(会将.html文件当作.php来运行)
例子:info.html%00.php
@ Nginx 文件名逻辑漏洞(以php文件输出)
例子: info.png(空格)…php 然后在but中将传送的第一个点的十六进制 数字改为00(也就是利用了00截断)

     Nginx拓展:Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

-----https://blog.csdn.net/qq_15037231/article/details/80406679----(为什么要使用Nginx)

6.常见的编辑器上传漏洞
介绍:编辑器就是网站后台编辑网页的在线编辑器,会自动集成文件上的功能,这些编辑器的某些版本也存在文件上传漏洞。
首先进入后台之后可以修改网站的配置 修改白名单黑明单等 修改网站配置时 类似于输入框的地方输入一句话木马
例如:
ewebeditor
fckeditor

7.常见CMS漏洞

介绍:cms是内容管理系统(网站的模板,快速建站,二次开发),市面上很多开源的历史版本中都存在文件上传漏洞,但是产生文件上传漏洞的原因不尽相同,类似的CMS有很多,比如dedecms phpcms,海洋cms

例如:—南方数据管理系统(asp网站 利用数据库备份getshell )
asp|access|.mdb|下载
方法:另存 |自定义文件的名字 我们就可以上传一个图片木马 利用数据库备份的另存功能将我们的图片木马重新命名 更改文件后缀名
得到用户名和密码后台管理员
注入方法:
1.

在这里插入图片描述

   2.   

在这里插入图片描述

扫后台 :御剑

8.$ DATA
NTFS文件系统包括对备用数据流的支持。这不是众所周知的功能,主要包括提供与Macintosh文件系统中的文件的兼容性。备用数据流允许文件包含多个数据流。每个文件至少有一个数据流。在Windows中,此默认数据流称为:$ DATA。
因此可以在文件后缀加上::$DATA绕过

9.可以用but跑一下 字典 跑一下哪种后缀可以执行

做题:(phpinfor7 可以直接上传)
1.直接在页面上改或者利用抓包修改文件后缀

在这里插入图片描述

2.更改mime 改为image/jpeg

3.可以更改文件后缀 例如.php5

4.利用上传.htaccess结尾的文件 在里面写上读取所有文件以php的格式 然后上传一个.jpg文件

5 .user.ini() 写入 auto_prepend_file=pass5.png(指定一个文件pass5.png) 执行文件以php的格式 .ini会将写入的文件放在当下的php文件下面执行

6.利用大小写绕过

7.空格绕过在文件php后边加上一个空格

8.由于禁止上传一切文件后缀所以 可以在最后加上点 .

9.利用windows特性对::$DATA

  1. . 空格 . 绕过在文件的后缀加上 . 空格 .

11.可以进行字节绕过 在文件后缀设置双文件名pphphp过滤即可

12.00截断 get 因为是由$img_path拼接而成所以可以直接使用00截断

在这里插入图片描述

13.00截断post 原因是 %00 截断在 GET 中被 url 解码之后是空字符。但是在 POST 中 %00 不会被 url 解码,所以只能通过 burpsuite 修改 hex 值为 00 进行截断,也就是在post情况下,需要先对%00进行一个url编码。

14.15. 16图片头检查 可以利用结合的图片木马病毒 上边的是linux命令 windown 为copy 1.jpg+1.php 2.jpg 如果想要进一
步攻击 ----https://www.fujieace.com/penetration-test/file-contains-vuln.html----(可以登录查看)

15.16. 只是文件开头标识 的函数不一样

17.对图片木马进行二次渲染
------https://www.fujieace.com/penetration-test/upload-labs-pass-16.html—(详情解析)
-------https://www.bilibili.com/video/BV1dE411n7tE-----(视频讲解 包括最后几道题的解析)

原文地址:https://blog.csdn.net/zl52111/article/details/115662270

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


数组的定义 Dim MyArray MyArray = Array(1‚5‚123‚12‚98) 可扩展数组 Dim MyArray() for i = 0 to 10
\'参数: \'code:要检测的代码 \'leixing:html或者ubb \'nopic:代码没有图片时默认值
演示效果: 代码下载: 点击下载
环境:winxp sp2 ,mysql5.0.18,mysql odbc 3.51 driver 表采用 myisam引擎。access 2003  不同的地方: 
其实说起AJAX的初级应用是非常简单的,通俗的说就是客户端(javascript)与服务端(asp或php等)脚本语言的数据交互。
<% ’判断文件名是否合法 Function isFilename(aFilename)  Dim sErrorStr,iNameLength,i  isFilename=TRUE
在调用的时候加入判断就行了. {aspcms:navlist type=0 } {if:[navlist:i]<6} < li><a href=\"[navlist:link]\" target=\"_top\">[navlist:name]</a> </li>
导航栏调用 {aspcms:navlist type=0}     <a href=\"[navlist:link]\">[navlist:name]</a>
1.引入外部文件: {aspcms:template src=infobar.html} 2.二级下拉菜单 <ul class=\"nav\">
downpic.asp页面:  <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
Cookies是数据包,可以让网页具有记忆功能,在某台电脑上记忆一定的信息。Cookies的工作原理是,第一次由服务器端写入到客户端的系统中。以后每次访问这个网页,都是先由客户端将Cookies发送到服务器端,再由服务器端
很简单,在需要调用的地方用这种模式 {aspcms:content sort={aspcms:sortid} num=17 order=isrecommend}
网站系统使用ACCESS数据库时,查询时怎么比较日期和时间呢?为什么常常比较出来却是错误的呢?比如早的日期比迟的日期大?
str1=\"1235,12,23,34,123,21,56,74,1232\" str2=\"12\" 问题:如何判断str2是否存在str1中,要求准确找出12,不能找出str1中的1235、123、1232
实例为最新版本的kindeditor 4.1.5. 主要程序: <% Const sFileExt=\"jpg|gif|bmp|png\" Function ReplaceRemoteUrl(sHTML,sSaveFilePath,sFileExt)
用ASP实现搜索引擎的功能是一件很方便的事,可是,如何实现类似3721的智能搜索呢?比如,当在搜索条件框内输入“中国人民”时,自动从中提取“中国”、“人民”等关键字并在数据库内进行搜索。看完本文后,你就可以发
首先感谢ASPCMS官网注册用户xing0203的辛苦付出!一下为久忆YK网络转载原创作者xing0203的文章内容!为了让小白更加清楚的体验替换过程,久忆YK对原文稍作了修改!
数据库连接: <% set conn=server.createobject(\"adodb.connection\") conn.open \"driver={microsoft access driver (*.mdb)};dbq=\"&server.mappath(\"数据库名\")
第1步:修改plugins下的image/image.js 找到\'<input type=\"button\" class=\"ke-upload-button\" value=\"\' + lang.upload + \'\" />\',
asp函数: <% Const sFileExt=\"jpg|gif|bmp|png\" Function ReplaceRemoteUrl(sHTML,sSaveFilePath,sFileExt)