




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上系统安全性测试1.1Web程序安全测试Web程序安全测试中的SQL注入式攻击测试和拒绝服务攻击的防范。1.1.1SQL注入式攻击及测试1什么是SQL注入式攻击所谓SQL注入式攻击,就是指攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串中,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。常见的SQL注入式攻击的过程如下。(1)某个ASP.NET Web应用有一个登录页面,这个登录页面控制着用户是否有权访问应用,它要求用户输入一个名称和密码。
2、(2)“登录”页面中输入的内容将直接用来构造动态的SQL命令,或者直接用作存储过程的参数。下面是ASP.NET应用构造查询的一个例子。System.Text.StringBuilder query = new System.Text.StringBuilder("SELECT * from Users WHERE login = '").Append(txtLogin.Text).Append("' AND password='").Append(txtPassword.Text).Append("'"
3、);(3)攻击者在用户名和密码输入框中输入"' or '1'='1"之类的内容。(4)将用户输入内容提交给服务器之后,服务器运行上面的 ASP.NET 代码构造出查询用户的SQL命令,但由于攻击者输入的内容非常特殊,所以最后得到的SQL命令变成 SELECT * from Users WHERE login='' or '1'='1' AND password='' or '1'='1'。(5)服务器执行查询或存储过程
4、,将用户输入的身份信息和服务器中保存的身份信息进行对比。(6)由于SQL命令实际上已被注入式攻击修改,已经不能真正验证用户身份,所以系统会错误地授权给攻击者。如果攻击者知道应用会将表单中输入的内容直接用于验证身份查询,他就会尝试输入某些特殊的 SQL 字符串篡改查询,改变其原来的功能,欺骗系统授予其访问权限。系统环境不同,攻击者可能造成的损害也不同,这主要由应用访问数据库的安全权限决定。如果用户账户具有管理员或其他比较高级的权限,攻击者就可能对数据库的表执行各种他想要做的操作,包括添加、删除或更新数据,甚至可能直接删除表。SQL注入式攻击的总体思路如下。(1)发现SQL的注
5、入位置。(2)判断后台的数据库类型。(3)确定XP_CMDSHELL可执行的情况。(4)发现Web虚拟目录。(5)上传ASP木马。(6)得到管理员权限。2SQL注入式攻击的种类1)没有正确过滤转义字符在用户的输入没有被转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个SQL语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵。比方说,上面那段代码就会演示这种漏洞。这种代码的设计目的是将一个特定用户从其用户表中取出,但是如果用户名被一个恶意的用户用一种特定的方式伪造,这个语句所执行的操作可能就不仅仅是代码的编写者所期望的那样了。如果这种代码被用于一个认证过程,那么这个例子就能
6、够强迫选择一个合法的用户名,因为'1'='1'永远是正确的。在一些SQL服务器上,如在SQL Server中,任何一个SQL命令都可以通过这种方法被注入,包括执行多个语句。例如:statement:="SELECT * FROM users WHERE name=' "+userName+" '"通过给userName赋如下的值,将会导致删除“users”表,同时又可以从“data”表中选择所有的数据(实际上就是透露了每一个用户的信息)。a'DROP TABLE users; SELECT * FR
7、OM data WHERE name LIKE '%这就将最终SQL语句变成下面这个样子。SELECT * FROM users WHERE name='a'DROP TABLE users; SELECT * FROM data WHERE name LIKE '%'2)非法类型处理如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个SQL语句中使用一个数字字段时,如果程序员没有检查用户输入的合法性(是否为数字型),就会发生这种攻击。例如:statement := "SELECT * FROM data
8、 WHERE id="+a_variable+":"从这个语句可以看出,作者希望a_variable是一个与“id”字段有关的数字。不过,如果终端用户选择一个字符串,就绕过了对转义字符的需求。例如,将a_variable设置为:1;DROP TABLE users,它会将“users”表从数据库中删除,SQL语句变成:SELECT * FROM DATA WHERE id=1;DROP TABLE users;3)数据库服务器中的漏洞有时,数据库服务器软件中也存在着漏洞,如mysql服务器中mysql_real_escape_ string()函数的漏洞。这种漏洞
9、允许一个攻击者根据错误的统一字符编码执行一次成功的SQL注入式攻击。4)盲目的SQL注入式攻击当一个Web应用程序易于遭受攻击而其结果攻击者却不见时,就会发生所谓的盲目的SQL注入式攻击。有漏洞的网页可能并不会显示数据,而是根据注入到合法语句中的逻辑语句的结果显示不同的内容。这种攻击相当耗时,因为必须为每一个获得的字节精心构造一个新的语句。但是一旦漏洞的位置和目标信息的位置被确立以后,一种称为Absinthe的工具就可以使这种攻击自动化。5)条件响应注意,有一种SQL注入迫使数据库在一个普通的应用程序屏幕上计算一个逻辑语句的值,如:SELECT booktitle FROM booklist
10、WHERE bookId='OOk14cd'AND 1=1;这会导致一个标准页面,而语句SELECT booktitle FROM booklist WHERE bookId ='OOk14cd' AND 1=2在页面易于受到SQL注入式攻击时,它有可能给出一个不同的结果。这样的一次注入将会证明盲目的SQL注入是可能的,它会使攻击者根据另外一个表中的某字段内容设计可以评判真伪的语句。6)条件性差错如果WHERE语句为真,这种类型的盲目SQL注入会迫使数据库评判一个引起错误的语句,从而导致一个 SQL 错误。例如,SELECT 1/0 FROM
11、 users WHERE username= 'Ralph'。显然,如果用户Ralph存在的话,被零除将导致错误。7)时间延误时间延误是一种盲目的SQL注入,根据所注入的逻辑,它可以导致SQL引擎执行一个长队列或者是一个时间延误语句。攻击者可以衡量页面加载的时间,从而决定所注入的语句是否为真。以上仅是对SQL攻击的粗略分类。从技术上讲,如今的SQL注入式攻击者们在如何找出有漏洞的网站方面更加聪明,也更加全面,现在已出现了一些新型的SQL攻击手段。黑客们可以使用各种工具来加速漏洞的利用过程。我们不妨看看the Asprox Trojan 这种木马,它主要是通过一个发布邮
12、件的僵尸网络来传播,其整个工作过程可以这样描述:首先,通过受到控制的主机发送的垃圾邮件将此木马安装到电脑上,然后,受到此木马感染的电脑会下载一段二进制代码,在其启动时,它会使用搜索引擎搜索用微软的ASP技术建立表单的、有漏洞的网站。搜索的结果就成为SQL注入攻击的靶子清单。接着,这个木马会向这些站点发动SQL注入式攻击,使有些网站受到控制、破坏。访问这些受到控制和破坏的网站的用户将会受到欺骗,从另外一个站点下载一段恶意的JavaScript代码。最后,这段代码将用户指引到第三个站点,这里有更多的恶意软件,如窃取口令的木马。3检查和防御SQL注入式攻击的方法1)使用参数化的过滤性语句要防御SQL
13、注入式攻击,用户的输入就绝对不能直接被嵌入到SQL语句中。恰恰相反,用户的输入必须进行过滤,或者使用参数化的语句。参数化的语句使用参数而不是将用户输入嵌入到语句中。在多数情况中,这样的SQL语句可以被修正。下面是一个使用Java和JDBC API的例子。PreparedStatement prep = conn.prepareStatement("SELECT * FROM USERS WHERE PASSWORD=?");prep.setString(1, pwd);总体上讲,有两种方法可以保证应用程序不易受到SQL注入式攻击:一是使用代码复查,二是强迫使用参数化语句。强
14、迫使用参数化语句意味着嵌入用户输入的 SQL语句在运行时将被拒绝。2)避免使用解释程序因为这正是黑客们借以执行非法命令的手段。3)避免出现一些详细的错误消息因为黑客们可以利用这些消息,要使用一种标准的输入确认机制来验证所有的输入数据的长度、类型、语句、企业规则等。4)使用专业的漏洞扫描工具攻击者们目前正在自动搜索攻击目标并实施攻击。其技术甚至可以轻易地被应用于其他 Web 架构中的漏洞。企业应当投资一些专业的漏洞扫描工具,如大名鼎鼎的Acunetix的Web漏洞扫描程序等。一个完善的漏洞扫描程序不同于网络扫描程序,它专门查找网站上的 SQL 注
15、入式漏洞。最新的漏洞扫描程序可以查找最新发现的漏洞。5)在Web应用程序开发过程的所有阶段实施代码的安全检查首先,要在部署Web应用之前实施安全测试,这种措施的意义比以前更大、更深远。其次,还应当在部署之后用漏洞扫描工具和站点监视工具对网站进行测试。1.1.2拒绝服务攻击及检测1什么是拒绝服务攻击拒绝服务,英文为“Denial of Service”,也就是我们常说的DoS。那么什么是拒绝服务攻击呢?大家可以这样理解,凡是能导致合法用户不能进行正常网络服务的行为都算是拒绝服务攻击。拒绝服务攻击的目的非常明确,就是用超出被攻击目标处理能力的海量数据包消耗可用系统、带宽资源,致使网络服务瘫痪,从而
16、阻止合法用户对正常网络资源的访问,达到攻击者不可告人的目的。常见的DoS攻击有针对硬件(网络设备、路由器、交换机)的DoS、针对网络层(IP协议)核心实现的DoS和针对应用层(浏览器、Web服务器、Mail)的DoS。2从DoS到DDoSDDoS(Distributed Denial of Service,分布式拒绝服务)的攻击方式虽然与DoS一样,也是向被攻击目标连续发送大量的IP包,以导致服务器不能为合法用户提供正常服务,但是它区别于DoS的绝妙之处在于动员了大量“无辜”的计算机向目标共同发起进攻,采用分布式拒绝服务攻击手段。DDoS与DoS的最大区别就是人多力量大。原来的DoS是一台机器
17、攻击目标,现在的DDoS是很多台机器利用它们的高带宽攻击目标,更容易将目标网站攻克。除此之外,DDoS攻击方式较为自动化,攻击者可以把他的程序安装到网络中的多台机器上,所采用的攻击工具使被攻击对象难以察觉,只要攻击者发出攻击命令,这些机器便发起进攻。DDoS的表现形式主要有两种:一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机;另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽或CPU被内核及应用程序占完而无法提供网络服务。3DoS/DDoS的防范对付DoS/DDoS是一个系统工程,想仅仅依
18、靠某种系统或产品防住DDoS是不现实的,可以肯定的是,完全杜绝DDoS是不可能的,但通过适当措施抵御90%的DDoS攻击是可以做到的。基于攻击和防御都有成本开销的缘故,若通过适当的办法增强抵御DDoS的能力,也就意味着加大了攻击者的攻击成本,那么绝大多数攻击者将无法继续下去而最终放弃,也就相当于抵御了 DDoS 攻击。下面为大家介绍一些抵御DDoS的方法和建议。1)采用高性能的网络设备首先要保证网络设备不能成为瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、口碑好的产品。再就是利用和网络提供商的特殊关系或协议,当大量攻击发生的时候请他们在网络接点处做
19、一下流量限制来对抗某些种类的DDoS攻击是非常有效的。2)尽量避免使用NAT无论是路由器还是硬件防护墙设备,要尽量避免采用网络地址转换NAT的使用,因为采用此技术会降低网络通信能力,因为NAT需要对地址来回转换,转换过程中需要对网络包进行校验和计算,因此浪费了很多CPU的时间,但有些时候必须使用NAT,那就没有别的办法了。3)充足的网络带宽保证网络带宽直接决定了能抗受攻击的能力,假如仅仅有 10MB 带宽的话,无论采取什么措施都很难对抗现在的攻击,当前至少要选择100MB共享带宽,最好的当然是挂在1000MB的主干上。但需要注意的是,主机上的网卡是1000MB并不意味着它的
20、网络带宽就是千兆字节的,若把它接到100MB的交换机上,它的实际带宽不会超过100MB,再就是接在100MB的带宽上也不等于就有了百兆字节的带宽,因为网络服务商很可能会在交换机上限制实际宽带为10MB,这点一定要搞清楚。4)升级主机服务器硬件在有网络带宽保证的前提下,请尽量提升硬件配置。5)把网站做成静态页面大量事实证明,把网站尽可能做成静态页面,不仅能大大提高抗攻击能力,而且还给黑客入侵带来不少麻烦,像新浪、搜狐、网易等很多门户网站主要都是静态页面。若确定需要动态脚本调用,则把它设置到另外一台单独主机上,免得遭受攻击时连累主服务器。此外,最好在需要调用数据库的脚本中拒绝使用代理访问,因为经验
21、表明使用代理访问网站的80%属于恶意行为。1.2SqlExec工具的使用本节将介绍SqlExec工具,以及如何使用SqlExec工具对SQL Server数据库服务器实施攻击。1SqlExec简介SqlExec是专门在SQL服务器上执行DOS命令的工具,体积很小,不用安装。SqlExec有GUI和命令行两种方式,能够通过Pipe或TCP/IP两种模式连接MS SQL Server服务器来执行DOS命令。2实验简介安装微软的 SQL Server数据库,在配置系统默认账号sa的密码时,不少用户选择空密码,或者密码设置得比较简单,这样就给系统留下了非常大的安全隐患。本例将给大家演示如何使
22、用SqlExec工具给微软SQL Server所在的被攻击主机增加一个系统管理员账号。SqlExec工具的主界面如图1.1所示。图1.1 SqlExec的主界面3攻击过程数据库账号 sa 的密码可以通过相应工具获得,如 X-scan。本例假设已获取了 sa 账号的密码为sa。(1)输入主机的IP地址:82。(2)输入用户名和密码:User为sa;Pass为sa。(3)单击Connect按钮。(4)在CMD中获得了被攻击主机的Shell,输入net start,按Enter键,可以检查被攻击主机的系统进程。(5)给被攻击系统
23、增加一个管理员用户(在CMD中)。 输入“net user”,按Enter键,可得到被攻击主机的系统用户信息。 输入“net user btest btestpass /add”,按Enter键,提示命令成功完成,增加普通用户,用户名为btest,密码为btestpass。 输入“net user”,按Enter键,可看到被攻击主机的系统用户中增加了btest用户。 输入“net user btest”,按Enter键,可看到此用户不属于administrators组。 输入“net localgroup administrators btest /add”,按Enter键,将此用户添加到管理
24、员组。 输入“net user btest”,按Enter键,可看到此用户属于administrators组,即btest用户已经是系统管理员了。如果在运行时返回SQL_ERROR,可能是因为目标主机未开启xp_cmdshell,可通过在目标主机的SQL Server中运行如下命令开启xp_cmdshell。exec sp_configure 'show advanced options', 1;reconfigure;exec sp_configure 'xp_cmdshell', 1;reconfigure;xp_cmdshell是一个系统存储过程,可以生成
25、Windows命令Shell并以字符串的形式传递以便执行,任何输出都作为文本的行返回。1.3使用Paros Proxy工具进行测试Paros Proxy是一个对Web应用程序的漏洞进行评估的代理程序,即一个基于Java的 Web 代理程序,可以评估 Web 应用程序的漏洞。它支持动态地编辑/查看HTTP/HTTPS,从而改变Cookies和表单字段等项目。它包括一个Web通信记录程序、Web圈套程序(spider)、hash计算器,还有一个可以测试常见的Web应用程序攻击(如SQL注入攻击和跨站脚本攻击)的扫描器。该工具检查漏洞形式包括:SQL注入、跨站
26、脚本攻击、目录遍历等。1安装Paros Proxy1)安装JRE首先确保已安装JRE Java Run Time Enviroment (JRE) 1.4 (or above) 。2)配置JRE环境变量首先,右击“我的电脑”选择“属性”“高级”“环境变量”进入环境变量设置对话框。设置PATH环境变量,在PATH环境变量中输入JRE的安装路径。 如JRE的安装目录为:c:JRE,则在PATH环境变量中加入c:JRE。新建CLASSPATH环境变量,在CLASSPATH环境变量中输入JRE下面的LIB路径。接下来安装和配置Paros Proxy应用程序。3)开始安装Paros Proxy如果下载的
27、是Windows版本,安装比较简单,直接运行安装程序并按照安装向导完成安装即可。 如果下载的是UNIX或其他平台的版本,则需要手动将程序解压到一个新的目录,并单击.JAR文件运行程序。 Paros Proxy的运行界面如图1.2所示。图1.2 Paros Proxy的主界面4)配置Paros ProxyParos Proxy需要两个端口,默认是8080和8443,其中8080是代理连接端口,8443是SSL端口,所以必须保证这两个端口未被其他程序占用。查看端口命令的方法为:打开DOS命令窗口,输入netstat查看目前使用的端口。如果安装完成,启动应用程序时,出现初始化错误,极可能就是因为这个端口被其他程序占用。5)配置浏览器属性打开浏览器(如IE),打开“工具”“选项”“连接”“局域网设置”,选中“代理服务器”,设置代理服务器地址为localhost,端口为8080。如果你的计算机运行于防火墙之下,只能通过公司的代理服务器访问网络,则还需要修改Paros Proxy的代理设置,具体的方法是:打开Paros Pro
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年物业客服专员考试题集及答案
- 2025年安全员招聘高频面试题解析
- 制造业产品质量协议
- 2025年土地整治项目管理员中级考试模拟题及高频题库
- 2025年能源监测工程师综合知识技能考察试卷及答案解析
- 2025年绿色建筑技术员职业资格考试试题及答案解析
- 2025年金融市场分析师资格考试试题及答案解析
- 2025年教师资格认证考试试题及答案解析
- 2025年电子商务运营经理面试问题及答案
- 2025年建筑幕墙工程师职业资格考试试题及答案解析
- 传媒入股协议合同
- 《有机化学》课程标准
- 《高效能电机》课件
- 2025年新华出版社有限责任公司招聘笔试参考题库含答案解析
- 汽车维护与保养 任务工单1 发动机油液与滤清器检查及更换
- 外科腹腔镜手术护理
- 非专用化妆包项目质量管理方案
- 工程类公路培训课件
- 2024年度中药的性能《四气五味》课件
- 太阳能光伏发电项目EPC工程设计施工范围及主要工程量
- 《汽车电工电子》课程标准
评论
0/150
提交评论