信息安全培训-Web应用安全攻防实战

上传人:ji****72 文档编号:45903658 上传时间:2018-06-20 格式:PDF 页数:72 大小:2.31MB
返回 下载 相关 举报
信息安全培训-Web应用安全攻防实战_第1页
第1页 / 共72页
信息安全培训-Web应用安全攻防实战_第2页
第2页 / 共72页
信息安全培训-Web应用安全攻防实战_第3页
第3页 / 共72页
信息安全培训-Web应用安全攻防实战_第4页
第4页 / 共72页
信息安全培训-Web应用安全攻防实战_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《信息安全培训-Web应用安全攻防实战》由会员分享,可在线阅读,更多相关《信息安全培训-Web应用安全攻防实战(72页珍藏版)》请在金锄头文库上搜索。

1、11 Nokia Siemens NetworksPresentation / Author / DateCompany Confidential高阶黑客攻防高阶黑客攻防 Web应用安全攻防实战西门子中国研究院应用安全攻防实战西门子中国研究院目录目录Web对象直接引用Web对象直接引用二二三三四四恶意代码执行恶意代码执行一一背景背景注入攻击注入攻击五五跨站脚本攻击跨站脚本攻击六六Google HackGoogle HackOWASP漏洞攻防OWASP漏洞攻防七七Web应用逐渐成为企业安全边界之一Web应用逐渐成为企业安全边界之一防火墙加固OSWeb服务器应用服务器防火墙数据库历史遗留系统Web

2、 Services文件目录人力系统计费系统定制的应用程序应用层应用层攻击仅仅使用网络层的防护手段 (防火墙, SSL, IDS, 加固) 无法阻止或检测到应用层攻击仅仅使用网络层的防护手段 (防火墙, SSL, IDS, 加固) 无法阻止或检测到应用层攻击网络层应用层应用层作为安全边界的一部分,或许有巨 大的漏洞应用层作为安全边界的一部分,或许有巨 大的漏洞2而而Web应用的安全形势不容乐观应用的安全形势不容乐观?设计者开发者关注系统功能,忽略安全; ?定制开发系统的开发成本高,未能经过严格的安全测试; ?复杂应用系统代码量大; ?历史遗留系统代码修改困难; ?多个Web系统共同运行于同一台服

3、务器上; ?开发人员未经过安全编码培训; ?客户 满意 界面友好 操作方便处理 性能实现 所有功能架构合理 代码修改方便运行 稳定没有 bug不同模块 低耦合安全? 留给防火墙和 Web服务器去完 成安全? 留给防火墙和 Web服务器去完 成开发进度与 成本结论:Web应用 = 企业安全的阿基里斯之踵结论:Web应用 = 企业安全的阿基里斯之踵“75% of attacks now take place at the application layer”Gartner, 2006“4,375 vulnerabilities in the first 9 months of 2006. Web

4、flaws are the 3 most common.” Mitre Corp, 09/2006“Customization of off-the-shelf software is the weakest link in application security”. Gartner, 09/2005“By 2009, 80% of enterprises will fall victim to an application attack”. Gartner, 2007Web攻击场景Web攻击场景攻击动机攻击动机攻击动机攻击动机攻击方法攻击方法攻击方法攻击方法攻击工具攻击工具攻击工具攻击工具

5、系统漏洞系统漏洞系统漏洞系统漏洞防范措施防范措施防范措施防范措施攻击面(attack surface)Web服务器黑客3Web攻击动机攻击动机常见Web攻击动机常见Web攻击动机? 恶作剧; ? 关闭Web站点,拒绝正常服务; ? 篡改Web网页,损害企业名誉; ? 免费浏览收费内容; ? 盗窃用户隐私信息,例如Email; ? 以用户身份登录执行非法操作,从 而获取暴利; ? 以此为跳板攻击企业内网其他系 统; ? 网页挂木马,攻击访问网页的特定 用户群; ? 仿冒系统发布方,诱骗用户执行危 险操作,例如用木马替换正常下载 文件,要求用户汇款等; ? 常用的挂马常用的挂马exploit?MS

6、07-017 MS Windows Animated Cursor (.ANI) Remote Exploit ?MS07-019 ?MS07-004 VML Remote Code Execution ?MS06-073 ?MS06-071 XML Core Services Remote Code Execution ?MS06-068 ?MS06-067 ?MS06-057 WebViewFolderIcod ActiveX ?MS06-055 ?MS06-014 MDAC Remote Code Execution ?MS06-013 ?MS06-005 ?MS06-004 ?MS06

7、-001Web攻击方法攻击方法常见Web攻击方法常见Web攻击方法? Google hack ? 网页爬行 ? 暴力猜解 ? Web漏洞扫描 ? 错误信息利用 ? 根据服务器版本寻找现有的攻击代码 ? 利用服务器配置漏洞 ? 文件上传下载 ? 构造恶意输入(SQL注入攻击、命令注入 攻击、跨站脚本攻击) ? HTTP协议攻击 ? 拒绝服务攻击 ? 其他攻击点利用(Web Services, Flash, Ajax, ActiveX, JavaApplet) ? 业务逻辑测试 ? ? 收集系统相关的通用信息? 将系统所有能访问页面,所有的资源,路径展现出来? URL、口令、数据库字段、文件名都可

