当前位置:首页 > 数码 > 粗浅剖析-SQL-注入破绽检测与进攻战略 (粗浅分析的意思)

粗浅剖析-SQL-注入破绽检测与进攻战略 (粗浅分析的意思)

admin5个月前 (05-10)数码22

SQL注入(SQLInjection)是一种宽泛存在于Web运行程序中的重大安保破绽,它准许攻打者在不获取授权的状况下访问、修正或删除数据库中的数据。这是一种经常出现的攻打模式,因此数据库开发者、Web开发者和安保专业人员须要了解它,以采取措施来预防和检测SQL注入破绽。

1.什么是SQL注入

SQL注入是一种攻打技术,攻打者经过在输入字段中拔出恶意SQL代码,试图诈骗运行程序以口头不安保的数据库操作。这些恶意SQL代码将与运行程序的数据库启动交互,准许攻打者口头未授权的操作。SQL注入攻打通常针对经常使用灵活SQL查问的Web运行程序,这些查问构建在未正确过滤或验证用户输入的基础上。

SQL注入攻打通常触及经常使用单引号、双引号、注释符号和逻辑运算符等不凡字符,以绕过运行程序的输入验证,结构恶意SQL查问。完成的攻打或者造成数据库走漏、数据破坏、未授权访问、甚至完整的数据库主机控制。

2.SQL注入的危害

SQL注入破绽或者造成以下危害:

数据走漏: 攻打者可以经过SQL注入破绽访问敏感消息,如用户凭证、团体数据和财务数据。

数据窜改: 攻打者可以修负数据库中的数据,造成消息失误或不分歧。

数据删除: 攻打者可以删除数据库中的数据,对业务经营形成重大侵害。

拒绝服务: 大规模SQL注入攻打或者造成数据库主机过载,从而拒绝失罕用户的访问。

潜在的远程口头: 攻打者或者完成口头恶意代码,控制整个数据库主机,这对整个运行程序和数据库系统形成要挟。

3.预防SQL注入

要防止SQL注入破绽,可以采取以下措施:

经常使用参数化查问: 经常使用预编译的语句或参数化查问,而不是将用户输入间接嵌入SQL查问中。

输入验证和过滤: 对用户输入启动验证和过滤,确保只接受有效的数据。

最小权限准则: 给数据库用户调配最小的权限,以限度攻打者对数据库的访问。

失误消息处置: 防止将具体的数据库失误消息暴露给用户。失误消息或者蕴含有关数据库结构的消息,有助于攻打者发现破绽。

安保开发通常: 遵照安保的开发最佳通常,包括代码审查和安保培训。

4.SQL注入检测工具

为了协助发现和修复SQL注入破绽,可以经常使用各种安保工具,如破绽扫描器和审计工具。以下是一些用于检测SQL注入破绽的工具:

另一个弱小的Web运行程序破绽扫描工具,可检测SQL注入破绽。

:盛行的浸透测试工具,具备SQL注入检测插件。

专门用于检测和应用SQL注入破绽的工具,具备弱小的性能和选项。

开源的破绽扫描工具,包括SQL注入检测性能,是OWASP名目标一局部。

5.总结

SQL注入是一种经常出现且重大的Web运行程序破绽,可造成数据走漏、数据窜改和拒绝服务。为了防止SQL注入,开发人员应驳回安保的编码模式,包括经常使用参数化查问和数据验证。此外,破绽扫描工具可以用于检测SQL注入破绽,以确保运行程序的安保性。最关键的是,坚持对新的安保要挟和最佳通常的了解,以及活期审查和改良运行程序的安保性。


怎么检测sql server注入漏洞

粗浅剖析

