注册忘记密码

黑客论坛,黑客工具,黑客教程,QQ技术,黑客基地,黑客网络,黑客软件,黑客联盟,免杀,远控,ddos,cc,黑客攻防,黑客编程,黑客定位,手机定位,微信定位,hack,黑客网站,查开房,定位,信息查询

查看: 73|回复: 0

[技术文章] 黑客组织之其他SQL注入型数据

[复制链接]
   0 UID
   0帖子
   0精华
21
   0威望
500
   0金币
45446
   0贡献
5000
   0阅读权限
   200
   积分
   0
   在线时间
   554 小时
   最后登录
   2020-1-17
大多数应用都从 GET 或 POST 参数中检索数据,但 HTTP 请求的其他内容也可能会触发 SQL 注入漏洞。
cookie 就是个很好的例子。cookie 被发送给用户端的浏览器,并在每个请求中都会自动回 发给服务器。cookie 一般被用于验证、会话控制和保存用户特定的信息(比如在 Web 站点中的 喜好)。前面介绍过,我们可以完全控制发送给服务器的内容,所以应考虑将 cookie 作为一种 有效的用户数据输入方式和易受注入影响的对象。
在其他 HTTP 请求内容中,易受注入攻击的应用示例还包括主机头、引用站点头和用户 代理头。主机头字段指定请求资源的 Internet 主机和端口号。引用站点头字段指定获取当前 请求的资源。用户代理头字段确定用户使用的 Web 浏览器。虽然这些情况并不多见,但有些 网络监视程序和 Web 趋势分析程序会使用主机头、引用站点头和用户代理头的值来创建图 形,并将它们存储在数据库中。对于这些情况,我们有必要对这些头进行测试以获取潜在的 注入漏洞。
可以借助代理软件并使用本章前面介绍的方法来修改 cookie 和 HTTP 头。 2. 操纵参数
我们先通过介绍一个非常简单的例子来帮助您熟悉 SQL 注入漏洞。
假定您正在访问 Victim 公司的 Web 站点(这是一个电子商务站点,可以在上面购买各种商 品)。您可以在线查找商品,根据价格对商品进行分类以及显示特定类型的商品等。当浏览不 同种类的商品时,其 URL 如下所示:
http://www.victim.com/showproducts.php?category=bikes http://www.victim.com/showproducts.php?category=cars http://www.victim.com/showproducts.php?category=boats
showproducts.php 页面收到一个名为 category 的参数。我们不必输入任何内容,因为上述 连接就显示在 Web 站点上,只需点击它们即可。服务器端应用期望获取已知的值并将属于特 定类型的商品显示出来。
即便未开始测试操作,我们也应该大概了解了该应用的工作过程。可以断定该应用不是静 态的。该应用似乎是将 category 参数的值作为查询条件,并根据后台数据库的查询结果来显示 不同的商品。
此时,考虑在服务器端正在执行的是哪一种数据库操作也是非常重要的,如果不小心,那 么我们尝试的注入攻击可能会产生一些副作用。在数据库层,有 4 种主要的数据库操作,这 4 种操作如下所示:
● SELECT:根据搜索条件从数据库中读取数据 ● INSERT:将新数据插入到数据库中
UPDATE:根据指定的条件更新数据中已有的数据
● DELETE:根据指定的条件删除数据库中已有的数据 在本例中,我们将假定远端的应用程序正在执行一个 SELECT 查询,它根据 category 参数
的值显示数据库中与之匹配的记录。
现在开始手动修改 category 参数的值,将其改为应用未预料到的值。按照下列方式进行首
次尝试:
http://www.victim.com/showproducts.php?category=attacker
上述例子使用不存在的类型名向服务器发出请求。服务器返回下列响应:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /var/www/victim.com/showproducts.php on line 34
该警告是当用户尝试从空结果集中读取记录时,数据库返回的一个 MySQL 数据库错误。 该错误表明远程应用未能正确处理意外的数据。
继续进行推理操作,现在为之前发送的值添加一个单引号('),发送请求。
不难发现,有些应用在处理用户数据时会返回意想不到的结果。Web 站点检测到的异常并 非都是由 SQL 注入漏洞引起的,它会受很多其他因素的影响。随着对 SQL 注入开发不断熟悉,我们将逐步认识到单引号字符在检测中的重要性,并将学会如何通过向服务器发送合适的请求 来判断能进行何种类型的注入。
还可以通过进行另外一个有趣的测试来识别 Oracle 和 PostgreSQL 中的漏洞。向 Web 服务 器发送下面两个请求:
http://www.victim.com/showproducts.php?category=bikes http://www.victim.com/showproducts.php?category=bi'||'kes
在 Microsoft SQL Server 中与之等价的请求为: http://www.victim.com/showproducts.php?category=bikes
http://www.victim.com/showproducts.php?category=bi'+'kes
在 MySQL 中与之等价的请求为(请注意两个单引号之间的空格): http://www.victim.com/showproducts.php?category=bikes
http://www.victim.com/showproducts.php?category=bi''kes
如果两个请求的结果相同,那么很可能存在 SQL 注入漏洞。
现在读者可能对单引号和字符编码有些困惑,阅读完本章后,您将会清楚这些内容。本节 的目标是展示哪些操作会触发 Web 服务器响应而产生异常。在 2.3 节“确认 SQL 注入”中, 我们将对用于寻找 SQL 注入漏洞的字符串进行扩展。
第2章 SQL注入测试
  用户数据验证
工具与陷阱......
有两个原因会引发 SQL 注入漏洞:
● 缺少用户输入验证
● 数据和控制结构混合在同一传输通道中 到目前为止,在计算机历史上,这两个问题一直是产生某些非常重要漏洞(如堆和
堆栈溢出、格式字符串问题)的原因。缺少用户输入验证,将导致攻击者可以从数据部 分(例如,使用单引号引起来的字符串或数字)跳到注入控制命令(例如,SELECT、 UNION、AND、OR 等)。
为防止出现这种漏洞,首要措施是执行严格的用户输入验证和(或)输出编码。例如, 可采用白名单方法,即如果希望将数字作为参数值,可对 Web 应用进行配置以拒绝所 有由用户提供的非数字输入字符。如果希望是字符串,那么只接受之前确定的不具危险 性的字符。如果这些都不可行,就必须保证所有输入在用于防止 SQL 注入之前已被正 确引用或编码。
下面将介绍信息到达数据库服务器的流程和产生上述错误的原因。
3. 信息工作流
前面介绍了一些操纵参数时显示的 SQL 注入错误。读者可能会问:修改参数时,为什么
Web 服务器会显示数据库错误?虽然错误显示在 Web 服务器的响应中,但 SQL 注入发生在数 据库层。本节的例子会展示如何通过 Web 应用到达数据库服务器。
一定要对数据输入影响 SQL 查询的过程和可以从数据库期望获取的响应类型有清晰的理
解。图 2-4 展示了使用浏览器发送的数据来创建 SQL 语句并将结果返回给浏览器的整个过程。 图 2-4 还展示了动态 Web 请求所涉及的各方之间的信息工作流:
(1) 用户向 Web 服务器发送请求。
(2) Web 服务器检索用户数据,创建包含用户输入的 SQL 语句,然后向数据库服务器发送 查询。
(3) 数据库服务器执行 SQL 查询并将结果返回给 Web 服务器。请注意,数据库服务器并 不知道应用逻辑,它只是执行查询并返回结果。
(4) Web 服务器根据数据库响应动态地创建 HTML 页面。
图 2-4 三层架构中的信息流
不难发现,Web 服务器和数据库服务器是相互独立的实体。Web 服务器只负责创建 SQL 查询,解析结果,将结果显示给用户。数据库服务器接收查询并向 Web 服务器返回结果。对 于利用 SQL 注入漏洞来说,这一点非常重要,因为我们可以通过操纵 SQL 语句来让数据库服 务器返回任意数据(比如 Victim 公司 Web 站点的用户名和口令),而 Web 服务器却无法验证数 据是否合法,因此会将数据回传给攻击者。

发表回复

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则


快速回复 返回顶部 返回列表