怎么做软件安全性测试

appscan扫出来的漏洞,你要去人工确认是否是真的存在或是重不重要。。。多跟开发沟通吧。。appscan工具能扫出很多问题,但是不一定都是真正需要修改优化的,
你要自己分析看下。。。appscan扫出来最常见的就是Cross-site scritping跟sql  Injection了。。
另外,业务安全也很重要,楼主可以多关注。

我用过一段时间的appscan,但是主要是对web service进行测试,让它自己跑,可能会出现部分安全警告,这些是肯定需要提交报告的,然后在弹出的报告里面会有一些针对性网页提出建议,自己根据公司需要去提取,
其他的就没了,,


1.关注应用本身的安全,比如SQL注入、XSS、CSRF、上传webshell等,这些是可以用漏扫工具扫出来的,建议用最新的版本,多用几个工具对比下结果,Appscan,Awvs,netsparker,以便分析是否存在误报与漏报,
结果出来了后,要手动结合工具验证是否存在以及漏洞能造成什么后果,提交给开发,最后附上修改建议和方案,因为开发很多事不懂的。
2.关注框架、组件等安全,这个要实时关注安全动态,比如struts2、spring等框架 ,iis  nignx ,第三方引用等,了解所测是系统用了哪些框架  应用服务器  第三方引用 如果出问题  立刻自检

3.业务安全  包括越权  低价购买商品  修改任意用户密码  撞库  恶意注册刷单  弱口令等

1.        不登录系统,直接输入登录后的页面的URL是否可以访问;
2.        不登录系统,直接输入下载文件的URL是否可以下载文件;
如输入:http://url/download?name=file是否可以下载文件file
3.        退出登录后,后退按钮能否访问之前的页面;
4.        ID/密码验证方式中能否使用简单密码;
如密码标准为6位以上,字母和数字的组合,不包含ID,连接的字母或数字不能超过n位
5.        ID/密码验证方式中,同一个帐号在不同的机器上不同时登录
6.        ID/密码验证方式中,连续数次输入错误密码后该帐户是否被锁定
7.        重要信息(如密码,身份证,信用卡号等)在输入或者查询时是否明文显示;
在浏览器地址栏中输入命令javascript:alert(doucument.cookie)时是否有重要信息;
在html源码中能否看到重要信息;
8.        手动更改URL中的参数值能否访问没有权限访问的页面。
如普通用户对应的URL中的参数为l=e,高级用户对应的URL中的参数为l=s,以普通用户的身份登录系统后将URL中的参数e改为s来访问没有权限访问的页面
9.        URL里不可修改的参数是否可以被修改;
10.        上传与服务器端语言(jsp,asp,php)一样扩展名的文件或exe等可执行文件后,确认在服务器端是否可直接运行
11.        注册用户时是否可以以‘--’or1=1—等做为用户名
12.        传送给服务器的参数(如查询关键字,URL中的参数等)中包含特殊字符(‘.’and1=1--.‘and1=0--.’.‘or 1=0--)时是否可以正常处理
13.        执行新增操作时,在所有的输入框中输入脚本标签(<script>alert(“”)</script>)后能否保存;
14.        新增或修改重要信息(密码,身份证号码,信用卡号等)时是否有自动完成功能
(在form标签中使用autocomplete=0来关闭自动完成功能)
15.        在URL中输入下面的地址是否可以下载
http://url/download.jsp?file=c:\windows\system32\drivers\etc\hosts,http://url/download.jsp?file=/etc/password
16.        是否对session的有效期进行处理
17.        错误信息中是否含有SQL语句,SQL错误信息以及web服务器的绝对路径的等


最近抽了2天时间研究了下appscan工具,针对登录这个简单的操作流程进行了下扫描。根据这2天对扫描结果的阅读和对安全性测试与业内人士的交流,下面总结了几点自己个人的想法(仅限于个人想法),呵呵!