许多网站程序在编写时,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。 用户可以提交一段数据库查询代码(一般是在浏览器地址栏进行,通过正常的www端口访问),根据程序返回的结果,获得某些想得知的数据,这就是所谓的SQL Injection,即SQL注入。 网站的恶梦——SQL注入SQL注入通过网页对网站数据库进行修改。 它能够直接在数据库中添加具有管理员权限的用户,从而最终获得系统管理员权限。 黑客可以利用获得的管理员权限任意获得网站上的文件或者在网页上加挂木马和各种恶意程序,对网站和访问该网站的网友都带来巨大危害。 防御SQL注入有妙法第一步:很多新手从网上下载SQL通用防注入系统的程序,在需要防范注入的页面头部用来防止别人进行手动注入测试。 可是如果通过SQL注入分析器就可轻松跳过防注入系统并自动分析其注入点。 然后只需要几分钟,你的管理员账号及密码就会被分析出来。 第二步:对于注入分析器的防范,通过实验,发现了一种简单有效的防范方法。 首先我们要知道SQL注入分析器是如何工作的。 在操作过程中,发现软件并不是冲着“admin”管理员账号去的,而是冲着权限(如flag=1)去的。 这样一来,无论你的管理员账号怎么变都无法逃过检测。 第三步:既然无法逃过检测,那我们就做两个账号,一个是普通的管理员账号,一个是防止注入的账号,如果找一个权限最大的账号制造假象,吸引软件的检测,而这个账号里的内容是大于千字以上的中文字符,就会迫使软件对这个账号进行分析的时候进入全负荷状态甚至资源耗尽而死机。 下面我们就来修改数据库吧。 1.对表结构进行修改。 将管理员的账号字段的数据类型进行修改,文本型改成最大字段255(其实也够了,如果还想做得再大点,可以选择备注型),密码的字段也进行相同设置。 2.对表进行修改。 设置管理员权限的账号放在ID1,并输入大量中文字符(最好大于100个字)。 3.把真正的管理员密码放在ID2后的任何一个位置(如放在ID549上)。 我们通过上面的三步完成了对数据库的修改。 另外要明白您做的ID1账号其实也是真正有权限的账号,现在计算机处理速度那么快,要是遇上个一定要将它算出来的软件,这也是不安全的。 只要在管理员登录的页面文件中写入字符限制就行了,就算对方使用这个有上千字符的账号密码也会被挡住的,而真正的密码则可以不受限制。

如何检测SQL注入技术以及跨站脚本攻击

