asp 文件上传(ASP文件上传原理分析及实现实例)

圈圈笔记 63

请遵守法律法规,文章旨在提高安全软件的应变策略,严禁非法使用

前言

文件上传与文件包含这种漏洞都是比较常见的漏洞,在学习过后对其进行简单总结。

漏洞相关信息

漏洞定义

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,文件上传 本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。

漏洞危害

网站被控制,对文件增删改查,执行命令,链接数据库如果服务器长久未更新,可以利用exp提权,导致服务器沦陷同服务器的其他网站沦陷漏洞常见利用方法1、修改限制的后缀名(前端js检测时可直接在浏览器中修改)

2、修改文件头绕过,即修改content-type与要求后缀一致(检测文件头时,即后端设置检测时)

3、修改.user.ini配置文件(当存在index.php文件时)

4、构造GIF89A添加到文件绕过图片检测(检测文件内容时)

5、修改.htaccess绕过(中间件解析漏洞)

5、%00截断绕过后缀检测

6、利用条件竞争绕过

7、二次渲染绕过

漏洞常用知识

1、一些黑名单被过滤时的替代方法

<1>在上传文件时,有时候php可能被过滤,而php文件的的格式是,因此这里的话我们可以用短标签=来进行替代,或者有时候可以用大小写或者双写(例如:phphpp),从而实现绕过。

<2>在上传文件时,有时候会上传日志文件,当过滤var这种的时候,我们可以用.来进行绕过,即构造log为lo’.’g

<3>在写文件内容时,有时候会被过滤空格,这时候我们有以下几种绕过方法

/**/%09(php环境)${IFS}//加$是为了隔断,IFS是shell已经定好的,功能就是分隔变量,默认就是对字段起分隔作用$IFS$9

2、中间件解析漏洞

<1>apache解析漏洞

(1)Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断

举个栗子

当我们输入文件名为1.php.rar时,由于apache不识别解析rar文件,因此这里就等同于上传的文件名为1.php,但我们访问的话仍是1.php.rar,访问这个文件就可以发现我们上传文件成功

(2)Apache中的.htaccess文件

.htaccess的定义

概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

我们这里的话利用的就是改变文件拓展名

在这里的话它的含义就是将其他文件解析为php给执行,内容修改后大致是这样

AddTypeapplication/x-httpd-php .jpg

<2>IIS解析漏洞

(1)文件解析漏洞(5.x-6.0版本)

举个栗子

我们上传1.asp;.jpg,此时也可能会出现匹配最后.后面的后缀的情况,从而认为上传的文件是jpg,但IIS不看分号后的内容,所以它理解的文件名其实就是1.asp

(2)目录解析漏洞(5.x-6.0的版本)

依旧用栗子来说明

例如/123.asp/ddd.jpg,网站限制了上传文件的格式(只能jpg)在123.asp路径下的文件(如ddd.jpg)都会以asp文件解析

<3>Nginx解析漏洞

(1)Nginx中php配置错误导致的解析漏洞

再举个栗子

当我们构造一个文件,假如名字是test.jpg,写入内容为,此时我们访问test.jpg,其返回的是图片存在问题,无法显示,而当我们此时访问test.jpg/test.php时,回显Access denied,这个test.jpg不是目录,而且test.php更是一个都不存在的文件,此时却回显了访问被拒绝,这是为什么呢,因为这时Nginx会认为这是php文件,转交给php来处理,而php发现这个test.php文件不存在,就会删去test.php,此时就会访问test.jpg,php认为它不是php文件,就回显了拒绝访问。而当我们将配/etc/php5/fpm/php-fpm.conf文件中的security.limit_extensions添加上.jpg时就会回显出php配置信息

(2)%00截断

前提

php版本小于5.3.29magic_quotes_gpc = Off它的原理简单的来说就是url中的%00表示ascii码中的0,而ascii码中的0表示的就是字符串结束,不再往后面读取,此时就实现了截断的目的

举个栗子

假设此时我们想上传php文件,但允许上传的是jpg文件,我们此时就可以借助%00截断来实现

filename=1.jpg 此时上传的是1.jpg

加上%00

filename=1.php%00.jpg 此时上传的是1.php(突破限制)

实战

修改后缀名绕过(前端修改js代码)

进入靶场,选择开发者模式,发现了允许格式,我们点击修改

将png修改为php

此时上传我们的木马文件

上一篇:

下一篇:

  推荐阅读

分享