8、以暴力猜解,注意利用工具;? 利用Web漏洞扫描器,可以尽快发现一些明显的问题? 错误可能泄露服务器型号版本、数据库型号、路径、代码;? 搜索Google,CVE, BugTraq等漏洞库是否有相关的漏洞? 服务器后台管理页面,路径是否可以列表等? 是否可以上传恶意代码?是否可以任意下载系统文件?? 检查所有可以输入的地方:URL、参数、Post、Cookie、Referer、 Agent、系统是否进行了严格的校验?? HTTP协议是文本协议,可利用回车换行做边界干扰? 用户输入是否可以影响服务器的执行?? 需要特殊工具才能利用这些攻击点? 复杂的业务逻辑中是否隐藏漏洞?Web攻击工具:攻击工

9、具:WebScarab特色: HTTP协议完全可见(可以完全操作所有的攻击点) 支持HTTPS (包括客户端证书) 全程数据与状态记录,可随时回顾http:/www.owasp.orgOWASP=Open Web Application Security Project,OWASP是最权威的Web应用安全开 源合作组织,其网站上有大量的Web应用安全工具与资料。Nokia是其成员之一WebScarab是OWASP组织推出的开源工具,可应用于一切基于 HTTP协议系统的调试与攻击;4访问资源名称 GET与POST参数Referer与User Agent HTTP 方法 CookieAjax We

10、b ServiceFlash客户端 Java AppletWeb攻击面:不仅仅是浏览器中可见的内容攻击面:不仅仅是浏览器中可见的内容POST /thepage.jsp?var1=page1.html HTTP/1.1Accept: */*Referer: http:/ en-us,de;q=0.5Accept-Encoding: gzip, deflateContent-Type: application/x-www-url-encodedContent-Lenght: 59User-Agent: Mozilla/4.0Host: Connection: Keep-AliveCookie: J

11、SESSIONID=0000dITLGLqhz1dKkPEtpoYqbN2uid=fred这两句sql都符合 string,int,string的模式999是不可能符合的条件, 这样union的结果就只剩第 二句sql查询的内容25打开培训示范论坛,不用登录,直接查看用户属性SQL Injection:Case学员练习学员练习 20Min一个简单的测试显示这里 可能存在注入漏洞。从错 误看出是MS SQL Server。从链接的形式id=?来看应 该可能是数字型。因此 报错是必然的。从报错来看,程序员把 替换成了SQL Injection:Step 1学员练习学员练习 20Min用试验,发现出

12、来了一 部分数据,test用户名及 其email地址,这证明至 少有一条SQL正确运行。但是依然有SQL报错,很 可能是后台有两条SQL语 句都分别用到了id变量, 而两语句使用的环境不 同。SQL Injection:Step 2学员练习学员练习 20Min26实际情况是第一条SQL是 where id=? ,第二条 SQL是where (xx=xx) and (id=?)。因此要第二条不错,id只 能用2)-,但这样第一条 又会出错,难以两全。从错误行号来看,第一句 SQL位于84行,第二句 SQL位于207行。SQL Injection:Step 3学员练习学员练习 20Min对于Sel

13、ect查询,几 乎都可以用Union查询 来暴库。Union要求前后两句对 应的数据项数量相 同,类型一致,因此 需要首先检查第一句 SQL的数据项数量。方法是用order by n, 逐步增加n。SQL Injection:Step 4学员练习学员练习 20MinN=30正常,N=31错误!因此第一句SQL有30项。SQL Injection:Step 5学员练习学员练习 20Min27由于union还要求类型一致,30项要逐个猜测类型是不现实的,因此 用通配符null! 准备30个null。 提示这个错误的原因说明前一句sql中有image类型,而union缺省是 distinct的,要解

14、决这个问题,使用union all即可。SQL Injection:Step 6学员练习学员练习 20Min使用Union All后,终于又看到了test的信息。SQL Injection:Step 7学员练习学员练习 20Min调整union第一句的条件为“不可能满足”,这样显示出来的始终是第二 句,即使为nullSQL Injection:Step 8学员练习学员练习 20Min这两个位置显示的是30 项null中的某两个。因 此可以利用这里来回显 信息!28需要找到这两个数据位于30个null中的何处。首先试验把第二个null换 成字符型的null。错误提示不是告诉类型不匹配,而是说有语

15、法错误。从而再次确认: 系统用替换了。SQL Injection:Step 9学员练习学员练习 20Min要写出不带的sql语句并不困难。如果您对SQL语法熟悉的话,就知 道有一个char函数可供利用。SQL Injection:Step 10学员练习学员练习 20Min64是的ASCII码 数值,10进制。 成功回显SQL Injection:Step 11学员练习学员练习 20Min第二个null位置 回显于此处试出两个回显点的位置:第四个null位置 回显于此处29SQL Injection:Step 12学员练习学员练习 20Min把后面的sql替换成select null,passw

16、ord,null,.,null from users的形 式,希望能显示一个密码,但是失败了。系统不存在users表。 再猜测几个表发现依然失败。看来仅仅靠猜测是不行的。不同的数据库都有系统表,可以利用来枚举表结构不同的数据库都有系统表,可以利用来枚举表结构在不同的DBMS枚举表结构 MS SQL ?SELECT name FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = 表名) ?sp_columns tablename (这个存储过程可以列举表的字段名)MySQL ?show columns from tablenameOracle ?SELECT * FROM all_tab_columns WHERE table_name=表名数据库系统表数据库系统表OracleSYS.USER_

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号