从业渗透测试服务已经有十几年了,在对客户网站进行漏洞检测,安全渗透时,尤其网站用户登录功能上发现的漏洞很多,想总结一下在渗透测试过程中,网站登录功能上都存在哪些网站安全隐患,下面就有请我们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,绿盟,启明星辰等等专业的安全公司都是比较不错的。