【问题标题】:zap tool showing security vulnerability but we can't find those vulnerability in our source code?zap 工具显示安全漏洞,但我们在源代码中找不到这些漏洞?
【发布时间】:2018-10-18 06:19:29
【问题描述】:

漏洞显示为:-

  1. SQL 注入 - SQLite

方法: GET

参数:查询

攻击: ' | case randomblob(10000000) 当不为 null 然后 "" else "" end --

证据:查询时间可通过参数值[' | case randomblob(10000000) when not null then "" else "" end --],导致请求耗时[542]毫秒,参数值[' | case randomblob(100000000) when not null then "" else "" end --],这导致请求需要 [900] 毫秒,而原始未修改的值为 [query] 的查询需要 [167] 毫秒。

  1. SQL 注入 - Oracle - 基于时间

方法: GET

参数:查询

攻击: 字段:[query],value [query and exists (SELECT UTL_INADDR.get_host_name('10.0.0.1') from dual union SELECT UTL_INADDR.get_host_name('10.0.0.2') from dual union SELECT UTL_INADDR.get_host_name('10.0.0.3') from dual union SELECT UTL_INADDR.get_host_name('10.0.0.4') from dual union SELECT UTL_INADDR.get_host_name('10.0.0.5') from dual) -- ]

  1. 高级 SQL 注入 - Oracle AND 基于时间的盲注

方法: GET

参数:查询

攻击:查询 AND 2972​​=DBMS_PIPE.RECEIVE_MESSAGE(CHR(113)||CHR(65)||CHR(80)||CHR(114),5)

  1. SQL 注入 - MsSQL

方法: GET

参数:查询

攻击:查询 WAITFOR DELAY '0:0:15' --

  1. SQL 注入 - 超音速 SQL - 基于时间

方法: GET

参数:查询

攻击: 字段:[query], value ["; select "java.lang.Thread.sleep"(15000) from INFORMATION_SCHEMA.SYSTEM_COLUMNS where TABLE_NAME = 'SYSTEM_COLUMNS' and COLUMN_NAME = 'TABLE_NAME ' -- ]

  1. SQL 注入 - PostgreSQL - 基于时间

方法: GET

参数:查询

攻击: field: [query], value [case when cast(pg_sleep(15) as varchar) > '' then 0 else 1 end]

  1. SQL 注入 - MySQL

方法: GET

参数:查询

攻击:查询/睡眠(15)

  1. 高级 SQL 注入 - PostgreSQL > 8.1 堆叠查询(评论)

方法: GET

参数:查询

攻击:查询;SELECT PG_SLEEP(5)--

  1. 高级 SQL 注入 - Oracle 堆叠查询(DBMS_PIPE.RECEIVE_MESSAGE - 注释)

方法: GET

参数:查询

攻击: 2018 年 2 月;SELECT DBMS_PIPE.RECEIVE_MESSAGE(CHR(105)||CHR(122)||CHR(102)||CHR(108),5) FROM DUAL--

  1. 高级 SQL 注入 - Microsoft SQL Server/Sybase 基于时间的盲注。

方法: GET

参数:查询

攻击:查询)WAITFOR DELAY CHAR(48)+CHAR(58)+CHAR(48)+CHAR(58)+CHAR(91)+CHAR(83)+CHAR(76) +CHAR(69)+CHAR(69)+CHAR(80)+CHAR(84)+CHAR(73)+CHAR(77)+CHAR(69)+CHAR(93) AND (1972=1972

我们所有的源代码都遵循给定的示例:-

public interface UserRepository extends JpaRepository<User, Long> { @Query("select u from User u where u.firstname = :firstname or u.lastname = :lastname") User findByLastnameOrFirstname(@Param("lastname") String lastname, @Param("firstname") String firstname); }

【问题讨论】:

  • 您可以添加 ZAP 问题详细信息吗?许多基于 SQL 的规则都在报告某事,这一事实使得它更有可能是一个真正的问题,而不是误报。
  • 另外,您可以查看历史选项卡并查看请求和响应,这可以帮助您了解 Zap 报告 SQLi 的原因。
  • @SimonBennetts 我已经添加了详细信息。

标签: sql-injection zap


【解决方案1】:

选择一种基于时间的攻击并重新运行它 - 您可以通过右键单击 ZAP 中的警报并选择“使用请求编辑器打开/重新发送”来执行此操作。 检查请求花费了多长时间(显示在对话框底部) - 它是否与攻击使用的延迟相同(或多一点)? 如果是这样,请尝试增加延迟并重新发送 - 现在需要更长的时间吗?

如果时间受到攻击中指定的时间的影响,那么您将有一个 SQL 注入漏洞。

为什么我没有提到你发布的源代码?那是因为我不知道这是否是所有相关代码:)

您可能还想尝试在代码中使用静态分析器 - 它可能会显示负载的误报,但您可以只关注它报告的任何 SQL 注入漏洞。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2017-11-24
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多