1. IIS与Access安全攻防概述IISInternet Information Services是微软提供的基于Windows的网页服务组件支持ASP、FTP、SMTP等功能。Access则是微软的小型关系型数据库管理系统。这两者常被搭配使用尤其在早期的ASP网站开发中。但这种组合存在诸多安全隐患从数据库泄露到权限提升攻击者可以构建完整的攻击链。在实际渗透测试中IIS与Access环境常见的安全问题主要包括三类数据库泄露、注入攻击和中间件漏洞。数据库泄露通常是由于默认路径未修改导致注入攻击则源于未对用户输入进行充分过滤中间件漏洞则涉及IIS自身的各种安全缺陷。2. MDB数据库默认路径泄露2.1 漏洞原理大部分ASP程序与Access数据库搭配使用Access无需额外配置数据库路径直接写在脚本文件中。如果开发者未修改默认数据库路径攻击者获取完整路径后可直接下载数据库文件。技术背景上ASP常通过类似conn.Open ProviderMicrosoft.Jet.OLEDB.4.0;Data Source Server.MapPath(/data/db.mdb)的代码连接Access数据库。若攻击者能猜测或获取到数据库路径就能直接下载.mdb文件。2.2 攻击手法攻击者通常会使用以下方法寻找数据库路径目录扫描工具使用DirBuster、御剑等工具枚举网站目录寻找.mdb文件字典扫描尝试常见路径如/data/db.mdb、/database/access.mdb等短文件漏洞利用Windows 8.3短文件名特性探测文件爬虫分析从页面链接或错误信息中提取路径线索例如使用Python进行简单的目录扫描import requests common_paths [/data/db.mdb, /database/access.mdb, /app_data/database.mdb] for path in common_paths: resp requests.get(fhttp://target.com{path}) if resp.status_code 200: print(fFound database at {path})2.3 防御措施修改默认数据库路径避免使用常见路径将数据库放在网站目录之外设置数据库文件权限禁止匿名用户读取在web.config中添加规则阻止.mdb文件下载定期检查服务器日志监控异常访问行为3. Access数据库注入攻击3.1 注入原理Access注入发生在用户输入未经过滤直接拼接到SQL语句中时。与MySQL不同Access没有information_schema注入完全依赖字典猜解。验证注入点的方法输入单引号观察是否报错确认报错内容是否包含数据库错误信息区分真正的数据库报错与容错页面3.2 SQLMap实战使用SQLMap进行Access注入的基本步骤检测注入点sqlmap -u http://example.com/product.asp?id123 --dbmsaccess猜解表名sqlmap -u http://example.com/product.asp?id123 --tables猜解列名假设已知admin表sqlmap -u http://example.com/product.asp?id123 --columns -T admin导出数据sqlmap -u http://example.com/product.asp?id123 --dump -T admin -C username,password3.3 防御方案使用参数化查询替代字符串拼接对用户输入进行严格过滤和转义最小化数据库账户权限定期更新ASP代码避免使用老旧函数部署WAF防护注入攻击4. IIS中间件漏洞利用4.1 HTTP.SYS远程代码执行漏洞HTTP.sys是Windows处理HTTP请求的内核驱动程序。MS15-034漏洞允许攻击者发送特殊HTTP请求导致远程代码执行或服务器崩溃。漏洞检测方法curl -v http://target.com -H Host: target.com -H Range: bytes0-18446744073709551615若返回HTTP Error 416则可能存在漏洞。Metasploit利用模块use auxiliary/dos/http/ms15_034_ulonglongadd set rhosts target.com run4.2 短文件名漏洞IIS短文件名漏洞允许攻击者枚举Web目录下的文件和文件夹。这是由于Windows为兼容旧程序生成的8.3格式短文件名导致的。特征只显示前6个字符后续用~1代替后缀名最多3位所有字母转为大写使用扫描工具python IIS_shortname_Scan.py http://target.com防御措施禁用NTFS 8.3文件名生成升级到最新IIS版本使用长文件名且不包含特殊字符4.3 解析漏洞IIS 6.0存在两种解析漏洞文件名解析login.asp;.jpg会被当作ASP执行目录名解析/1.asp/1.jpg会被当作ASP执行防御方法升级到IIS 7.0以上版本禁止上传可执行文件设置严格的MIME类型禁用不必要的ISAPI扩展5. 权限提升与防御5.1 攻击链构建完整的攻击链可能如下通过目录扫描发现数据库路径下载并破解Access数据库获取管理员凭证利用IIS解析漏洞上传Webshell通过HTTP.SYS漏洞获取系统权限建立持久化后门5.2 防御加固方案数据库层使用SQL Server替代Access加密敏感数据字段定期备份并删除测试数据应用层更新ASP.NET到最新版本禁用危险组件如WScript.Shell设置严格的文件上传策略系统层安装最新安全补丁配置防火墙规则使用最小权限原则启用日志审计网络层部署WAF防护限制内网访问启用HTTPS加密6. 实战案例复现6.1 环境搭建测试环境配置Windows Server 2008 R2IIS 7.5Access 2010ASP经典网站所需工具SQLMapMetasploitIIS短文件名扫描工具Burp Suite6.2 攻击步骤扫描发现/data/admin.mdb可下载使用AccessPassword破解数据库密码发现管理员表中有admin/123456凭证登录后台找到文件上传点上传shell.asp;.jpgWebshell通过Webshell执行系统命令利用MS15-034提升权限添加管理员账户建立持久化访问6.3 防御验证加固后验证尝试下载数据库返回403错误SQL注入被WAF拦截上传恶意文件被防病毒软件删除异常登录触发账户锁定所有操作被详细记录在日志中在实际项目中我曾遇到一个使用IIS 6.0的老旧系统通过短文件名漏洞找到了备份文件路径进而获取到数据库连接字符串。这个案例让我深刻认识到及时更新系统的重要性。对于实在无法升级的环境至少应该禁用危险功能并加强监控。