网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

web安全团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 网络安全 > web安全 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

网站或软件系统上线前对注册功能的安全测试

文章来源:重庆网络安全 发布时间:2020-02-21 13:51:54 围观次数:
分享到:

摘要:应用程序系统都有一个注册模块。非法用户则通过注册模块来达到难以言喻的目的,通过注册模块与服务器进行交互(用户输入不可信),因此在系统联机之前,必须在注册模块上执行测试。

 许多应用程序系统都有一个注册模块。非法用户则通过注册模块来达到难以言喻的目的,通过注册模块与服务器进行交互(用户输入不可信),因此在系统联机之前,必须在注册模块上执行测试。


一.注册模块是否面向公众


  根据系统业务需求,分析注册模块;如果是面向公众的,则应将注册模块放置在明显的位置;

  

  重要的是要强调内部注册功能。此时,注册模块应尽可能隐藏。上线之前,需要测试内部注册模块是否隐藏。 红军方面(黑匣子测试):通过目录扫描,查看源代码,爬取js文件以及发现隐藏的用户注册界面(例如未删除的评论),您还可以使用社工的思维方式,例如登录地址www.xxx.com / userLogin,您可以猜测注册地址为www.xxx.com/userRegist; 蓝军视角(白盒测试):直接找到开发人员来注册模块地址,并查看地址是否容易猜测。


  下面的屏幕快照是通过查看源代码发现,系统具有已注册的供内部使用的模块,该模块已添加了注释。通过检查js文件,它找到注册的接口地址和一些参数。

blob.png

blob.png


二.验证用户真实性。


  检查系统是否需要通过手机或电子邮件验证真实性。身份验证方式没有任何限制,有些通过SMS或电子邮件验证码,有些直接将下一个注册地址发送到电子邮件。为什么需要验证真实性? 这可以有效地防止恶意注册并消除僵尸帐户。


  发送SMS验证码时,可以拦截响应数据包,以查看服务器是否直接将验证码返回给客户端。如果它直接返回给客户,则可以使用其他人的身份注册并绕过真实性检查。


  如果系统具有面部识别功能,则需要测试面部识别。蓝军视角:直接通过工具制作动态图片或小型视频。 


  检查验证是否在前端完成。如果在前端,尝试更改代表真实测试结果的返回包中的参数值,类似code=-1改为code=0或者1,status=false改为status=true。


  如果系统稍后提供真实性验证功能,则用户可以直接进入系统。此时,您需要检查是否存在未授权的漏洞,以防止未授权访问仅在验证身份之后可用的权限。

blob.png


三.短信或邮箱轰炸


  因为有SMS或电子邮件验证码,所以存在SMS或电子邮件轰炸的风险。这不仅影响用户,而且还为企业消耗了短信成本。在测试过程中,使用数据包捕获工具Burpsuite重播验证码以发送请求数据包(防止在前端检查时间间隔和次数),测试验证码是否有时间间隔限制和数量限制。目前,通常使用的时间间隔为60s,次数为5次。

blob.png


四.是否验证用户名


  大多数系统的注册模块都会验证注册帐户,以验证是否使用了用户名。 此时,您可以使用数据包捕获工具拦截注册帐户验证请求数据包。 例如,使用Burpsuite的“Intruder”模块。 字典为常用用户名,对用户名进行遍历,然后对遍历的用户名执行弱密码清除。


  如果未验证注册的用户名,则存在二次注册的风险,该风险可用于重置密码,甚至导致整个帐户被覆盖。 因此,从红军的角度进行测试时,红军需要谨慎,蓝军直接需要快速验证现有用户。


  如果未过滤用于验证用户是否存在的select语句,则可能存在SQL注入漏洞。


五.SQL和XSS测试


  在红军的角度上,在注册模块上测试sql和xss:当用户名的长度不受限制时,用户名(昵称,地址等也必须进行测试)。 过去流行xss时,会将各种xss插入用户名Pauload中以进行盲打; 和SQL注入,可能存在插入注入或二次注入的风险(在注册开始时,插入被过滤,但是登录到帐户后,在查看个人信息时,未过滤参数,从而导致触发SQL注入攻击 更困难); 蓝军的观点要容易得多,直接代码审核就足够了。


  注册时,例如,未过滤所使用的insert语句时,原始SQL语句为(将引用地址插入到SQL注入插入中)

 insert into member(username,pw,sex,phonenum,email,address)     values('wangwu',md5('a'),'a','aa','a','a')

此时可以构造以下SQL注入有效负载来获取数据库用户名

insert into member(username,pw,sex,phonenum,email,address) values('wangwu'or updatexml(1,concat(0x7e,(users())),0) or'',md5('a'),'a','aa','a','a')

 注册时,当输入框有长度限制时,您可以尝试按f12修改输入框的长度,或使用拼接技术将xss有效负载拆分为几个输入框,以验证是否存在xss漏洞。


六.注册为管理员吗


  遇到过这样的系统,从js文件中找到的接口请求参数只是用户名和密码

blob.png

尽管您可以成功注册,但是登录时只可以更改密码和查看个人信息。

blob.png

在测试过程中,考虑是否可以找到权限。 稍后,当我单击个人信息时,该信息为空白,但是响应数据包中出现错误消息,表明该角色不存在

blob.png

看到role_id这个参数,于是重新注册,注册请求包中,添加参数role_id,并将role_id设置为1(一般管理员角色id=1),重新注册成功,从而获得管理员权限。

blob.png

blob.png


七.上传文件


  注册某些系统后,将具有文件上传功能,例如头像和营业执照; 目前,您需要对上传功能执行任意文件上传测试。


其他


  当注册请求包的请求参数为xml格式时,进行XXE测试。 如果采用json格式,则最好尝试使用fastjson命令执行这种类型的漏洞。


本文由 重庆网络安全 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:网站安全测试 软件安全测试 注册功能 网站系统测试 重庆网络安全

上一篇:从WEB安全的角度介绍hihttps如何通过机器学习自动生成对抗规则的5个过程
下一篇:使用CentOS8和NGINX尝试ModSecurity启动Web应用程序WAF

热门资讯

鼠标向下滚动