WebApplicationSecurityTraining内容提要•远程攻击/渗透基础•WebApplicationSecurityIssues•Web1.0和WEB2.0应用程序攻击手段对比•总结•Web应用安全展望•相关资源北京邮电大学信息安全中心黄玮漏洞利用是攻击/渗透的核心•业务逻辑缺陷•程序实现技术缺陷•Apache•IIS•Oracle/SQLServer•Squid•Tomcat/Resin•Windows•*nix•Router•Firewall/IDS基础平台北京邮电大学信息安全中心黄玮Web应用程序安全模型服务器端操作系统Web服务沙盒模型HTTP/HTTPS文件系统注册表网络内存服务器端支撑服务数据库服务目录服务Mail服务…浏览器插件沙盒模型PDFFlashQuickTime…HTTP/HTTPS北京邮电大学信息安全中心黄玮我们需要掌握什么•计算机网络知识、网络编程能力•工具论&方法论•自动化扫描工具的优势和不足o优势:通用性高、节省测试时间、保证测试的覆盖率o不足:针对性不强、误检率通常较高、容易触发安全设备(防火墙、IDS等)的报警•手工测试的优势和不足o优势:针对性强、准确性高、欺骗性更强o不足:检测效率低、费时费力北京邮电大学信息安全中心黄玮需要掌握的基础知识•掌握至少一门网络编程语言oC/C++/Java/C#/Perl/Python…•熟悉Web应用的通信基础——HTTP协议•熟悉至少一种Web应用的开发技术,了解多种Web应用的开发技术oMS系:ASP/.NEToSun系:JavaWeb开发技术JSPJ2EE:Struts、WebWork、Spring、EJB。。。oLAMP:Linux+Apache+MySQL+PHPoRoR:RubyonRailsoCGI、Perl、Python。。。北京邮电大学信息安全中心黄玮进一步需要掌握的知识•掌握Web应用程序漏洞的分类、成因及漏洞挖掘和利用方法•熟练使用一种或多种Web应用漏洞测试工具,掌握Web应用漏洞测试的方法•熟悉至少一种数据库oSQLServer/MySQL/Oracle/Access/DB2/PostgreSQLo默认用户名口令、存储过程、常见配置缺陷•其他常见的网络服务的漏洞挖掘和利用方法oFTPoMailoP2Po流媒体服务/视频点播、直播服务o。。。北京邮电大学信息安全中心黄玮经过学习应该达到的基本目标•熟练使用各种搜索引擎o不仅仅是Google•了解寻找已公开漏洞信息的方法,对常见漏洞做到了然于胸o微软安全公告/CVE公告/各大软件厂商的bugtraq。。。•可以根据漏洞检测和利用的需要快速编写出合格的网络程序•Hack/ExploitToolsCollectiono突破服务器端沙盒模型的攻击是最有效和最直接的攻击o其他攻击方法一般需要比较高的构造技巧和设计艺术,很多时候攻击的成功都是结合社会工程学,利用被攻击者安全意识的薄弱性北京邮电大学信息安全中心黄玮建议•重点突出,全面开花oWeb应用漏洞仅仅是我们关注的一个主要方面,但不能局限在Web应用的漏洞o系统级漏洞和网络基础设施的漏洞很少,但一旦被成功利用,其效果是最好的!o所以大家需要储备大量的漏洞利用脚本和工具,在遇到不同的网络环境、操作系统、开放的服务时能够做到有备无患•在攻与守的过程中提高实战的能力o最好的学习攻击和渗透的方法是自己搭建实验环境,进行模拟攻击o所以建议大家可以以小组为单位,每2组共同完成一次攻防实验。2组分别扮演红军和蓝军(红军扮演攻击者,蓝军负责环境搭建和防守)•严格遵循不作恶原则o禁止在互联网环境下进行攻防实验北京邮电大学信息安全中心黄玮参考书目•《信息安全实验指导》•《网络安全评估》•《黑客大曝光系列》•其他网络攻防类书籍•中文书主要用于掌握理论基础,更多的知识需要在实践中学习,要善于在实验中总结和提高北京邮电大学信息安全中心黄玮接下来。。。•WebApplicationSecurityISSUESoWeb应用程序漏洞成因分类o漏洞示例和描述o一些漏洞利用的演示o漏洞的防御和解决方法•Web1.0和WEB2.0应用程序攻击手段对比北京邮电大学信息安全中心黄玮北京邮电大学信息安全中心黄玮输入Web应用程序进入后台平台应用程序服务器操作系统网络输出Web应用程序服务模型北京邮电大学信息安全中心黄玮输入Web应用程序进入后台平台应用程序服务器操作系统网络输出输入有关的安全问题北京邮电大学信息安全中心黄玮1.未验证的用户输入-示例•设计输入o../ViewServlet?url=•恶意输入o../ViewServlet?url==file:///etc/passwd•通过这个简单的应用程序可以间接实现文件枚举和后台程序扫描北京邮电大学信息安全中心黄玮1.未验证的用户输入-描述(1)•攻击者可以篡改HTTPrequest的任何一个部分ourlo请求字符串oHTTP头oCookieso表单域o隐藏域北京邮电大学信息安全中心黄玮1.未验证的用户输入-描述(2)•常见的输入篡改攻击包括:o强制浏览o命令注入o跨站点脚本攻击o缓冲区溢出攻击o格式化字符串攻击oSQL注入oCookie毒化o隐藏域控制•可能的原因o只在客户端进行输入验证o过滤时未进行规范化•导致其他的漏洞北京邮电大学信息安全中心黄玮1.未验证的用户输入-描述(3)北京邮电大学信息安全中心黄玮1.未验证的用户输入-解决方案•所有的用户输入需要在服务器端进行集中的统一验证o请求参数oCookiesoHTTP请求头•请求参数需要严格的验证其类型o数据类型(string,integer,real,etc…)o最小和最大长度o是否允许nullo参数是否是必需的o数字的取值范围o特定模式(正则表达式)•代码复查•不要“滥用”隐藏域o存储在Session中或从每次请求中获取参数值北京邮电大学信息安全中心黄玮2.缓冲区溢出•一般情况下,采用J2EE架构的Web应用程序不存在缓冲区溢出漏洞•描述o应用程序的缓冲区中存在过量的输入数据,导致恶意代码被执行oJava应用程序中不存在缓冲区溢出风险?OutOfMemoryError后台应用系统本地代码•解决措施o避免使用本地代码北京邮电大学信息安全中心黄玮输入Web应用程序进入后台平台应用程序服务器操作系统网络输出后台相关的安全问题北京邮电大学信息安全中心黄玮3.注入缺陷-示例•登录模块使用了如下的SQL查询语句oselect*fromuserswhereuser='+username+'andpassword='+hashedPassword+'•很容易被以下的用户输入破解登录功能ousername:任何存在的用户名'or'1'='1opassword:任何可以通过验证规则的密码•拼接后形成的SQL查询语句oselect*fromuserswhereuser='adminor'1'=1'andpassword='secret'北京邮电大学信息安全中心黄玮3.注入缺陷-描述•在任何存在解释器的地方都可能存在o脚本语言,例如Perl,Python和JavaScriptoShell脚本语言(执行系统应用程序)o通过系统调用访问操作系统o数据库系统:SQL注入o目录遍历(e.g.../../etc/passwd)•典型缺陷oRuntime.exec()o拼接字符串的SQLo文件输入和输出流操作北京邮电大学信息安全中心黄玮3.注入缺陷-解决方案•在任何时候避免直接使用外部的解释器,而使用编程语言提供的API库o避免使用Runtime.exec(),通过JavaMailAPI来发邮件•在将数据发送给后台程序时对数据进行编码oSQL语句中的单引号oLDAP语句中的逗号,括号等•更好的解决办法:使用JDBC驱动的PreparedStatements(以Java为例)•以受限制的系统权限运行Web应用程序•所有的外部调用的输出、返回代码值和错误代码值都需要检查北京邮电大学信息安全中心黄玮输入Web应用程序进入后台平台应用程序服务器操作系统网络输出输出相关的安全问题北京邮电大学信息安全中心黄玮4.跨站点脚本(XSS)-示例•Web应用程序直接将请求中的参数“回显”在用户的浏览器中•URL中请求参数的回显o正常的URL:=simpleo被注入JS代码后的URL:=simplename=kindscriptalert(test)/scriptinputtype=hidden北京邮电大学信息安全中心黄玮4.著名公司的XSS漏洞•IBMoXSS演示代码(2007年6月首次发现,目前IBM已修复该漏洞)=swg21233077&loc=body%20onload=alert('IbmIsNotPerfect');location.replace(');%20x=en_USo截图北京邮电大学信息安全中心黄玮4.著名公司的XSS漏洞•TOMoXSS演示代码=%3Cscript%3Eeval(String.fromCharCode(97,108,101,114,116,40,34,84,79,77,25628,32034,28431,27934,65292,50,31186,21518,33258,21160,36339,36716,21040,89,97,104,111,111,25628,32034,34,41,59,115,101,116,84,105,109,101,111,117,116,40,102,117,110,99,116,105,111,110,40,41,123,108,111,99,97,116,105,111,110,46,114,101,112,108,97,99,101,40,34,104,116,116,112,58,47,47,119,119,119,46,121,97,104,111,111,46,99,110,34,41,125,41))%3C/script%3E&mimetype=wmao截图北京邮电大学信息安全中心黄玮4.著名公司的XSS漏洞•SogouoXSS演示代码=%3CIFRAME+WIDTH%3D400+HEIGHT%3D400+SRC%3D%22HTTP%3A%2F%2F=10&pid=58009401&duppid=1o截图北京邮电大学信息安全中心黄玮4.跨站点脚本(XSS)-描述•攻击者将恶意脚本代码发送到终端用户的浏览器oWeb应用程序的输出直接回显到用户的浏览器而未经过检查o浏览器信任Web应用程序的代码•恶意脚本可以o访问cookie,会话令牌,或其他通过用户浏览器获得的敏感信息o重写HTML页面•2种基本策略o持久化的(可自动触发),例如恶意代码存储到数据库中,通过论坛发帖,访客留言等o反射型(诱骗点击型),例如错误消息,搜索引擎•危害示例o会话劫持o钓鱼攻击oDDoS攻击o远程信息获取,如端口扫描、用户浏览历史信息枚举北京邮电大学信息安全中心黄玮4.跨站点脚本(XSS)-解决方案•输入校验•编码所有的展现层输出(HTMLEncode或JSTL的c:out、Struts的bean:write标签等)•对输入进行长度限制或截短•如果你的应用程序需要显示用户提交HTML内容,你应该过滤scr