我应该测试Web应用程序的SQL注入。我是这种安全测试的新手,我想了解一些有关此问题的技巧。是否有最佳实践,还是我只是在Internet上搜索最常见的SQL注入并在我的应用程序中试用它们?

我希望一些指导对像我这样的其他新手来说是有益的,所以请,请帮助我完成以下列表:



要测试的应用程序中的“位置”列表:


用户名
密码
电子邮件
搜索字段
文本字段
用户可用的任何其他字段



要执行的测试列表:


...?




!谢谢!

评论

我在Google搜索“ SQL注入测试”时发现了这个有用的链接:owasp.org/index.php/Testing_for_SQL_Injection_(OWASP-DV-005)

OWASP具有所有非常有用的信息。

#1 楼

从应用程序级别,您需要检查代码如何处理参数。是否已对此参数进行任何验证(长度,数据类型检查)

最佳实践


使用参数化查询
使用过程
仅授予对SP的执行权限。没有针对用户的DDL操作
替代方法我建议您查看代码的编写方式

您可以检查sqlmap-自动SQL注入和数据库接管工具。 http://sqlmap.sourceforge.net/

用于SQL注入的Microsoft源代码分析器(CTP,2008年7月)-http://blogs.msdn.com/b/benjones/archive/2008/07 /19/microsoft-source-code-analyzer-for-sql-injection-ctp-july-2008.aspx

#2 楼

这种测试可能非常有趣,并且可以暴露其核心关注范围之外的各种缺陷。确保您不会破坏数据。我不是专家,但是我确实有一些建议,希望对您有所帮助。

有多种方法可以尝试将SQL查询和命令注入到Web应用程序中。文本输入字段是最明显的字段,但是根据您网站的工作方式,您也许可以操纵URL进行注入攻击。如果您可以上传到Web应用程序,请不要忘记尝试将文件名设置为注入攻击。

必须熟悉相关的数据库;如果不是很复杂,请向设计者索取ERD(实体关系图)。如果它非常复杂(很多表,视图和索引),则要求在关键字段上提供一些指导。

我通常尝试的攻击类型包括尝试删除表,尝试删除或更改实体,或者尝试快速使用复杂的查询来访问数据库,以使数据库服务器超负荷运行。您将需要在所使用的环境(MySQL与MS SQL)中对SQL语法进行介绍。

最后,我倾向于使用多种方法使文本上可能存在的过滤器不明智盒子;在尝试使用普通的SQL语法后,使用HTML或UTF编码而不是字符文字可能会发现大量错误。像这样:

&#60alert"!xss!</&#60


与使用文字相反:服务器将原本无害的字符转换为危险的字符串。

如前所述,这种测试通常会发现与数据库无关的错误。例如,我曾经上传一个带有编码的“ drop table”查询的文件,该查询打乱了页面,因此无法显示我的上传历史记录。

希望有帮助。

#3 楼

我认为这个问题更适合http://security.stackexchange.com。在那里回答了以下与您的问题类似的问题:


什么是一些不错的网站安全性扫描解决方案
testing-sql-注入使用sqlmap
尝试查找如何利用我的sql代码
测试php形式注入
悬挂光标测试


评论


我不同意您的评估,安全测试是(或应该)是质量检查的主要部分。另外,为什么要答案而不是评论?

– Paul Muir
2014年5月30日12:27

#4 楼

我必须说,我喜欢BrMcMullin的回答。这是使用工具可以教给您很多知识的领域。有很多优秀的开源软件和免费的开源软件,但是,我对它们中的大多数并不熟悉(该公司为获得一些不错的漏洞管理软件而掏腰包)。您可以随时访问penTestIT之类的网站获取一些建议。就个人而言,由于我可以使用它,因此在进行其他一些测试时,通常会在后台进行自动化操作。因为它向您展示了它在做什么,所以对您有帮助。

之后,我将按照BrMcMullin所说的去做。在这方面,我所需要打开的只是浏览器,提琴手和一些好音乐。看一下查询从何处获取信息。通常,还会使用选择框和单选按钮,这些输入的数据不会像文本字段一样被检查。

我几乎可以保证,在您找到第一个sql之后注入错误,您将不断尝试新的想法。这很有趣,也是让您的创意源源不断的好方法。