跳转至内容
  • 社区首页
  • 版块
  • 最新
  • 标签
  • 热门
折叠

GitHub中文论坛

  1. 主页
  2. 版块
  3. 技术交流
  4. 服务器端的漏洞(相关学习)

服务器端的漏洞(相关学习)

已定时 已固定 已锁定 已移动 技术交流
24 帖子 1 发布者 30.2k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • C 离线
    C 离线
    changuang
    写于 最后由 编辑
    #21

    实验室:操作系统命令注入,简单案例

    此实验室在产品库存检查器中包含一个操作系统命令注入漏洞。

    应用程序执行包含用户提供的产品和商店 ID 的 shell 命令,并在其响应中返回该命令的原始输出。

    若要解决实验室问题,请执行命令以确定当前用户的名称。whoami

    • 使用 Burp Suite 拦截和修改检查库存水平的请求。
    • 修改参数,为其赋值 。storeID1|whoami
    • 请注意,响应是否包含当前用户的名称。

    实验步骤

    打开bp的拦截,下面一行修改storeid就即可

    6f7e732a-3961-4fb4-b347-aefda7a8f8a4-0490b90b744748ff3218c9ef0239569.png

    修改为如图所示storeID1|whoami

    ba7e4017-6eb9-429d-b0b5-7a2d87fac735-4049c5924c523e7c72269cfa759cea7.png

    渗透成功

    a50f3bae-528b-4ae4-9fe7-c8bb21232653-d6b0fdedab13df51a04d1cb82fcb5a2.png

    1 条回复 最后回复
    0
    • C 离线
      C 离线
      changuang
      写于 最后由 编辑
      #22

      什么是 SQL 注入 (SQLi)?

      SQL 注入 (SQLi) 是一种 Web 安全漏洞,允许攻击者干扰应用程序对其数据库进行的查询。这可能允许攻击者查看他们通常无法检索的数据。这可能包括属于其他用户的数据,或应用程序可以访问的任何其他数据。在许多情况下,攻击者可以修改或删除此数据,从而导致应用程序的内容或行为持续更改。

      在某些情况下,攻击者可以升级 SQL 注入攻击,以破坏底层服务器或其他后端基础结构。它还可以使他们执行拒绝服务攻击。

      如何检测 SQL 注入漏洞

      您可以使用一组针对应用程序中每个入口点的系统测试来手动检测 SQL 注入。为此,您通常会提交:

      • 单引号字符,并查找错误或其他异常。'
      • 一些特定于 SQL 的语法,这些语法的计算结果为入口点的基本(原始)值和其他值,并查找应用程序响应中的系统差异。
      • 布尔条件(如 和 ),并查找应用程序响应中的差异。OR 1=1OR 1=2
      • 有效负载旨在在 SQL 查询中执行时触发时间延迟,并查找响应时间的差异。
      • OAST 有效负载旨在在 SQL 查询中执行时触发带外网络交互,并监视任何生成的交互。

      或者,您可以使用 Burp Scanner 快速可靠地找到大多数 SQL 注入漏洞。

      检索隐藏数据

      想象一下,一个显示不同类别产品的购物应用程序。当用户单击“礼品”类别时,其浏览器会请求以下网址:

      https://insecure-website.com/products?category=Gifts
      

      这会导致应用程序进行 SQL 查询,以从数据库中检索相关产品的详细信息:

      SELECT * FROM products WHERE category = 'Gifts' AND released = 1
      

      此 SQL 查询要求数据库返回:

      • 所有细节 (*)
      • 从表格中products
      • 其中 是categoryGifts
      • 并且是 .released1
        该限制用于隐藏未发布的产品released = 1。我们可以假设对于未发布的产品released = 0

      该应用程序不会实现任何针对 SQL 注入攻击的防御措施。这意味着攻击者可以构造以下攻击,例如:

      https://insecure-website.com/products?category=Gifts'--
      

      这会导致 SQL 查询:

      SELECT * FROM products WHERE category = 'Gifts'--' AND released = 1
      

      至关重要的是,请注意,这是 SQL 中的注释指示器。这意味着查询的其余部分被解释为注释,从而有效地将其删除。在此示例中,这意味着查询不再包含 。因此,将显示所有产品,包括尚未发布的产品。

      --AND released = 1
      

      您可以使用类似的攻击使应用程序显示任何类别中的所有产品,包括他们不知道的类别:

      https://insecure-website.com/products?category=Gifts'+OR+1=1--
      

      这会导致 SQL 查询:

      SELECT * FROM products WHERE category = 'Gifts' OR 1=1--' AND released = 1
      

      修改后的查询返回 为 或 等于 的所有项目。与往常一样,查询返回所有项。

      categoryGifts111=1
      
      警告
      将条件注入 SQL 查询时要小心。即使它在你注入的上下文中看起来是无害的,应用程序在多个不同的查询中使用来自单个请求的数据也是很常见的。例如,如果您的条件达到 or 语句,则可能会导致意外丢失数据。OR 1=1UPDATEDELETE
      

      颠覆应用逻辑

      想象一下,一个应用程序允许用户使用用户名和密码登录。如果用户提交了用户名和密码,则应用程序通过执行以下 SQL 查询来检查凭据:wienerbluecheese

      SELECT * FROM users WHERE username = 'wiener' AND password = 'bluecheese'
      

      如果查询返回用户的详细信息,则登录成功。否则,它将被拒绝。

      在这种情况下,攻击者可以以任何用户身份登录,而无需密码。他们可以使用 SQL 注释序列从查询子句中删除密码检查来执行此操作。例如,提交用户名和空白密码将导致以下查询:--WHEREadministrator'--

      SELECT * FROM users WHERE username = 'administrator'--' AND password = ''
      

      此查询返回其所在用户,并成功将攻击者登录为该用户。usernameadministrator

      1 条回复 最后回复
      0
      • C 离线
        C 离线
        changuang
        写于 最后由 changuang 编辑
        #23

        实验室:WHERE 子句中允许检索隐藏数据的 SQL 注入漏洞

        本实验在产品类别筛选器中包含一个 SQL 注入漏洞。当用户选择类别时,应用程序将执行如下所示的 SQL 查询:

        SELECT * FROM products WHERE category = 'Gifts' AND released = 1
        

        若要解决实验室问题,请执行 SQL 注入攻击,使应用程序显示一个或多个未发布的产品。

        • 使用 Burp Suite 拦截和修改设置产品类别过滤器的请求。
        • 修改参数,为其赋值category'+OR+1=1--
        • 提交请求,并验证响应现在是否包含一个或多个未发布的产品。

        实验步骤

        URL 中输入单引号,查看是否存在漏洞,服务器返回一个错误,借以得知容易受到 SQL 注入攻击

        URL 中输入'+OR+1=1-- (查询字符串中空格被编码成+号)

        数据库执行的 SQL 查询则为

        SELECT * FROM products 
        WHERE category = ''or 1=1-- ' AND released = 1
        

        通过'来闭合参数,-- 来注释后半部分
        aa370589-bc55-4f93-9ef2-a48802a6a6bc-db04ea14c31fe071cb9eb2bdde32926.png

        1 条回复 最后回复
        0
        • C 离线
          C 离线
          changuang
          写于 最后由 编辑
          #24

          实验室:允许绕过登录的 SQL 注入漏洞

          本实验在登录函数中包含一个 SQL 注入漏洞。

          若要解决实验室问题,请执行以用户身份登录应用程序的 SQL 注入攻击。administrator

          • 使用 Burp Suite 拦截和修改登录请求。
          • 修改参数,为其赋值:usernameadministrator'--

          实验步骤

          目的为以管理员用户登录应用程序
          尝试账号密码为admin。网页显示,Invalid username or password,无效的用户名或密码,故此不知道是用户名还是密码错误。
          2e65ae8e-7059-42f6-9f12-b5fa9b9c680a-image.png
          从实验室说明中查的用户名为administrator
          feb01956-f6b6-4d04-9e09-ed3e83a29a7e-image.png
          在Username中输入any' or 1=1 -- ,密码随便写毕竟会被注释掉
          用any'来闭合参数,or一个为真即可通过,-- 是 sql 的注释语法注释掉后面的密码
          在Username中输入administrator'-- ,密码随便写毕竟会被注释掉
          8173bfd7-1178-4dda-a998-c0865b692ef3-9e674102a5164c4c54a2b2ff9f5b8c1.png
          浏览器连上代理,在登录页面用 bp 抓包,修改其参数
          fa6e5393-4d7e-4839-b647-338761108e41-d619dae3e684645c57a1a468a1b5503.png

          1 条回复 最后回复
          0
          回复
          • 在新帖中回复
          登录后回复
          • 从旧到新
          • 从新到旧
          • 最多赞同


          • 登录

          • 第一个帖子
            最后一个帖子
          0
          • 社区首页
          • 版块
          • 最新
          • 标签
          • 热门