关闭

如何从0到1做一次完整的安全测试(中)

发表于:2023-6-16 09:20

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:白鹤    来源:知乎

  12、浏览器设置
  在扫描过程中AppScan自带浏览器如果出现兼容问题,可配置外部服务器,配置如图:
  13、进行手动探索
  自动探索会出现探索不完整的情况,用手动探索来完善,手动探素,也就是把页面的所有功能都手动点一遍,目的是抓取出所有的接口。
  14、添加手动探索出的接口
  15、进行测试,也就是把刚刚手动探索出的接口,进行测试
  16、待扫描完成后,导出报告
  注意参数的设置,实际项目中,参数设置如下图所示:
  17、二轮测试
  在之前scan测试文件的基础上,追加手动探索,扩大扫描范围,然后选择仅测试,就只会测试新扫描出来的接口,最后保存文件导出报告即可。
  三、分析测试结果复现漏洞
  报告会显示很多漏洞,等级分为高,中,低,但是有些漏洞是无法重现的,所以需要人工分析,手动复现。
  注意:不要轻易点击重新测试,有些问题重新测试之后就没了,这应该是工具问题,实际项目中遇到好多次了,可以先保存一份文件,再复制一份同样的文件出来重新测试。
  (一)常见的漏洞概述
  1、SQL注入
  ①定义 : SQL注入是一种比较常见的高等级漏洞,简单理解,SQL注入就是没有过滤从页面传至接口的字符,攻击者通过将恶意的SQL查询插入到输入参数中,在后台服务器上解析进行执行,最终导致数据库信息被篡改或泄露。
  ②风险分析 : SQL注入可能导致数据库中存储的用户隐私信息泄露,可通过操作数据库对特定网页进行篡改。修改数据库一些字段的值,嵌入木马链接,进行挂马攻击,甚至数据库的系统管理员帐户被篡改。
  ③修复方式 :
  A、程序代码里的所有查询语句,使用标准化的数据库查询语句API接口,设定语句的参数进行过滤一些非法的字符,防止用户输入恶意的字符传入到数据库中执行sql语句
  B、对用户提交的的参数安全过滤,像一些特殊的字符(,( )*.…….%#等等)进行字符转义操作,以及编码的安全转换
  2、跨站点请求伪造csrf
  ①定义 : csrf(Cross-site request forgery)就是跨站请求伪造,简单说,攻击者盗用了你的身份(借用你的token),以你的名义发送恶意请求,而你却不知情。
  恶意攻击者往Web页面里插入恶意的HTML代码,当用户浏览该页之时,嵌入其中Web里面的HTML代码会被执行,从而达到恶意目的。
  举个例子:攻击者写了一段删除某个财务系统数据的代码,放在任意一个广告页面的链接上,当其他用户浏览广告页面时,只要有用户例如Emily登录了财务系统,点击了该链接,就会在用户Emily无意识的情况下,以Emily的名义删除了财务系统的很多数据,达到恶意攻击的目的。
  实际的场景:攻击者盗用账号转钱,添加管理员,购买商品,发送邮件等等。
  ②风险分析 : 攻击者可以对系统进行任何增删改查的操作,严重损害了系统的安全性。
  ③修复方式 :
  A、添加Token,发请求时带上Token。处理请求的时候需要验证Cookie+Token。
  B、请求头中Referer参数需要校验请求来源是否是目标网页发出。
  缺点:(1)Refer值由浏览器提供,不能保证浏览器自身没有安全漏洞。(2)用户可以自己设置浏览器,让其在发送请求时不提供Refer值。
  优点:简单易行
  实际项目中,一般采用添加Refer请求头和添加Token组合的方式,来防止csn的攻击。
  3、跨站点脚本攻击XSS
  ①定义 : 指利用网始漏洞从用户那里恶意盗取信息。简单理解,就是用户输入中可加入JS等破坏性的代码,而程序没有进行过滤,还执行了这些代码,达到了恶意攻击的目的。
  ②分类 : 主要有存储型、反射型和DOM(基于文档对象模型)三种类型。
  存储型:攻击的数据会保存到数据库,一般存在于post的写请求或者get的写请求,例子:例如接口请求参数修改为</script+><script>alert(124)</script>,如果存在漏洞,则会存入数据库,每次页面加载,都会执行一次。
  反射型:攻击的数据,不存在数据库,属于一次性的,用完一次就没了,一般在get请求参数中构造,与存储型的危害差别不大,例子:例如hittps://www .XXX .com/test2page=</script+><script>alert(124)</script>,如果存在漏洞,则页面会弹出124的窗口。
  DOM:没有访问服务端,属于纯前端的行为。例子:直接在前端找到元素,修改为<lscript+><script>alert(124)</script>之后,如果弹出执行窗口,就证明存在漏洞。
  三者的区别:
  存储型和反射型的区别在于:是否存了数据库;
  存储型/反射型与DOM的区别在于:是否访问了服务端。
  ③风险分析 : 可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务。
  ④修复方式 : 使用过滤器,对用户输入执行危险字符清理。
  4、密码传输未采用复杂加密方式
  ①例子 : 例如密码仅仅采用md5的加密方式,可通过撞库反解密码。
  ②风险分析 : 单向Hash在被截取到传输中的hash值后,攻击者可以伪造一模一样的POST(重放攻击)请求可成功登录。
  ③修复方式 :
  A、添加SALT并进行多次Hash的方式对密码进行加密。
  B、使用更为高级的加密方式进行传输。
  5、解密的登录请求(不属于漏洞)
  ①例子 : 也就是说在接口请求过程中,例如登录接口密码参数用的名字为password,工具一般会报出来非漏洞,业界很多接口都是这么写的。
  ②风险分析 : 只有htp接口会存在暴露风险,但是现在大多数都是https接口,无伤大雅。
  ③修复方式 : 使用https请求,确保所有登陆请求都以加密方式发送到服务器。
  6、未授权的SQL查询执行
  ①定义 : 对不合法的请求进行了正确的响应,例如去除请求参数,清除HTTP请求体或修改请求方法等等,最后还是返回了状态码200,期望返回除200外的其他状态码。
  ②风险分析 : 没有实质性的危害,主要是规范问题。
  ③修复方式 : 对不合法的请求,不要状态码200,返回其他状态码。
  7、恶意站点链接
  ①定义 : 网站中存在恶意站点链接,存在跳转链接,但是要人工自行识别。
  ②风险分析 : 恶意站点可能让用户进入危险页面,导致用户敏感信息泄露。
  ③修复方式 : 对恶意站点或无法访问的站点做下架处理。
  8、使用HTTP动词篡改认证旁路
  ①风险分析 : 通过修改HTTP方法后,请求发送成功并且返回的内容“原始响应”的内容完全相同,这表明未对HTTP其他方法(PUT.DELETE)进行限制,导致其他HTTP方法能够绕过站点的认证。
  ②修复方式 :
  A、禁用不必要的HTTP方法,一般情况只会保留GET、POST
  B、检查tomcat的web.xml,weblogic的weblogic.xml配置,对请求类型进行限制
  9、越权
  需要手动覆盖。主要分为水平越权和垂直越权。举个例子:
  水平越权:在业务系统中,本来用户A只能对自己的个人信息进行增删改查,但是通过抓包,修改用户id(一般用户id都是递增的),可以获取到其他人的信息,或者账号A将自己的个人信息页面通过浏览器发送给用户B ,用户B登录系统后可以看到用户A的信息,这就是水平越权了。
  垂直越权:在业务系统中,本来用户A对某条记录只有查看的权限,但是通过抓包,可以对记录进行修改,这就是垂直越权了。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号