猫宁!!!
参考链接:
随书答案。
1. 当探查 SQL 注入漏洞时,如果请求以下 URL:
https://wahh-app.com/list.aspx?artist=foo’+having+1=1--将收到如下错误消息:Server: Msg 170, Level 15, State 1, Line 1Line 1: Incorrect syntax near ‘having1’.从中可以得出什么结论?应用程序中包含任何可被利用的条件吗? 这说明应用程序将输入直接插入动态构建的查询中。但是,如错误消息中的表达式 having1 所示,它似乎删除了输入中出现的任何空白符。当然可以对这种条件加以利用。可以使用 SQL 注释而不是空白符来分配查询中的语法项。例如:https://wahh-app.com/list.aspx?artist=foo'having1=1--这将返回不同的错误消息:Server: Msg 8118, Level 16, State 1, Line 1Column 'users.ID' is invalid in the select list because it is not containedin an aggregate function and there is no GROUP BY clause.这证实可以对上述条件加以利用,并完成了枚举所执行的查询的结构的第一个步骤。 2. 当对各种参数进行模糊测试时,应用程序返回以下错误消息:Warning: mysql_connect() [function.mysql-connect]: Access denied foruser ‘premiumdde’@’localhost’ (using password: YES) in/home/doau/public_html/premiumdde/directory on line 15Warning: mysql_select_db() [function.mysql-select-db]: Access deniedfor user ‘nobody’@’localhost’ (using password: NO) in/home/doau/public_html/premiumdde/directory on line 16Warning: mysql_select_db() [function.mysql-select-db]: A link tothe server could not be established in/home/doau/public_html/premiumdde/directory on line 16Warning: mysql_query() [function.mysql-query]: Access denied foruser ‘nobody’@’localhost’ (using password: NO) in/home/doau/public_html/premiumdde/directory on line 448从中可以获得哪些有用的信息? 该错误消息提供了应用程序用于访问数据库的用户名、连接模式、应用程序 Web内容的绝对文件路径,以及生成错误的脚本的行号。孤立来看,上述每一项信息似乎都无关紧要。但是,如果结合其他漏洞,渗透测试员就可以利用这些信息设计出针对应用程序的可怕攻击。 3. 在解析应用程序的过程中,在服务器上发现了一个激活了目录列表的隐藏目录,其中似乎保存着大量以前用过的脚本。请求其中一个脚本返回以下错误消息:CGIWrap Error: Execution of this script not permittedExecution of (contact.pl) is not permitted for the following reason:Script is not executable. Issue ‘chmod 755 filename’Local Information and Documentation:CGIWrap Docs: http://wahh-app.com/cgiwrap-docs/Contact EMail: helpdesk@wahh-app.comServer Data:Server Administrator/Contact: helpdesk@wahh-app.comServer Name: wahh-app.comServer Port: 80Server Protocol: HTTP/1.1Request Data:User Agent/Browser: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT5.1; .NET CLR 2.0.50727; FDM; InfoPath.1; .NET CLR 1.1.4322)Request Method: GETRemote Address: 192.168.201.19Remote Port: 57961Referring Page: http://wahh-app.com/cgi-bin/cgiwrap/fodd是什么原因造成了这个错误?可以立即发现哪些常见的 Web 应用程序漏洞? 这是由 cgiwrap 创建的系统生成的错误消息。它表示因为没有适当的文件权限,所请求的脚本无法在服务器上执行。因此,这个脚本可能没有多少用处。错误消息中包含了一些可能有用的信息,包括一个电子邮件地址。但是,更重要的是,其中包含了从客户端请求中复制的各种详细信息。因此,应探查服务器如何处理相关请求消息头中的专门设计的输入,以了解错误消息是否易于受到 XSS攻击。请注意,用户可能会受到诱惑,从而通过 Flash 对象提出包含任意请求消息头的请求。 4. 在探查一个请求参数的功能并试图确定它在应用程序中的作用时,如果请求以下 URL:https://wahh-app.com/agents/checkcfg.php?name=admin&id=13&log=1应用程序将返回以下错误消息:Warning: mysql_connect() [function.mysql-connect]: Can’t connect toMySQL server on ‘admin’ (10013) in/var/local/www/include/dbconfig.php on line 23这条错误消息是由什么原因造成的?为此应探查什么漏洞? 造成错误消息的原因是因为在 name 参数中提交了 admin 值。错误消息指出应用程序尝试(并且无法)连接到名为 admin 的主机上的数据库。似乎应用程序允许渗透测试员控制将用于执行请求的数据库。应尝试提交所控制的服务器的 IP 地址或主机名,看应用程序是否会连接到服务器。还应尝试猜测内部网络中的一系列 IP 地址,看是否可以查找到可以从应用程序服务器访问的其他数据库。鉴于所提供的主机名已被复制到错误消息中,因此还应调查应用程序是否易于受到 XSS 攻击。与应用程序中的主要功能相比,应用程序通常并不对错误消息等次要内容实施严格的输入确认和访问控制。 5. 当对一个请求进行模糊测试,以探查各种漏洞时,测试员轮流在每个请求参数中提交了一个单引号。其中一个请求的响应包含了 HTTP 500 状态码,表示应用程序可能存在 SQL 注入漏洞。消息的全部内容如下:Microsoft VBScript runtime error ‘800a000d’Type mismatch: ‘ [string: “’”]’/scripts/confirmOrder.asp, line 715该应用程序是否易于受到攻击? 这条错误消息由一个脚本生成,该脚本正尝试将基于字符串的输入分配给一个数字参数。似乎只要在此参数中提交的数据并非数值,就会触发这个错误。没有任何迹象表明输入导致了数据库错误,或者由数据库处理。几乎可以肯定此参数不易于受到 SQL 注入攻击。