重放攻击-实例解析

Posted sharphui2018727-wyh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重放攻击-实例解析相关的知识,希望对你有一定的参考价值。

主要讲两点,是么是重放攻击?

                  ,怎么样防止重放攻击?

,重放攻击:顾名思义,重:再次放的意思。

技术分享图片

主机A要给主机B发送报文,中间重放攻击的主人可以是A,或者是攻击者C

:当是A时,表示A会重复发送相同的报文给B,

:当是C时,表示C截获了A发送给B的报文,然后再伪装成A给B发送其截获的报文

重放攻击的含义:主机A给主机B发送的报文被攻击者C截获了,然后C伪装成A给B发送其截获来的报文,而B会误以为C就是A,就把回应报文发送给了C。

虽然A是加密的,但C根本不用破译。

实例分析:登录验证

登录验证的基本流程:(4步)

1,前端:

技术分享图片

     用户输入账号,密码,然后登录

2,用户在发送登录请求之前,web端会首先对明文密码进行md5加密(而加密后的密码会储存于后端的数据库中)

3,提交账号及md5加密后的密码

4,请求到达后端,将 从数据库中提取的账号与密码和现在提交的账号与密码进行比较,如果相同,则登录成功。

那么在这中间会出现什么问题呢?

思考:这个过程安全吗?

我们知道,在此过程中传输的是经过md5加密后的密码,即使被监听者截取到,而md5是不可逆的,明文密码也不会泄露的 。

其实不然,监听者无需解出密码明文,即可登录——因为监听者只需将监听到的URL(uniform )重放一下,即可冒充你的身份登录系统。

下面我们讲解一下稍微安全一点的登录

关键是:进行了两次加密,且攻击者的session中的随机码与数据库中的随机码相同的概率可以忽略。

1,进入前端用户登陆界面时生成一个随机码(盐值)(此随机码会在客户端和后端session中各保存一个)

2,用户在发送登录请求之前,web端首先会对明文密码进行md5加密,存于数据库中,然后加密后的密码再与盐值连接,再进行md5加密

最后密码=md5{[md5(明文密码)]+随机码}

3,请求到达后端后,将 从数据库中提取的md5加密后的密码+后端session中的盐值进行md5加密,与发送来的密文进行对比,若相同,则成功。

 更安全的登陆流程

1,系统随机生成一个固定盐值,uerooejioeueo%@*?.,*6hgk,>ikuolm 足够复杂

2,当用户注册,修改密码时,明文密码会先于固定盐值连接,进行md5加密,然后再与随机码连接再次进行md5加密

最后密码=md5{【md5(明文密码+固定盐值)】+随机码}

最后更加完善的方式

1,设置登陆验证码、

2,错误达到一定次数,锁定账号几分钟

3,存数据库前再加一次盐,然后再md5一次,防止拖库被猜密码

,防御方案:

1,加随机数:双方只需要记住各自使用过的随机数,不能有重复数,如果报文中有以前使用过的随机数,则被认为是重放攻击

                      优点:双方不需要保持时间的同步,

                      缺点:需要额外保存使用过的随机数,则需要保存和查询开销

2,加时间戳:时戳——代表当前时刻的数

                       而重放的时戳将相对远离当前时刻

                      优点:不需要内存开销

                      缺点:通信各方的计算机时钟必须保持同步(同步越好,受攻击的可能性越小)

3,加流水号:双方在报文中添加一个逐步递增的整数,则只要收到一个不连续的流水号报文(太大或者太小)就认为有重放威胁

                       优点:不需要时间同步,保存的信息量小

                       缺点:攻击者如果对报文解密成功,就获得了流水号进而会伪造数据

以上是关于重放攻击-实例解析的主要内容,如果未能解决你的问题,请参考以下文章

SSRF攻击实例解析

关于XML解析的外部实例引用漏洞攻击XXE

RocketMQ源码(13)—Broker 消息重放服务ReputMessageService源码解析

深入解析跨站请求伪造漏洞:实例讲解

深度解析Optimism被盗2000万个OP事件(含代码)

防止重放攻击最有效的方法是