2、Web应用程序技术.docx
《2、Web应用程序技术.docx》由会员分享,可在线阅读,更多相关《2、Web应用程序技术.docx(19页珍藏版)》请在课桌文档上搜索。
1、第3章Web应用程序技术Web应用程序运用各种不同的技术实现其功能。本章简要介绍渗透侧试员在攻击Wob应用程序时可能遇到的关键技术。我们将分析协议、服务器和客户端常用的技术以及用于在各种情形下呈现数据的编码方案。这些技术大都简洁易懂,驾驭其相关特性对于向Web应用程序发动有效攻击极其重要。3.1(HyperTextTransferPrOIOCol,超文本传输协议)是访问万维网运用的核心通信协议,也是今日全部Web应用程序运用的通信协议。最初,只是一个为获得基于文本的静态资源而开发的简洁协议,后来人们以各种形式扩展和利用它.使其能够支持如今常见的困难分布式应用程序。运用一种荃于消息的模型:客户端
2、送出一条恳求消息,而后由服务器返回一条响应消息。该协议墓本上不须要连接,虽然运用有状态的TCP协议作为它的传输机制,但每次恳求与响应交换都自动完成,并且可能运用不同的TCP连接。3.1.1 恳求全部消息(恳求与响应)中都包含一个或几个单行显示的消息头(header),然后是一个强制空白行,最终是消息主体(可选)。以下是一个典型的恳求:GETauth488YourDetails.ashx?uid=129/1.1Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Referer:s:/Accept-1.angu
3、age:zh-cn,zh;q=0.5User-Agent:Mozilla/4.0(compatible;MSIE8.0;WindowsNT6.1;WDW64;Trident/4.0;S1.CC2NETC1.R2.0.50727;.NETC1.R3.5.30729;.NETC1.R3. 0.30729;.NET4.0C;InfoPath.3;.NET4.0E;FDM;。NETC1.R1.1.4322)Accept-Encoding:gzip,deflateHost:Connection:Keep-AliveCookie:SessionId=5870C71F3FD4968935CDB6682E54
4、5476每个恳求的第一行都由3个以空格间隔的项目组成。GET:一个说明方法的动词。最常用的方法为GET,它的主要作用是从Web服务器获得一个资派。GET恳求并没有消息主体,因此在消息头后的空白行中没有其他数据。所恳求的UR1.,该UR1.通常由所恳求的资源名称,以及一个包含客户端向该资源提交的参数的可选查询字符串组成。在该UR1.中,查询字符串以?字符标识,上面的示例中有一个名为uid、值为129的参数。运用的版本。因特网上常用的版本为1.0和1.1,多数阅读器默认运用1.l版本。这两个版本的规范之间存在一些差异;然而,当攻击Web应用程序时,渗透测试员可能遇到的唯差异是1.1版本必需运用Ho
5、st恳求头。Accept:阅读器支持的MlME类型分别是text/html、application/xhtml+xmlapplication/xml和*/*,优先依次是它们从左到右的排列依次。详解:ACCePt表示阅读器支持的MIME类型;MlME的英文全称是MultipurposeInternetMailExtensions(多功能Internet邮件扩充服务),它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到阅读器。text/html,application/xhtml+xml,application/xml都是MIME类型,也可以称为媒体类型和内容类型,
6、斜杠前面的是lype(类型),斜杠后面的是SUbtyPe(子类型);type指定大的范围,subtype是type中范围更明确的类型,即大类中的小类。Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;text/html表示html文档;Application:用于传输应用程序数据或者二进制数据;application/xhtml+xml表示xhtml文档;application/xml表示xml文档。 Referer消息头用于表示发出恳求的原始UR1.(例如,因为用户单击页面上的一个链接)。请留意,在最初的规范中,这个消息头存在拼法错误,并且这个错误始终保留了下来
7、。 Accept-1.anguage阅读器支持的语言分别是中文和简体中文,优先支持简体中文。详解:Accept-1.anguage表示阅读器所支持的语言类型;Zh-Cn表示简体中文;Zh表示中文;q是权重系数,范围0=q=1.q值越大,恳求越倾向于获得其“;”之前的类型表示的内容,若没有指定q值,则默认为1,若被赋值为0,则用于提示服务器哪些是阅读器不接受的内容类型。 USer-Agent消息头供应与阅读器或其他生成恳求的客户端软件有关的信息。请留意,由于历史缘由,大多数阅读器中都包含MoZilIa前缀。这是因为最初占支配地位的NetSCaPe阅读器运用了USe1.Agent字符串,而其他阅读
8、器也希望让Web站点信任它们与这种标准兼容。与计算领域历史上的很多怪异现象一样,这种现象变得很普遍,即使当前版本的InternetExplorer也保留了这一,做法,示例的恳求即由InternetEXPlOrer提出。 HOSt消息头用于指定出现在被访问的完整UR1.中的主机名称。假如几个Web站点以相同的一台服务器为主机.就须要运用Host消息头.因为恳求第一行中的UR1.内通常并不包含主机名称。 Accept-Encoding阅读器支持的压缩编码是gzip和deflate COOkie消息头用于提交服务器向客户端发布的其他参数(请参阅本章后续内容了解更多详情)。 COnneetion表示长
9、久的客户端与服务连接。X_FORWARDED_FOR是用来识别通过代理或负载均衡方式连接到Wcb服务器的客户端最原始的IP地址的恳求头字段。(请看图1)CTF大赛(内测版)小提示找到pas.ord,而且需要从http:/v*w.badu.co逃入到第二关,需要把IP伪造为10.0.0.1!PasswordEnterpass进入籥二关urplntrowHolpfxcoXSCoCCerTIntrUObKopeater:Seoccer11JN100IC-eV-RccjcsCRawYParamHcaertJHexPOSTpentestsetpl.phpHTTP/171Host:ctfj11oor三o三
10、.comUser-Agent:Moz11laS.O(WindowsZT6.1;WOW6-4;rv三3-4.O)GQUkO/2。I。1Firfox3-4.0Accept:ttHtrrtapplcatfonxHtml-*-xmUapplication/xnril;c?-。9尸/-0.8Aecept-UariQ1.jaQe:NKYC.Nh:q=O.8#en-1.JS:q=O.-enjq=0.3Acuept-EZccocHcq:QNiQ,deflateRe*fc*rc*r:hittpzvwvw.bacd1.J.comX_FORWARDED_FOR:10.0.0.1UCCiCiq;IHPV卜SSnj=r
11、uuCicxzhjtJOpiHb9qWS6Gv7ConneetFon:keep-alveContent-Type:applcatfonx-wvv-form-urlncociclContent-UengtK:21password=111111111111响应以下是一个典型的响应:/1.1200OKDate:Tue,19Apr201109:23:32GMTServer:Microsoft-1IS6.OX-Powered-By:ASP.NETSet-Cookie:tracking=t18rk7joMx44S2Uu85nSWcX-AspCache-Control:no-cachePragma:no-c
12、acheExpires:Thu,OlJan1970OO:OO:OOGMTContent-Type:text/html;charset=utf-8Content-1.ength:1067Yourdetails每个响应的第一行由3个以空格间隔的项目组成。 运用的版本。 表示恳求结果的数字状态码。200是最常用的状态码.它表示胜利提交了恳求,正在返回所恳求的资源。 -一段文本形式的“缘由短语”,进一步说明响应状态。这个短语中可包含任何值,当前阅读器不将其用于任何目的。响应示例中的其他一些要点如下: SerVer消息头中包含一个旗标,指明所运用的Web服务器软件。有时还包括其他信息.如所安装的模块和服
13、务器操作系统。其中包含的信息可能并不精确。 Se1.COOkie消息头向阅读器发送另个COOkie.它将在随后向服务器发送的恳求中由Cookie消息头返回。 Pragma消息头指示阅读器不要将响应保存在缓存中。Expires消息头指出响应内容已经过期.因此不应保存在缓存中。当返回动态内容时常常会发送这些指令,以确保阅读器随时获得最新内容。几乎全部的响应在消息头后的空白行下面都包含消息主体,COntent-Type消息头示这个消息主体中包含一个HTM1.文档。Content-1.ength消息头规定消息主体的字节长度。方法当渗透测试员攻击Web应用程序时,几乎确定会遇到最常用的方法:GET和PO
14、ST0这些方法之间存在一些必需了解的重要差异,忽视这些差异可能会危及应用程序的平安。GET方法的作用在于获得资源。它可以用于UR1.查询字符串的形式向所恳求的资谏发送参数。这运用户可将一个包含动态资源的UR1.标注为书签,用户自己或其他用户随后可重利用该书签来获得等价的资源(作用与标注为书签的搜寻查询相像)。UR1.显示在屏幕上.并被记录在很多地方,如阅读器的历史记录和Web服务器的访问日志中。假如单击外部链接,还可以用RCferer消息头将它们传送到其他站点。因此,请勿运用查询字符申传送任何敏感信息。POST方法的主要作用是执行操作。运用这个方法可以在UR1.查询字符申与消息主体中发送恳求参
15、数。尽管仍旧可以将UR1.标注为书签,但书签中并不包含消息主体发送的任何参数。很多维护UR1.日志的位置及RCferer消息头也将这些参数解除在外。因为POST方法旨在执行操作,假如用户单击阅读器上的“后退”按钮,返回一个运用这种方法访问的页面,那么阅读器不会自动重新发送恳求,而是就即将发生的操作向用户发出带告.如图3-1所示。这样做可防止用户无意中多次执行同一个操作。因此.在执行某一操作时必需运用POST恳求。图3-1阅读器不会自动重新发送用户提出的P。ST恳求,因为这样做会导致多次执行某一操作除了GET和PoST方法以外.协议还支持很多其他因特别目的而建立的方法。须要了解的其他方法如下:H
16、EADe这个方法的功能与GET方法相像,不同之处在于服务器不会在其响应中返回消息主体。服务器返回的消息头应与对应GET恳求返回的消息头相同。因此,这种方法可用于检查某一资源在向其提交GET恳求前是否存在。TRACE.这种方法主要用于诊断。服务器应在响应主体中返回其收到的恳求消息的具体内容。这种方法可用于检测客户端与服务器之间是否存在任何操纵恳求的代理服务器。OPTIONSo这种方法要求服务器报告对某一特别资源有效的方法。服务器通常返回一个包含Allow消息头的响应,并在其中列出全部有效的方法。PUTo这个方法试图运用包含在恳求主体中的内容,向服务器上传指定的资源。假如激活这个方法,渗透测试员就
17、可以利用它来攻击应用程序。例如,通过上传随意一段脚本并在服务器上执行该脚原来攻击应用程序。还有很多其他与攻击Web应用程序没有干脆关系的方法。然而,假如激活某些危急的方法,Web服务器可能面临攻击风险。UR1.UR1.(UniformResource1.ocator,统一资源定位符)是标识WCb资源的唯一标识符.通过它即可获得其标识的资源。最常用的UR1.格式如下:protocol:/hostname:port/path/IfiIe?param=valucl这个结构中有几个部分是可选的。假如端口号与相关协议运用的默认值不同,则只包含端口号即可。用于生成前面的恳求的UR1.为:s:/除这种确定形
18、式外,还可以相对某一特别主机或主机上的一个特别路径指定UR1.,例如:auth488YourDetails.ashx?uid=129YourDetails.ashx?uid=129Web页面常常运用这些相对形式描述Web站点或应用程序中的导航。3.1.5消息头支持很多不同的消息头,其中一些专用于特别用途。一些消息头可用在恳求与响应中,而其他一些消息头只能特地用在某个特定的消息中。下面列出渗透测试员在攻击Web应用程序时可能遇到的消息头。1 .常用消息头ConneCtiOn。这个消息头用于告知通信的另一端.在完成传输后是关闭TCP连接,还是保持连接开放以接收其他消息。Content-Encodi
19、ngo这个消息头为消息主体中的内容指定编码形式(如gzip),一些应用程序运用它来压缩响应以加快传输速度。Content-1.ength0这个消息头用于规定消息主体的字节长度。(HEAD语法的响应例外.它在对应的GET恳求的响应中指出主体的长度。Content-Type.这个消息头用于规定消息主体的内容类型。例如,HTM1.文档的内容类型为text/html,Transfer-Encodingo这个消息头指定为便利其通过传输而对消息主体运用的任何编码。假如运用这个消息头.通常用它指定块编码。2 恳求消息头Accepto这个消息头用于告知服务器客户端情愿接受哪些内容,如图像类型、办公文档格式等。
20、 Accept-Encodingo这个消息头用于告知服务器.客户端情愿接受哪些内容编码。 Authorizationo这个消息头用于为一种内置身份验证向服务器提交证书。 Cookieo这个消息头用于向服务器提交它以前发布的COOkie. Hosto这个消息头用于指定出现在所恳求的完整UR1.中的主机名称。 If-Modified-Sinceo这个消息头用于说明阅读器最终一次收到所恳求的资源的时间。假如自那以后资源没有发生改变,服务器就会发出一个带状态码304的响应,指示客户端运用资源的缓存副本。 If-None-Matcho这个消息头用于指定一个实体标签。实体标签是一个说明消息主体内容的标识符
21、。当最终一次收到所恳求的资源时.阅读器提交服务器发布的实体标签。服务器可以运用实体标签确定阅读器是否运用资源的缓存副本。 Origino这个消息头用在跨域AjaXt求中,用于指示提出恳求的域。 Referero这个消息头用于指示提出当前恳求的原始UR1.。 User-Agento这个消息头供应与阅读器或生成恳求的其他客户端软件有关的信息。3,响应消息头 Access-Control-Allow-Origin.这个消息头用于指示可否通过跨域Ajax恳求获得资源。 Cache-Controlo这个消息头用于向阅读器传送缓存指令(如no-cache)。 ETago这个消息头用于指定一个实体标签。客户
22、端可在将来的恳求中提交这个标识符。获得和If-None-Match消息头中相同的资源,通知服务器阅读器当前缓存中保存的是哪个版本的资源。Expireso这个消息头用于向阅读器说明消息主体内容的有效时间。在这个时间之前,阅读器可以运用这个资源的缓存副本。 1.ocationo这个消息头用于在重定向响应(那些状态码以3开头的响应)中说明重定向的目标。 Pragmao这个消息头用于向阅读器传送缓存指令(如no-cache). Servero这个消息头供应所运用的Web服务器软件的相关信息。 Set-Cookieo这个消息头用于向阅读器发布COokie.阅读器会在随后的恳求中将其返回给服务器。 WWW
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Web 应用程序 技术
链接地址:https://www.desk33.com/p-1381458.html