SQL注入攻击:获取网站路径与目录遍历技术

需积分: 28 2 下载量 29 浏览量 更新于2024-09-07 收藏 2KB TXT 举报
本文档介绍了如何利用MS SQL Server(MSsqlL)注入漏洞来获取网站的路径信息。通过执行特定的SQL语句,攻击者可以读取系统注册表中的虚拟根目录信息,以及遍历指定目录下的子目录结构。 MS SQL Server注入(MSsqlL注入)是一种针对使用MS SQL Server作为数据库的应用程序的安全威胁。它发生在应用程序未能充分验证用户输入,允许恶意用户插入SQL命令到查询中。在这种情况下,攻击者利用注入技术来获取服务器上的敏感信息,如网站的路径。 1. `xp_dirtree` 存储过程: 提供的示例中,使用了`execmaster..xp_dirtree 'd:/test'`来遍历'd:/test'目录及其子目录。`xp_dirtree`是SQL Server的一个扩展存储过程,用于列出指定目录及其所有子目录的树形结构。攻击者可以改变参数来探索其他目录。 2. 注入SQL语句构造: - `createtabledirs(paths varchar(1000), id int)` 创建一个临时表`dirs`来存储目录路径。 - `insertdirsexecmaster.dbo.xp_dirtree'd:\'--` 将`xp_dirtree`的结果插入到临时表中。 - `select top 1 paths from dirs where id = 1` 从`dirs`表中选择第一条记录,获取第一个目录路径。 - `http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs where id=1)` 将SQL注入到URL中,尝试获取路径并绕过安全检查。 3. 读取系统注册表信息: - `EXECmaster.dbo.xp_regread` 是另一个扩展存储过程,用于读取Windows注册表项。攻击者可以使用这个来获取关于Web服务的虚拟根目录设置。 - 示例中的代码创建了一个名为`[dbo].[cyfd]`的表,并将注册表读取的结果存储在其中。 4. 验证获取的路径: - `and1=(select count(*)fromʱwhereʱֶ>1)` 和 `and1=(select count(*)fromcyfdwheregyfd>1)` 用于检查获取的路径是否有效,如果存在多个条目,说明路径是正确的。 5. 删除Webshell: - `droptablecyfd;` 用来删除之前创建的`cyfd`表,可能是为了清除痕迹或防止进一步的检测。 总结,MSsqlL注入是一种严重的安全风险,允许攻击者获取服务器内部信息,包括网站路径、虚拟根目录和可能存在的Webshell。为了防止这类攻击,开发者应该确保对用户输入进行严格的验证和过滤,使用预编译的SQL语句(如参数化查询),并保持数据库系统及应用程序的更新,修补已知的安全漏洞。同时,定期的安全审计和日志监控也是必要的防御措施。