在最近两年中,安全专家应该对网络应用层的攻击更加重视。 因为无论你有多强壮的防火墙规则设置或者非常勤于补漏的修补机制,如果你的网络应用程序开发者没有遵循安全代码进行开发,攻击者将通过80端口进入你的系统。 广泛被使用的两个主要攻击技术是SQL注入[ref1]和CSS[ref2]攻击。 SQL 注入是指:通过互联网的输入区域,插入SQLmeta-characters(特殊字符代表一些数据)和指令,操纵执行后端的SQL查询的技术。 这些攻击主要针对其他组织的WEB服务器。 CSS攻击通过在URL里插入script标签,然后诱导信任它们的用户点击它们,确保恶意Javascript代码在受害人的机器上运行。 这些攻击利用了用户和服务器之间的信任关系,事实上服务器没有对输入、输出进行检测,从而未拒绝javascript代码。 这篇文章讨论SQL注入和CSS攻击漏洞的检测技术。 网上已经有很多关于这两种基于WEB攻击的讨论,比如如何实施攻击,他们的影响,怎样更好的编制和设计程序防止这些攻击。 然而,对如何检测这些攻击并没有足够的讨论。 我们采用流行的开源的IDSSnort[ref3],组建根据检测这些攻击的规则的正则表达式。 附带,Snort默认规则设定包含检测CSS的方法,但是这些容易被避开检测。 比如大多通过hex进制编码,如%3C%73%63%72%69 %70%74%3E代替避开检测。 依赖levelofparanoia组织的能力,我们已经编写了多种检测相同攻击的规则。 如果你希望检测各种可能的SQL注入攻击,那么你需要简单的留意任何现行的SQLmeta-characters,如单引号,分号和双重破折号。 同样的一个极端检测CSS攻击的方法,只要简单地提防HTML标记的角括号。 但这样会检测出很多错误。 为了避免这些,这些规则需要修改使它检测更精确些,当仍然不能避免错误。 在Snort规则中使用pcre(PerlCompatibleRegularExpressions)[ref4]关键字,每个规则可以带或不带其他规则动作。 这些规则也可以被公用软件如grep(文档搜索工具)使用,来审阅网络服务器日志。 但是,需要警惕的是,用户的输入只有当以GET提交请求时,WEB服务器才会记录日记,如果是以POST提交的请求在日记中是不会记录的。 注入的正则表示式当你为SQL注入攻击选择正则表示式的时候,重点要记住攻击者可以通过提交表单进行SQL注入,也可以通过Cookie区域。 你的输入检测逻辑应该考虑用户组织的各类型输入(比如表单或Cookie信息)。 并且如果你发现许多警告来自一个规则,请留意单引号或者是分号,也许些字符是你的Web应用程序创造的合法的在CookieS中的输入。 因此,您需要根据你的特殊的WEB应用程序评估每个规则。 依照前面提到,一个琐细的检测SQL射入攻击的正则表达式要留意SQL特殊的meta-characters譬如单引号(’)双重扩则号(--),为了查出这些字符和他们hex等值数,以下正则表达式适用:2.1检测SQLmeta-characters的正则表达式/(%27)|(’)|(--)|(%23)|(#)/ix解释:我们首先检查单引号等值的hex,单引号本身或者双重扩折号。 这些是MSSQLServer或Oracle的字符,表示后边的为评论,随后的都将被忽略。 另外,如果你使用MySQL,你需要留意’#’和它等值的hex的出现。 注意我们不需要检查双重破折号等值的hex,因为这不是HTMLmeta- character,浏览器不会进行编码。 并且,如果攻击者设法手工修改双重破折号为它的hex值%2D(使用代理像 Achilles[ref5]),SQL注入将失败。 加入上述正则表达式的新的Snort规则如下:alerttcp$EXTERNAL_NETany-$HTTP_SERVERS$HTTP_PORTS(msg:SQLInjection-Paranoid;flow:to_server,established;;pcre:/(%27)|(’)|(--)|(%23)|(#)/i;classtype:Web-application-attack;sid:9099;rev:5;)在本篇讨论中,uricontent关键字的值为,因为在我们的测试环境里,CGI程序是用Perl写的。 uricontent关键字的值取决于您的特殊应用,这个值也许是,或,或,等。 从这点考虑,我们不显示对应的Snort规则,但是我们会给出创造这些规则的正则表达式。 通过这些正则表达式你可以很简单的创造很多的Snort规则.在前面的正则表达式里,我们检测双重破折号是因为:即便没有单引号的存在那里也可能是SQL射入点[ref6]。 例如,SQL查询条目只包含数值,如下:selectvalue1,value2,num_value3fromdatabasewherenum_value3=some_user_supplied_number这种情况,攻击者可以执行额外的SQL查询,示范提交如下输入:3;insertvaluesintosome_other_table最后,pcre的修饰符’i’和’x’是用于分别匹配大小写和忽略空白处的。 上面的规则也可以另外扩展来检查分号的存在。 然而,分号很可以是正常HTTP应答的一部分。 为了减少这种错误,也是为了任何正常的单引号和双重扩折号的出现,上面的规则应该被修改成先检测=号的存。 用户输入会响应一个GET或POST请求,一般输入提交如下:username=some_user_supplied_valuepassword=some_user_supplied_value因此,SQL注入尝试将导致用户的输入出现在a=号或它等效的hex值之后。 2.2修正检测SQLmeta-characters的正则表达式/((%3D)|(=))[^n]*((%27)|(’)|(--)|(%3B)|(:))/i

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: SQL注入

“粗浅剖析-SQL-注入破绽检测与进攻战略 (粗浅分析的意思)” 的相关文章

打造安保的Python运行程序-从零到SQL注入防护巨匠 (安保举措)

打造安保的Python运行程序-从零到SQL注入防护巨匠 (安保举措)

当触及到与数据库交互时,防止SQL注入攻打是十分关键的。SQL注入是一种经常出现的网络安保破绽,攻打者经过在用户输入的数据中注入恶意的SQL代码,从而可以口头未经授权的数据库操作。为了包全运行程...