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

知识点
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 | <% |
我们可以通过互联网找到搭建平台源码,从源码中可以看到上述数据库配置路径
如果平台以默认配置进行搭建,那么访问者可以构造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 | ┌──(kali㉿kali)-[~] |
进入msfconsole,使用auxiliary/dos/http/ms15_034_ulonglongadd,按如下配置目标主机IP地址和端口之后run即可复现
1 | msfconsole |
执行结果如下图所示,目标主机会蓝屏重启,复现完成

IIS短文件名猜解漏洞
漏洞简介
此漏洞实际是由HTTP请求中旧DOS 8.3名称约定(SFN)的代字符(~)波浪号引起的。它允许远程攻击者在Web根目录下公开文件和文件夹名称(不应该可被访问)。攻击者可以找到通常无法从外部直接访问的重要文件,并获取有关应用程序基础结构的信息。
短文件名特征
为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3短文件名。在Windows下查看对应的短文件名,可以使用命令dir /x,短文件名具有如下特征

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

/a*~1*/的意思就是,用首字母a这个字符去匹配,也就是首字母a是否存在这个短文件名。~1这个和上面的短文件名特征是一样的,代表了它是一个短文件名。
- 如果说这个页面返回的状态码是
404的话,那么这个短文件名是存在的! - 如果返回的是
400,则说明这个短文件名是不存在的!
从上图可以得出,返回的页面状态码是404,说明网站更目录下有一个文件是以a开头的短文件名。

aspnet_client这个文件夹是iis自带的文件夹目录,所以会显示存在!
这个时候我们测试一个不存在的文件或者文件名:
访问URL:http://192.168.119.133/c*~1*/.aspx

返回的状态码是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特有的漏洞。
漏洞利用条件
- PHP配置:php.ini中
cgi.fix_pathinfo=1(默认值为1,通常无需特别设置) - IIS运行模式:IIS 7.x运行在Fast-CGI模式下
- 请求限制:IIS的处理程序映射中请求限制未被禁用(在phpStudy等环境中需特别注意)
利用方式
1. 基本利用步骤
- 在网站根目录创建一个图片文件(如
shell.jpg) - 向该图片文件中写入PHP代码(如
<?php phpinfo(); ?>) - 通过URL访问:
http://example.com/shell.jpg/.php - 服务器会将图片解析为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 //获取表名下的列名数据