zoukankan      html  css  js  c++  java
  • 文件上传案例

    1. 1.       前台脚本检测扩展名

    我们可以查看一下网页源代码,看扩展名是否在前端有显示。

    是的话,我们就可以上传一个扩展名为.jpg(等图片的扩展名)利用burpsuite,修改扩展名为.php,会成功上传

    1. 2.       服务器验证content-type检测文件类型

    上传一个.php文件,利用burpsuite改content-type类型为image/jpeg

     

    1. 3.       服务器端验证文件扩展名

    1*(在apathe低版本2.0 -2.2的情况可以执行)

    上传一个文件扩展名不存在的文件,比如1.php.aaa,在通过其他的手段改成.php的可执行的扩展名

    2*使用00截断(在一些情况下,因为函数的原因,会导致00截断不能成功绕过)

    上传文件名为1.phpp.jpg,通过burpsuite修改1.phpp.jpg中的p的十六进制为70改为00

    1. 4.       服务器端验证图片文件头

     

     实验:我们使用一个真的11.php文件,修改扩展名为11.jpg

                  一个真的图片,1.jpg

    将两个都分别上传,结果会发现真图片可以上传,而修改的.php文件却不能

    原因就是服务器验证了图片的文件头,可以使用winhex软件进行查看

     

     

     是因为getiamgesize()函数检测过滤了

    解决方法

    第一步:将一句话代码嵌入到图片中,构造图片马,上传图片

    第二步:通过解析漏洞或其他的方法将jpg还原为可执行文件

    Iis6.0解析漏洞

    目录解析:

    在网站下建立文件夹名字为.asp/.asa的文件夹,在其目录中的任何扩展名的文件都被、iis当做.asp文件来解析并执行

    利用方法:建目录a.asp,目录中a.asp/a.jpg将会被按照正常的asp文件进行解析

    文件解析:

    在iis6.0下,分号后面的不被解析,如a.asp;.jpg会被当做a.asp

    利用方法:上传文件名为xx.asp;.jpg格式

    Iis6.0默认的可执行文件除了asp还包含(常用来绕过黑名单检测)

    .asa   .cer   .cdx

     

    Apache  2.0-2.2

    未知扩展名解析漏洞

     Apache是从右往左开始判断文件扩展名来解析文件,如果文件扩展名不被识别,就在往左判断,直到可以识别为止

    举个例子:abc.php.aaa这个.aaa是apathe不可识别解析的,它就会往前判断直到识别.php时,会将这个文件解析为abc.php文件

    .htaccess配置文件(iis平台上不存在该文件)

     负责某一个目录下的网页配置,通过.htaccess可以实现分布式的配置

    比如:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定用户或者目录的访问、禁止目录列表、配置默认文档等功能

    Apache .htaccess配置文件的解析利用

    1.       建立.htaccess文件,写入 AddType application/x-httpd-php  .jpg

                             可以实现将.jpg的文件按照php解析执行

    2.将木马上传.htaccess到服务器的目录(在同目录或者子目录都可)

    3.上传.jpg的图片马,访问图片即可执行

     

    Nginx解析漏洞

    1. 低版本(0.5、0.6、0.7<=0.7.65、0.8<=0.8.37)的Nginx可以在任意文件名后面添加%00.php进行解析攻击       abc.txt%00.php
    2. 对于任意的文件名,在后面添加斜杠+某某某.php的解析漏洞(本质与nginx无关)

    如:test.jpg/abc.php

    漏洞场景:iis+php    nginx+php

     

     一些开源的文件编辑器可会有自身的漏洞,一般写博客什么的都会有上传图片功能,这些地方也可能会有文件上传漏洞

  • 相关阅读:
    正则表达式() [] {}区别
    JAVA int自动装箱
    Intellij Idea debug 远程部署的的tomcat项目
    TensorFlow MNIST CNN 代码
    线性代数-01-向量究竟是什么
    线性代数-线性代数的本质
    TensorFlow MNIST 入门 代码
    TensorFlow 学习可视化 TensorBoard 简易教程
    TensorFlow 函数
    TensorFlow Demo2
  • 原文地址:https://www.cnblogs.com/7-58/p/12863163.html
Copyright © 2011-2022 走看看