【问题标题】:How to do security testing for API如何对 API 进行安全测试
【发布时间】:2020-04-09 18:35:34
【问题描述】:

我有类似的 API

"/getXXXX?ABC=X7TRYUV&Ab_DEF=true&Ab_XYZ=true&Ab_ExZ=ZXTY"

如何检查请求参数的漏洞?

我可以传递什么类型的字符串?

我在 Wapiti 和 SQLMAP 工具中运行了 API,但没有发现任何问题。 我通过将“Ab_ExZ=ZXTY”操作为“CHR(91%2d1)'XTY

手动对其进行了测试

它会过滤掉不应该过滤掉的正确参数。

谢谢, 比贝克

【问题讨论】:

    标签: api security sql-injection sqlmap wapiti


    【解决方案1】:

    很遗憾,您的问题的答案取决于情况。 OWASP 提供了很多关于注入式攻击的有用信息。您应该使用的确切字符串取决于解决方案的底层技术和字符,例如在数据处理的每个阶段都重要的终止字符。

    测试注入的一个起点是尝试终止语句/命令。例如,在 Oracle PL/SQL 中,字符 '; 将通过引号关闭字符串条目和分号终止命令来起作用。如果查询容易受到注入攻击,这很可能会导致数据库出现格式错误的查询错误。

    显然其他数据库的语法会略有不同。同样值得考虑的是底层操作系统。如果 API 的输入最终在命令行中执行,它是基于 Windows 还是基于 Linux?这将更改您要尝试的语法。

    最后,如果数据存储在哪里,然后呈现?如果它在 Web UI 中呈现,您可以尝试输入 <b>,显然如果您的 API 允许存储它,然后在不转义的情况下显示给用户,您将看到粗体文本。这将表明二阶注入攻击。 (实际风险是数据被检索而不是被发送)。

    我强烈建议您查看 OWASP 网站上提供的注入信息。包括WebGoat 示例,您可以在其中尝试针对故意易受攻击的网站进行注入式测试。这些原则将很好地转化为 API 测试。

    【讨论】:

    • 要给出绝对示例字符串以传递,我需要知道以下内容。 1) 运行您的 API 的网络服务器(名称和版本)。 2) 正在执行结束查询的数据库(名称和版本)。 3) 运行数据库和网络服务器的操作系统。 4) 请求的预期功能行为。请您使用此信息更新问题陈述。
    猜你喜欢
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    相关资源
    最近更新 更多