如何对网站登录进行漏洞测试以及漏洞修复

从业渗透测试服务已经有十几年了,在对客户网站进行漏洞检测,安全渗透时,尤其网站用户登录功能上发现的漏洞很多,想总结一下在渗透测试过程中,网站登录功能上都存在哪些网站安全隐患,下面就有请我们SINE安全的工程师老陈来给大家总结一下,让大家都有更好的了解网站,在对自己网站进行开发的过程中,尤其用户登录功能上做好网站安全防护,防止网站被攻击。

网站登录有安全验证与效验,从分支上又可以分出其他代码功能,包括用户注册,忘记密码,用户登录框,修改密码,验证码(图片以及短信验证码,邮箱验证码等功能),用户登录信息安全提示,密码错误还是输入的账号不对,以及账号频繁登录的锁定安全机制功能,大大小小的功能组成了网站的登录功能。那么我们SINE安全在对客户网站进行渗透测试服务的时候,在网站登录功能里到底发现那些致命的漏洞?下面我们来详细的举例说明:

第一我们从最简单的一个用户登录框上来说,很多客户网站并没有对用户前端输入的参数值进行安全过滤,导致账户名字与密码里可以插入恶意的参数值,导致SQL注入漏洞的发生,再一个就是使用万能的密码进行登录,可以绕过数据库,直接登录网站。SINE安全是如何帮用户修复这个SQL注入漏洞呢?针对SQL注入的修复办法是:对用户登录的账号密码字段的参数值进行预编译,不允许特殊字符的输入与传输,在代码里写入get,post,cookies提交方式的安全拦截,发现恶意的字符包括<,>,\,/,,,",select,update,@,等等进行拦截,并返回错误提示,对特定的sql语句在代码里进行预编译,禁止多余的参数插入到账号与密码字段中。

用户ID与密码被暴力破解,很多客户网站并没有对网站的登录进行安全判断,导致攻击者可以随意的对其进行任意的账号密码尝试登录,有些甚至有密码字典,可以不断去猜解用户的ID与密码,导致网站用户被恶意登录,资料恶意篡改等情况发生。对这种渗透中发现的漏洞我们SINE安全的修复办法是:增加验证码功能(图片验证码,或者是短信验证码),每次登录都必须输入对的验证码,如果验证码不对那就不允许登录,也可以将验证码做时间的限制,30秒才能重新获取。 再一个对用户ID输入错误的提示,可以混淆攻击者的视线,提示是密码错误。在用户登录次数达到6次以上直接锁定该账户的登录。

XSS跨站攻击漏洞也会在用户登录框中发生,比较常见的就是用户名的参数值中,有些客户网站没有对XSS恶意代码进行安全效验,导致可以输入错误的账号进行登录,当错误登录的时候,后台有可能会有错误的用户登录记录,包括post数据包里网站来源都会插入XSS攻击代码,导致管理员在查看用户登录错误日志的时候触发XSS漏洞。XSS跨站漏洞可以获取用户的cookies值,以及网站后台的地址,并可以将浏览器打开后台进行截图等功能,如何修复XSS跨站漏洞?对get,post,cookies的提交方式进行安全过滤,拦截掉<,>,,img,"",等字符。

任意用户注册漏洞也会在网站登录功能上发生,可以用来猜测网站是否有注册过该用户名,进行批量的暴力枚举。对注册使用的验证码进行绕过,使用正确的短信验证码提交注册即可绕过注册,手机以及邮箱的验证码过于太短,导致暴力破解,针对于这样的网站漏洞我们SINE安全的修复建议是对验证码和注册信息进行同步请求,对验证码进行验证是否正确,然后再来确定注册的信息是否与验证码是一体的。

还有很多网站功能在渗透测试过程中出现的漏洞,这里总结的是上部分,下一部分我们将会在下一篇文章中跟大家揭晓,也希望这些的渗透测试分享能让大家对网站的安全有所了解,只有真正的了解了自己的网站,才能把安全做好,知彼知己百战不殆。在网站上线以及发生安全问题后,一定要做渗透测试服务,提前检测网站存在的漏洞,以及模拟攻击者的手法去查找漏洞根源,防患于未然,国内做的比较专业网站渗透测试公司推荐Sinesafe,绿盟,启明星辰等等专业的安全公司都是比较不错的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏刷题笔记

java入门踩的坑2 【数据库快速入门】2019年8月11日

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

6010
来自专栏知识分享

数据库: 安装配置数据库,使用Navicat for MySQL和手机APP 连接测试

 官方提供了一个工具,可以用来管理配置数据库,或者设置一些用户的权限,现在咱用不到

7130
来自专栏知识分享

数据库: 简要安装使用

一般实现      增 删 改 查         增加数据,删除数据,修改数据,查看数据

8330
来自专栏知识分享

数据库: 安装配置数据库,使用Navicat for MySQL和手机APP 连接测试(如果上一节碰到问题可参考这一节)

在搜索框中输入“services,msc” ,enter键确认之后找到MySQL服务,双击打开属性对话框,通过点击“启动”,“停止”来改变服务状态。

9530
来自专栏用户1052078的专栏

Navicat连接MySQL时弹出:1045:Access denied for user ‘root’@’localhost’

Mysql8.0 远程连接用户配置 https://wiki.nooss.cn/archives/275.html

10230
来自专栏知识分享

OpenResty: PHP增加数据库插件

首先修改下php.ini 文件  告诉php当前的扩展库路径   扩展库--就是扩展的其它功能的库

8340
来自专栏DBA随笔

关于MySQL binlog的一些知识点

在实际的工作过程中,作为DBA,经常会遇到主从复制的问题,主从复制延迟也好,主从复制断开也好,这种情况下经常需要去查主库的binlog日志文件,而bin...

10150
来自专栏腾讯数据库技术

分析型数据库之MonetDB

提示:公众号展示代码会自动折行,建议横屏阅读 ---- 1 历史 MonetDB是荷兰阿姆斯特丹大学数学和计算机科学的一个研究所CWI开发的。CWI最有名的是...

11230
来自专栏用户1052078的专栏

Navicat Premium 12连接服务器上的SQL Server

7420
来自专栏Jerry的SAP技术分享

一个ABAP重构的实例:CL_CRM_LEAD_CREATE~SELECT_CAMPAIGNS_BY_SQL

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

8730

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励