1.appscan扫描出的问题
  1.跨站点脚本攻击(http://g2.mail.10086ts.cn/serviceapi/CommonRequest.ashx )
针对http://g2.mail.10086ts.cn/serviceapi/CommonRequest.ashx?sid=>"'><script>alert(1292)</script>&r=>"'><script>alert(1292)</script>&mobile=>"'><script>alert(1292)</script>&reqtype=>"'><script>alert(1292)</script>
进行改动,可以直接跳转到指定的网站
http://g2.mail.10086ts.cn/serviceapi/CommonRequest.ashx?sid=>"'><script>alert(1292)</script>&r=>"'><script>alert(1292)</script>&mobile=>"'><script>alert(1292)</script>&reqtype=>"'><script>window.location="http://www.baidu.com";</script>

2.检测到敏感文件和隐藏目录
  例如:http://g2.mail.10086ts.cn/addr/apiserver/
  这样的目录很多,修改的建议是:将 Web 服务器配置成拒绝列出目录

3.web应用程序源代码泄露
  扫描出部分js文件中含有程序源代码,例如;CookieUtils.js

4.SQL 盲注
  登录时,能扫描出用户的用户名和密码!但我查看了例如QQ,网易的邮箱登录后,利用抓包工具都能抓出“密码”出来!


2.APPSCAN使用问题
1.解决的问题
先前在web中,登录邮箱不能扫描到具体的模块,提示不在会话环境中。可以通过加域然后进行手动搜索来解决。例如在域中加入:g0.mail.10086ts.cn.
wap可以用开发提供的链接地址,然后手动搜索来扫描具体模块的URL

2.未解决的问题
扫描中,自动提示和推荐的记录两种扫描方式依然会报不在会话环境中。

3.困难
网上相关的appscan资料太少。做相关工作的人也不多。遇到问题没人咨询,感觉闭门造车。


3.  对安全性测试的认识:
1.安全性测试,其实应该在开发编程中就进行投入。例如在咱公司项目里程碑的基础上,加入安全性验证这环!做安全性,应该开发先具备安全编程的知识

2.appscan不足点:在开发编码完成后,才进行验证。已经错过了最佳修正时期

3.经过这次对appscan和安全性的研究,发现安全性测试是一个学习成本很高的东东!消耗时间相当长。首先你需要对编程知识有一定的了解,各门语言!然后对常规
漏洞攻击方式和攻击工具都具备一定的执行能力,例如:sql注入.跨站,XSS攻击。最主要的是对公司的代码有一定深度的了解,不然和开发交流的时候,不能使其信服。(不说比开发了解,但不能比开发差)。如果单只是用扫描工具进行扫描,自动生成报告,丢给开发,觉得安全性工作效果不大。

  4.扫描工具结果的理解!针对扫描出来的漏洞,单作为测试人员理解比较困难,需要经验的积累和知识的补给!appcan工具只是提供了一个安全改进的参考,重点还在于漏洞的修复

4.工作的改进
1.先前一直在做appscan的工具研究,忽视了安全性测试基础知识的巩固。
2.对公司各个模块的流程和代码,需要增强了解!不然对扫描结果的分析,仅停在表面程度上。
3.希望公司能提供一定的学习平台,一个人的学习毕竟局限性!效果太不明显。

ps:谁对安全性测试比较了解,请和我联系,想学习这块!


0x00 简介
  本文主要介绍APP漏洞挖掘中逻辑漏洞,包括任意用户密码重置,支付漏洞,任意用户未授权登录。
  0x01 任意用户密码重置正文
  首先,我们来看看任意用户密码重置。  
  方法一:密码找回的凭证太弱,为4位或6位纯数字,并且时效过长,导致可爆破从而重置用户密码。
  这里我们来看一个实例,目前厂商已经修复。
  file:///C:\Users\tongll\AppData\Local\Temp\ksohtml\wps1D80.tmp.jpg
  验证码为4位纯数字,我们使用burpsuite爆破。
  file:///C:\Users\tongll\AppData\Local\Temp\ksohtml\wps1D81.tmp.jpg
  可以看到成功爆破出了。4位数字0~9有9999种可能,我们线程设置10,五分钟之内就可以爆破出凭证。
  方法二:验证码传输在数据包中。
  这里共有两种可能,一种在返回包,一种在获取验证码的数据包中。我们来看两个实例。
  第一个:验证码在返回包中
  在输入好手机号点击下一步时,我们抓包,截取返回包。
  file:///C:\Users\tongll\AppData\Local\Temp\ksohtml\wps1D82.tmp.jpg
file:///C:\Users\tongll\AppData\Local\Temp\ksohtml\wps1D92.tmp.jpg
file:///C:\Users\tongll\AppData\Local\Temp\ksohtml\wps1D93.tmp.jpg
  第二个:验证码在获取验证码的数据包中
  file:///C:\Users\tongll\AppData\Local\Temp\ksohtml\wps1D94.tmp.jpg
  Checkcode后面的六位数字就为验证码了,这种情况我只见过一次。
  方法三:输入好凭证后,重置密码时替换手机号。
  看个实例:
  这款APP重置密码分为两步,第一步是输入手机号获取验证码并填入,正确后即跳转到下一步,然后就是输入新密码。我们在输入新密码后抓包,替换手机号放包即可重置。
  file:///C:\Users\tongll\AppData\Local\Temp\ksohtml\wps1D95.tmp.jpg
  方法四:修改返回包内容,把错误的改为正确的。
  具体来看一个实例:
  我在输入好手机号获取验证码后,随便输入一个数字。然后抓包
  file:///C:\Users\tongll\AppData\Local\Temp\ksohtml\wps1D96.tmp.jpg
  截取返回包 修改1为0
  file:///C:\Users\tongll\AppData\Local\Temp\ksohtml\wps1D97.tmp.jpg
  方法五:获取验证码时手机号为明文,修改为自己的从而达到欺骗验证。
  这种方法由于我在挖掘APP漏洞中暂时没有遇到,所以无法找到APP实例,但是有一个WEB实例,这里也贴上来,思路方法都是一样的。WEB实例作者:离心
  file:///C:\Users\tongll\AppData\Local\Temp\ksohtml\wps1DA8.tmp.jpg
  改为自己的,即可收到验证码。
  file:///C:\Users\tongll\AppData\Local\Temp\ksohtml\wps1DA9.tmp.png
  0x02 支付漏洞正文
  方法一:修改金额
  还是来看一个实例,确认支付时候抓包,截取返回包。
  file:///C:\Users\tongll\AppData\Local\Temp\ksohtml\wps1DAA.tmp.jpg
  file:///C:\Users\tongll\AppData\Local\Temp\ksohtml\wps1DBA.tmp.jpg
  嘿嘿,放包即可成功一毛钱买飞机杯^_^
  方法二:修改金额为负数。
  此方法我目前没有遇到过,所以不配实例,操作起来也是一样的。
  0x03 任意用户未授权登录
  方法一:登录时抓包,修改uid
    file:///C:\Users\tongll\AppData\Local\Temp\ksohtml\wps1DBB.tmp.jpg
  0x04 总结
  以上漏洞修复方法:找回密码凭证够复杂并且不可猜测,同时注意以上逻辑问题,不可存在越权,或者重要的凭证在不该出现的地方出现。

了解更多测试知识访问如下链接:

软件测试初中高全栈精品系列课程icon-default.png?t=N7T8https://edu.csdn.net/course/detail/39095

https://edu.csdn.net/course/detail/22948

https://edu.csdn.net/lecturer/3215

https://edu.csdn.net/course/detail/30898

https://edu.csdn.net/course/detail/25768

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

传说三哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值