2023年7月31日发(作者:)
网站暴力破解攻击及防御措施
赵星
【摘 要】网站安全形势不容乐观.为了进一步研究网站面临的安全问题,本文主要介绍了BurpSuite工具,并演示了如何利用BurpSuite工具暴力破解网站密码,并针对此类攻击给出了具体的防御措施.
【期刊名称】《山西电子技术》
【年(卷),期】2016(000)001
【总页数】3页(P52-54)
【关键词】网络安全;网站入侵;BurpSuite;破解
【作 者】赵星
【作者单位】中北大学软件学院,山西太原030051
【正文语种】中 文
【中图分类】TP309.2
早期互联网中,Web并非互联网的主流应用,基于FTP、SMTP、POP3等协议的服务拥有着绝大多数的用户。因此黑客们主要的攻击目标是网络、OS等领域,Web安全领域的攻击和防御技术处于初始阶段[1]。
随着技术的发展,防火墙技术的应用使得暴露在互联网上的非Web服务器越来越少,且Web技术的成熟使得Web应用的功能越来越强大,最终成为互联网的主流。Web安全涉及到客户端脚本安全、服务器端应用安全等等,本文将介绍BurpSuite在网站入侵方面的出色表现,并重点介绍如何防御此类暴力破解攻击。 BurpSuite是用于攻击web应用程序的集成平台,主要集成了以下功能。代理工具Proxy:可以拦截HTTP数据包,作为一个在浏览器和目标应用程序之间的中间人,允许拦截、查看、修改在两个方向上的原始数据流[2]。爬虫工具Spider:它是智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。扫描工具Scanner:能自动地发现web应用程序的安全漏洞。入侵工具Intruder:一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing技术探测常规漏洞。中继器工具Repeater:需要手动操作来触请求,并对返回数据包进行分析的工具。解码器工具Decoder:对数据进行编码的工具。
首先打开浏览器代理功能,以微软的IE 9浏览器为例:Internet选项—连接—局域网设置—勾选代理服务器填写地址127.0.0.1,代理端口8080,然后在BurpSuite的代理工具里进行设置,Proxy—Options—Add,并添加代理地址127.0.0.1和端口8080,代理Proxy的intercept选项下有四个子选项。
Forward选项:当编辑信息之后,发送信息到服务器或浏览器。
Drop选项:当不想要发送这次信息可以点击drop放弃这个拦截信息。
Interception is on/off选项:如果按钮显示Interception is on,表示请求和响应将被拦截或自动转发根据配置的拦截规则配置代理选项,如果按钮显示Interception is off则显示拦截之后的所有信息将自动转发。
Action选项:说明一个菜单可用的动作行为操作可以有哪些操作功能。
当数据包被截断以后就可以将其发送到中继器工具Repeater中进行模拟提交,发往入侵工具Intruder进行一下暴力破解攻击等等,发往扫描工具Scanner可以进一步发现web应用程序的安全漏洞等。
2.1 尝试登录该站点
由于不知道该站点存在哪些用户,以及哪些用户会存在弱口令,先尝试使用一些默认用户名和密码进行登录,但提示该错误信息,说明登录失败。经过测试发现该站点为aspx站点,尝试使用aspx万能密码or′=′or′登录该站点,也提示错误信息,详见图1。
2.2 转换思路尝试注册
点击注册,如图2所示,进入注册页面后发现,注册需要填写真实姓名,并且管理员需要进行审核,此种方法还是行不通。
在图2中可以发现用户名为6~10位数字,这时可以采取一种策略,采取弱口令来遍历用户名,比如此处使用密码“123456”,尝试登录不同的用户名。下边以用户名:test密码:123456来登录该系统,登录前把浏览器代理和BurpSuite代理都打开,抓包结果如图3。
把该数据包发送到Intruder中,在Positions中取消所有变量payloads标记,然后添加用户名payloads标记userTxB=§test§,如图4。
然后在Intruder的payloads子选项中选择Payloads type为Numbers,设置遍历从0099,完成用户名的遍历,根据登录成功与失败返回的数据包情况不同,可以判断那些为登录成功的数据包,图5可看出,用户名为123456,密码为123456的用户存在。然后使用用户名:123456,密码:123456尝试登录该系统,可成功登录该系统,登录进入系统后可以看到一些敏感信息,入侵成功如图6所示。
未知攻焉知防,知道了攻击的过程是通过遍历的方式进行暴力破解攻击的,那么针对这种暴力破解攻击给出针对性的解决意见。
4.1 技术方面
4.1.1 验证码
验证码被认为是对抗暴力破解攻击最简洁而有效的防御方法。暴力破解时可以遍历用户名和密码,但每次遍历时无法预测变化的验证码,如果输入的验证码不正确则无法完成最终请求。因此在通常情况下,验证码能够很好地遏制暴力破解工具。
但是验证码并非万能。很多时候,处于用户体现考虑,网站不可能给所有的操作都加上验证码。因此,验证码只能作为防御暴力破解的一种辅助手段,而不能作为最主要的解决方案。
4.1.2 限制错误登录次数
如果某一用户在短时间内多次错误输入密码,可判定可能存在暴力破解的风险,在网站建设时可以在代码层面做出防护措施,核心代码如下:
if($username==user){
//这里用户可以试着登陆3次
if($row['login_times']>2){
$current=time();
$passed_time=$current-$row['login_date'];
echo '现在已经过了'.$passed_time.'秒
';
//设定时间900秒,在此时间段内,特定用户不能登陆系统
if(($current-$row['login_date'])<900){
if($pw==pw){
exit('密码输入错误次数大于三次,请在15分钟后登陆系统!');
}
if($pw!=pw){
exit('密码输入错误次数大于三次,请在15分钟后登陆系统!');
}
}
}
4.1.3 增加一个判断机制 通常攻击者要进行暴破时会先观察一下网站,比如密码的提交方式(POST还是GET)、密码错误的提示。然后根据这些信息来配置攻击参数,当然现在大部分的密码的提交方式是POST,再加上一个GET验证,这样可以通过?url=ADmin来正常登陆,而攻击者只能抱着破解。这样暴力破解工具就失效了。
未加GET验证前代码如下:
// … some code
$pass= “密码”;
if($_POST['pass']==$pass)
{
echo”登录成功!”;
// … some code
}
//…some code
>
添加GET验证后代码如下:
// … some code
$pass= “密码”;
if($_POST['pass']==$pass)
{
if($_GET['url'] == “ADmin”)
{ echo”登录成功!”;
// … some code
}
}
>
4.2 管理方面
4.2.1 加强教育,制定企业级安全策略
公司企业应根据自身实际情况,制定切实可行的公司级安全策略,如密码体系安全策略如下:
1) 密码中不得含有个人信息。
2) 形式上,应该至少包括以下字符类别中的三组:大写字母、小写字母、数字、非数字符号(如&<@*!$》_等)。
3) 对密码的长度做必要的限制,核心系统应考虑双因素认证。
4.2.2 加强管理,持续检查
定期对公司资产进行等级划分,威胁分析,风险分析,确定解决方案,安全是一个持续的过程,需要通过安全运营不断地去发现问题,周期性地做安全检查。解决方案一定要有针对性,这种针对性是有资产等级划分、威胁分析、风险分析等阶段的结果给出的。再次强调:安全是一个持续的过程。
针对此类暴力破解的安全的问题,网站可以通过添加验证码的方式使得暴力破解方式失效,也可以检查一个帐号在一段时间内的登录失败次数,或者检测某一IP地址在一段时间内的登录行为次数来判断是否发生暴力破解。安全是一门朴素的学问,也是一种平衡的艺术,但只要能抓住安全的本质,之后无论遇到任何安全问题,都会无往而不利,因为我们已经真正地懂得了如何用安全的眼光看待这个世界。
【相关文献】
[1] 吴翰清.白帽子讲Web安全[M].北京:电子工业出版社,2014.
[2] 张炳帅. Web安全深度剖析[M].北京:电子工业出版社,2015.
2023年7月31日发(作者:)
网站暴力破解攻击及防御措施
赵星
【摘 要】网站安全形势不容乐观.为了进一步研究网站面临的安全问题,本文主要介绍了BurpSuite工具,并演示了如何利用BurpSuite工具暴力破解网站密码,并针对此类攻击给出了具体的防御措施.
【期刊名称】《山西电子技术》
【年(卷),期】2016(000)001
【总页数】3页(P52-54)
【关键词】网络安全;网站入侵;BurpSuite;破解
【作 者】赵星
【作者单位】中北大学软件学院,山西太原030051
【正文语种】中 文
【中图分类】TP309.2
早期互联网中,Web并非互联网的主流应用,基于FTP、SMTP、POP3等协议的服务拥有着绝大多数的用户。因此黑客们主要的攻击目标是网络、OS等领域,Web安全领域的攻击和防御技术处于初始阶段[1]。
随着技术的发展,防火墙技术的应用使得暴露在互联网上的非Web服务器越来越少,且Web技术的成熟使得Web应用的功能越来越强大,最终成为互联网的主流。Web安全涉及到客户端脚本安全、服务器端应用安全等等,本文将介绍BurpSuite在网站入侵方面的出色表现,并重点介绍如何防御此类暴力破解攻击。 BurpSuite是用于攻击web应用程序的集成平台,主要集成了以下功能。代理工具Proxy:可以拦截HTTP数据包,作为一个在浏览器和目标应用程序之间的中间人,允许拦截、查看、修改在两个方向上的原始数据流[2]。爬虫工具Spider:它是智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。扫描工具Scanner:能自动地发现web应用程序的安全漏洞。入侵工具Intruder:一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing技术探测常规漏洞。中继器工具Repeater:需要手动操作来触请求,并对返回数据包进行分析的工具。解码器工具Decoder:对数据进行编码的工具。
首先打开浏览器代理功能,以微软的IE 9浏览器为例:Internet选项—连接—局域网设置—勾选代理服务器填写地址127.0.0.1,代理端口8080,然后在BurpSuite的代理工具里进行设置,Proxy—Options—Add,并添加代理地址127.0.0.1和端口8080,代理Proxy的intercept选项下有四个子选项。
Forward选项:当编辑信息之后,发送信息到服务器或浏览器。
Drop选项:当不想要发送这次信息可以点击drop放弃这个拦截信息。
Interception is on/off选项:如果按钮显示Interception is on,表示请求和响应将被拦截或自动转发根据配置的拦截规则配置代理选项,如果按钮显示Interception is off则显示拦截之后的所有信息将自动转发。
Action选项:说明一个菜单可用的动作行为操作可以有哪些操作功能。
当数据包被截断以后就可以将其发送到中继器工具Repeater中进行模拟提交,发往入侵工具Intruder进行一下暴力破解攻击等等,发往扫描工具Scanner可以进一步发现web应用程序的安全漏洞等。
2.1 尝试登录该站点
由于不知道该站点存在哪些用户,以及哪些用户会存在弱口令,先尝试使用一些默认用户名和密码进行登录,但提示该错误信息,说明登录失败。经过测试发现该站点为aspx站点,尝试使用aspx万能密码or′=′or′登录该站点,也提示错误信息,详见图1。
2.2 转换思路尝试注册
点击注册,如图2所示,进入注册页面后发现,注册需要填写真实姓名,并且管理员需要进行审核,此种方法还是行不通。
在图2中可以发现用户名为6~10位数字,这时可以采取一种策略,采取弱口令来遍历用户名,比如此处使用密码“123456”,尝试登录不同的用户名。下边以用户名:test密码:123456来登录该系统,登录前把浏览器代理和BurpSuite代理都打开,抓包结果如图3。
把该数据包发送到Intruder中,在Positions中取消所有变量payloads标记,然后添加用户名payloads标记userTxB=§test§,如图4。
然后在Intruder的payloads子选项中选择Payloads type为Numbers,设置遍历从0099,完成用户名的遍历,根据登录成功与失败返回的数据包情况不同,可以判断那些为登录成功的数据包,图5可看出,用户名为123456,密码为123456的用户存在。然后使用用户名:123456,密码:123456尝试登录该系统,可成功登录该系统,登录进入系统后可以看到一些敏感信息,入侵成功如图6所示。
未知攻焉知防,知道了攻击的过程是通过遍历的方式进行暴力破解攻击的,那么针对这种暴力破解攻击给出针对性的解决意见。
4.1 技术方面
4.1.1 验证码
验证码被认为是对抗暴力破解攻击最简洁而有效的防御方法。暴力破解时可以遍历用户名和密码,但每次遍历时无法预测变化的验证码,如果输入的验证码不正确则无法完成最终请求。因此在通常情况下,验证码能够很好地遏制暴力破解工具。
但是验证码并非万能。很多时候,处于用户体现考虑,网站不可能给所有的操作都加上验证码。因此,验证码只能作为防御暴力破解的一种辅助手段,而不能作为最主要的解决方案。
4.1.2 限制错误登录次数
如果某一用户在短时间内多次错误输入密码,可判定可能存在暴力破解的风险,在网站建设时可以在代码层面做出防护措施,核心代码如下:
if($username==user){
//这里用户可以试着登陆3次
if($row['login_times']>2){
$current=time();
$passed_time=$current-$row['login_date'];
echo '现在已经过了'.$passed_time.'秒
';
//设定时间900秒,在此时间段内,特定用户不能登陆系统
if(($current-$row['login_date'])<900){
if($pw==pw){
exit('密码输入错误次数大于三次,请在15分钟后登陆系统!');
}
if($pw!=pw){
exit('密码输入错误次数大于三次,请在15分钟后登陆系统!');
}
}
}
4.1.3 增加一个判断机制 通常攻击者要进行暴破时会先观察一下网站,比如密码的提交方式(POST还是GET)、密码错误的提示。然后根据这些信息来配置攻击参数,当然现在大部分的密码的提交方式是POST,再加上一个GET验证,这样可以通过?url=ADmin来正常登陆,而攻击者只能抱着破解。这样暴力破解工具就失效了。
未加GET验证前代码如下:
// … some code
$pass= “密码”;
if($_POST['pass']==$pass)
{
echo”登录成功!”;
// … some code
}
//…some code
>
添加GET验证后代码如下:
// … some code
$pass= “密码”;
if($_POST['pass']==$pass)
{
if($_GET['url'] == “ADmin”)
{ echo”登录成功!”;
// … some code
}
}
>
4.2 管理方面
4.2.1 加强教育,制定企业级安全策略
公司企业应根据自身实际情况,制定切实可行的公司级安全策略,如密码体系安全策略如下:
1) 密码中不得含有个人信息。
2) 形式上,应该至少包括以下字符类别中的三组:大写字母、小写字母、数字、非数字符号(如&<@*!$》_等)。
3) 对密码的长度做必要的限制,核心系统应考虑双因素认证。
4.2.2 加强管理,持续检查
定期对公司资产进行等级划分,威胁分析,风险分析,确定解决方案,安全是一个持续的过程,需要通过安全运营不断地去发现问题,周期性地做安全检查。解决方案一定要有针对性,这种针对性是有资产等级划分、威胁分析、风险分析等阶段的结果给出的。再次强调:安全是一个持续的过程。
针对此类暴力破解的安全的问题,网站可以通过添加验证码的方式使得暴力破解方式失效,也可以检查一个帐号在一段时间内的登录失败次数,或者检测某一IP地址在一段时间内的登录行为次数来判断是否发生暴力破解。安全是一门朴素的学问,也是一种平衡的艺术,但只要能抓住安全的本质,之后无论遇到任何安全问题,都会无往而不利,因为我们已经真正地懂得了如何用安全的眼光看待这个世界。
【相关文献】
[1] 吴翰清.白帽子讲Web安全[M].北京:电子工业出版社,2014.
[2] 张炳帅. Web安全深度剖析[M].北京:电子工业出版社,2015.
发布评论