柒夭日志:网络安全篇

254 阅读36分钟

1. 说说有哪些安全攻击?

网络安全攻击主要分为两种类型,被动攻击主动攻击

  • 被动攻击:是指攻击者从网络上窃听他人的通信内容,通常把这类攻击称为截获,被动攻击主要有两种形式:消息内容泄露攻击和流量分析攻击。由于攻击者没有修改数据,使得这种攻击很难被检测到。
  • 主动攻击:直接对现有的数据和服务造成影响,常见的主动攻击类型有:
    • 篡改:攻击者故意篡改网络上送的报文,甚至把完全伪造的报文传送给接收方。
    • 恶意程序:恶意程序种类繁多,包括计算机病毒、计算机蠕虫、特洛伊木马、后门入侵、流氓软件等等。
    • 拒绝服务Dos:攻击者向服务器不停地发送分组,使服务器无法提供正常服务。

2. DNS 劫持了解吗?

DNS劫持即域名劫持,是通过将原域名对应的IP地址进行替换,从而使用户访问到错误的网站,或者使用户无法正常访问网站的一种攻击方式。

域名劫持往往只能在特定的网络范围内进行,范围外的DNS服务器能够返回正常的IP地址。攻击者可以冒充原域名所属机构,通过电子邮件的方式修改组织机构的域名注册信息,或者将域名转让给其它主持,并将新的域名信息保存在所指定的DNS服务器中,从而使用户无法对原域名来进行解析以访问目标地址。

DNS 劫持的步骤是什么?

  1. 获取要劫持的域名信息:攻击者会首先访问域名查询要劫持的站点的域名信息。
  2. 控制域名响应的E-Mail账号:在获取到域名信息后,攻击者通过暴力破解或者专门的方法破解公司注册域名时使用的E-mail账号所对应的密码,更高级的攻击者甚至能够直接对E-Mail进行信息窃取。
  3. 修改注册信息:当攻击者破解了E-Mail后,会利用相关的更改功能修改该域名的注册信息,包括域名拥有者信息,DNS服务器信息等。
  4. 使用E-Mail收发确认函:在修改完注册信息后,攻击者E-Mail在真正拥有者之前收到修改域名注册信息的相关确认信息,并回复确认修改文件,待网络公司恢复已成功修改信件后,攻击者便成功完成DNS劫持。

怎么应对DNS劫持?

  • 直接通过IP地址访问网站,避开DNS劫持
  • 由于域名劫持往往只能在特定的网络范围内进行,因此一些高级用户可以通过网络设置让DNS指向正常的域名服务器以实现对目标网址的正常访问,例如计算机首选DNS服务器的地址固定为8.8.8.8(这个也是解决 DNS 污染的一个方法)。

3. DNS 污染是什么?

DNS污染是指当一个DNS服务器被恶意修改或替换,导致该服务器不再返回正确的DNS记录,而是返回错误的记录,从而将用户错误地导向到恶意站点。

有些时候,DNS污染是官方行为,目的是不让普通用户访问某些固定的网站。

4. 如何避免 DNS 污染 和 DNS 劫持 ?

如果要完全避免 DNS 污染和 DNS 劫持是完全不可能的,只能通过一些手段做到尽量去避免:

  1. 使用正规的 VPN,因为使用 VPN 可以启到代理作用,这样就可以对网络连接起保护作用,防止攻击者对 DNS 通信进行污染或者劫持。
  2. 设置静态 DNS : 即将 DNS 设置为固定值,这样在 DNS 更换或者 DNS 污染的时候,可以防止 DNS 请求被重定向到错误的地址。
  3. 定期更新软件:定期更新你的操作和浏览器软件,可以防止主机上的漏洞被攻击者利用。
  4. 选择一个合适安全的 DNS 服务提供者,比如我们经常说的 8.8.8.8,114.114.114.114等,通过使用一些可靠的 DNS 服务,来确保 DNS 请求安全。

5. 什么是 CSRF 攻击?如何避免?

什么是 CSRF 攻击?

CSRF,跨站请求伪造(英文全称是 Cross-site request forgery),也被称为“one click attack”,或者 session riding,通常缩写为 CSRF 或者 XSRF,其是一种挟持用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。

可以这样理解 CSRF 攻击,攻击者通过盗用你的身份,然后用你的名义发送恶意请求

CSRF 是如何进行攻击的呢?

来看一个例子:

  1. 用户登陆银行,没有退出,浏览器包含了 用户 在银行的身份认证信息。
  2. 攻击者将伪造的转账请求包含在帖子中
  3. 用户在银行网站保持登陆的情况下,浏览帖子
  4. 将伪造的转账请求连同身份认证信息,发送到银行网站
  5. 银行网站看到身份认证信息,以为就是 用户的合法操作,最后造成用户资金损失。

怎么应对 CSRF 攻击呢?

这里我们进行一个总结,一般这种攻击的方式都是通过用户登录一个受信任的网站,然后利用户登录正常网站在本地生成的攻击 cookie 进行一些不合理的请求以及操作。

  • 检查 Referer 字段HTTP头中的Referer字段记录了该 HTTP 请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站,而如果黑客要对其实施 CSRF攻击,他一般只能在他自己的网站构造请求。因此,可以通过验证Referer值来防御CSRF 攻击。
  • 添加校验 token以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有token或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。
  • 敏感操作多重校验对一些敏感的操作,除了需要校验用户的认证信息,还可以通过邮箱确认、验证码确认这样的方式多重校验。

6. 什么是 DoS、DDoS、DRDoS 攻击?

  • DOS: (Denial of Service), 翻译过来就是拒绝服务, 一切能引起拒绝 行为的攻击都被称为 DOS 攻击。最常见的 DoS 攻击就有计算机网络宽带攻击连通性攻击
  • DDoS: (Distributed Denial of Service),翻译过来是分布式拒绝服务。是指处于不同位置的多个攻击者同时向一个或几个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器,并利用这些机器对受害者同时实施攻击。主要形式有流量攻击和资源耗尽攻击,常见的 DDoS攻击有:SYN Flood、Ping of Death、ACK Flood、UDP Flood 等。
  • DRDoS: (Distributed Reflection Denial of Service),中文是分布式反射拒绝服务,该方式靠的是发送大量带有被害者 IP 地址的数据包给攻击主机,然后攻击主机对 IP 地址源做出大量回应,从而形成拒绝服务攻击。

DDoS攻击的危害

当服务器被 DDos 攻击的时候,一般会出现以下现象:

  • 被攻击的主机有大量等待响应的 TCP 连接;
  • 网络中充斥着许多没用使用的数据包;
  • 受害主机没有办法正常与外界进行连接通信,以及没有包含处理正常的请求

最明显的表现就是许多用户没有办法正常访问网站,这里使用一张图来帮助各位进行理解,如下图所示。

如何防范DDoS?

1、屏蔽未经请求发送的DNS响应信息

一个典型的DNS交换信息是由请求信息组成的。DNS解析器会将用户的请求信息发送至DNS服务器中,在DNS服务器对查询请求进行处理之后,服务器会将响应信息返回给DNS解析器。但值得注意的是,响应信息是不会主动发送的。服务器在没有接收到查询请求之前,就已经生成了对应的响应信息,回应就被丢弃丢弃快速重传数据包。1.即便是在数据包丢失的情况下,任何合法的DNS客户端都不会在较短的时间间隔内向同一DNS服务器发送相同的DNS查询请求。2.如果从相同IP地址发送至同一目标地址的相同查询请求发送频率过高,这些请求数据包可丢弃。

2、启用TTL

如果DNS服务器已经将响应信息成功发送了,应该禁止服务器在较短的时间间隔内对相同的查询请求信息进行响应。1.对于一个合法的DNS客户端如果已经接收到了响应信息,就不会再次发送相同的查询请求。2.每一个响应信息都应进行缓存处理直到TTL过期。3.当DNS服务器遭遇大量查询请求时,可以屏蔽掉不需要的数据包。丢弃未知来源的DNS查询请求和响应数据通常情况下,攻击者会利用脚本来对目标进行分布式拒绝服务攻击(DDoS攻击),而且这些脚本通常是有漏洞的。因此,在服务器中部署简单的匿名检测机制,在某种程度上可以限制传入服务器的数据包数量。丢弃未经请求或突发的DNS请求这类请求信息很可能是由伪造的代理服务器所发送的,或是由于客户端配置错误或者是攻击流量。所以无论是哪一种情况,都应该直接丢弃这类数据包。非泛洪攻击 (non-flood) 时段,创建一个白名单,添加允许服务器处理的合法请求信息。白名单可以屏蔽掉非法的查询请求信息以及此前从未见过的数据包。这种方法能够有效地保护服务器不受泛洪攻击的威胁,也能保证合法的域名服务器只对合法的DNS查询请求进行处理和响应。

3、启动DNS客户端验证

伪造是DNS攻击中常用的一种技术。如果设备可以启动客户端验证信任状,便可以用于从伪造泛洪数据中筛选出非泛洪数据包。对响应信息进行缓存处理如果某一查询请求对应的响应信息已经存在于服务器的DNS缓存之中,缓存可以直接对请求进行处理。这样可以有效地防止服务器因过载而发生宕机。

很多请求中包含了服务器不具有或不支持的信息,我们可以进行简单的阻断设置,例如外部IP地址请求区域转换或碎片化数据包,直接将这类请求数据包丢弃。利用ACL,BCP38,及IP信誉功能的使用托管DNS服务器的任何企业都有用户轨迹的限制,当攻击数据包被伪造,伪造请求来自世界各地的源地址。设置一个简单的过滤器可阻断不需要的地理位置的IP地址请求或只允许在地理位置白名单内的IP请求。

还有一种情况,某些伪造的数据包可能来自与内部网络地址,可以利用BCP38通过硬件过滤也可以清除异常来源地址的请求。BCP38对于提供DNS解析的服务提供商也相当有用,可以避免用户向外发送攻击或受到内部地址请求的攻击,过滤用户并保证其数据传输。

4、提供余量带宽

如果服务器日常需要处理的DNS通信量达到了X Gbps,请确保流量通道不止是日常的量,有一定的带宽余量可以有利于处理大规模攻击。结语,目前针对DNS的攻击已成为最严重的网络威胁之一。目前越来越多的大型网站注重DNS保护这一块。为保障网站安全,保障网站利益,选择高防型的DNS为自己的域名进行解析已经迫在眉睫。

5、提高服务器的服务能力

首先你服务尽量不要全都部署在同一台服务器上面,你可以实现多台机器的集群部署,这样的的话就可以保证不会一个服务器出现的失败的情况导致所有用户都没有办法正常使用,其实就是部署服务器的时候,你可以采用多地部署的形式,这样就不会容易出现全面瘫痪的情况,然后在排查错误的时候也比较容易排查,其实就是做好对应的负载均衡策略,通过将请求平均到集群中的每一台服务器,可以有效地降低单台服务器的压力,从而提高服务器集群的抗压能力。

6、实现对于应用的动态监控

使用一些监控工具监测网络以及web的流量变化,以及单位时间内的请求数量,如果出现突增情况需要及时进行处理。

7、使用付费服务以及第三平台服务

订购一些服务器保护服务以及保护工具,比如使用阿里云、腾讯云等公司的服务器防护工具,即高防,从而实现对于服务器的保护,这样的效果可能比较好,就比如你开一个店,请几个保安帮你看店一样,虽然耗费比较高,但是其防护效果还是挺不错的。

7. 什么是 XSS 攻击,如何避免?

XSS 攻击也是比较常见,XSS,叫跨站脚本攻击(Cross-Site Scripting) ,因为会与层叠样式表 (Cascading Style Sheets, CSS) 的缩写混淆,因此有人将跨站脚本攻击缩写为 XSS。它指的是恶意攻击者往 Web 页面里插入恶意 html 代码,当用户浏览网页的时候,嵌入其中 Web 里面的 html 代码会被执行,从而达到恶意攻击用户的特殊目的。

XSS 攻击一般分三种类型:存储型 、反射型 、DOM 型 XSS

8. XSS是如何攻击的呢?

简单说,XSS的攻击方式就是想办法“教唆”用户的浏览器去执行一些这个网页中原本不存在的前端代码。

拿反射型举个例子吧,流程图如下:

  1. 攻击者构造出特殊的 URL,其中包含恶意代码。
  2. 用户打开带有恶意代码的 URL 时,访问正常网站服务器
  3. 网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。
  4. 用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行,请求恶意服务器,发送用户数据
  5. 攻击者就可以窃取用户的数据,以此冒充用户的行为,调用目标网站接口执行攻击者指定的操作。

9. 如何解决 XSS 攻击问题?

这个比较容易,因为攻击者一般会把攻击藏在请求中,也是在输入中,所以解决方式很简单,就是对用户的所有输入都进行校验就可以了。

  • 对输入进行过滤,过滤标签等,只允许合法值。
  • HTML 转义
  • 对于链接跳转,如<a href="xxx" 等,要校验内容,禁止以 script 开头的非法链接。
  • 限制输入长度

10. 我们来浅浅聊一下 MD 5 算法 ?

首先我们要明确一件事情MD5是一种散列函数,用于生成一个固定长度,固定值的消息摘要算法,严格上来说并不是一种加密算法。他的作用是对原始数据进行压缩,用来生成一个固定长度的字符串作为该数据的数字指纹,用来验证数据的完整性以及一致性。

加密算法需要加密和解密,MD5是单向的,不可逆,所以是无法通过解密得到原始数据的。

但是 MD 5 算法并不是绝对安全的,因为 MD 5 算法生成的哈希值是固定的,根据泊松分布,哈希值固定的话,其是会存在 “碰撞” 的情况的,即两个不同的消息,其经过哈希函数运算之后,其生成的哈希值可能是相同的,所有如果需要保证数据高度安全的场景,用 MD 5 算法的安全性是很难保证的。

因此,对于安全性要求非常高的场景,我这里推荐使用鱼皮 API 接口开放平台用于制作数字签名的加密算法

SHA-256 加密算法。

什么是 SHA-256 算法?

sha 256 是一种密码散列函数,所以常常被用于对数据进行签名或生成信息摘要。

与其他散列算法一样,SHA-256在进行操作时不能逆向解密。SHA-256生成的消息摘要长度为256位,其基本上不会发生碰撞,这也这使得其非常适合于加密数字签名。

为什么不会碰撞?

因为SHA-256在生成消息摘要时,使用了大量的位运算、逻辑运算和移位运算等,并且消息摘要长度非常长,因此生成的消息摘要具有很强的随机性。在实际应用中,发生碰撞的概率极低,几乎不可能发生。因此,SHA-256是一种可靠的安全哈希算法,但是根据抽屉原理,任何一种加密算法,只要你的运算力是足够的,其都是可以实现破解的,所以,没有绝对没办法破解的情况,只是其破解概率比较小而已。

11. 对称加密和非对称加密之间有什么区别?

对称加密:指加密和解密使用同一密钥,优点是运算速度较快,缺点是如何安全将密钥传输给另一方。常见的对称加密算法有:DES、AES 等。

非对称加密:指的是加密和解密使用不同的密钥(即公钥和私钥)。公钥与私钥是成对存在的,如果用公钥对数据进行加密,只有对应的私钥才能解密。常见的非对称加密算法有 RSA。

12. RSA和AES算法有什么区别?

  • RSA采用非对称加密的方式,采用公钥进行加密,私钥解密的形式。其私钥长度一般较长,由于需要大数的乘幂求模等运算,其运算速度较慢,不合适大量数据文件加密。
  • AES采用对称加密的方式,其秘钥长度最长只有256个比特,加密和解密速度较快,易于硬件实现。由于是对称加密,通信双方在进行数据传输前需要获知加密密钥。

13. 简单聊一下 SQL 注入?SQL 注入是怎么进行攻击的?

SQL注入是最经典的安全问题。无论你是前端开发还是后端开发,都必须掌握的。

SQL注入是一种代码注入技术,一般被应用于攻击web应用程序。它通过在web应用接口传入一些特殊参数字符,来欺骗应用服务器,执行恶意的SQL命令,以达到非法获取系统信息的目的。它目前是黑客对数据库进行攻击的最常用手段之一。

那SQL 注入是怎么进行攻击的呢?

举个常见的业务场景:在web表单搜索框输入员工名字,然后后台查询出对应名字的员工。

这种场景下,一般都是前端页面,把一个名字参数name传到后台,然后后台通过SQL把结果查询出来

name = "田螺"; //前端传过来的
SQL= "select * from staff where name=" + name;  //根据前端传过来的name参数,查询数据库员工表staff

因为SQL是直接拼接的,如果我们完全信任前端传的参数的话。假如前端传这么一个参数时'' or '1'='1',SQL就变成酱紫的啦。

select * from staff where name='' or '1'='1';

这个SQL会把所有的员工信息全都查出来了,酱紫就请求用户已经越权啦。请求者可以获取所有员工的信息,信息已经暴露了啦。

14. 如何预防 SQL 注入问题?

  1. 使用#{}而不是 ${}

在MyBatis中,使用 #{} 而不是 ${} ,可以很大程度防止sql注入。(Go 和 C++ 的 ORM 框架都有对应的解决方法,这里就不做过多的赘述了)

  • 因为 #{} 是一个参数占位符,对于字符串类型,会自动加上"",其他类型不加。由于Mybatis采用预编译,其后的参数不会再进行SQL编译,所以一定程度上防止SQL注入。
  • ${}是一个简单的字符串替换,字符串是什么,就会解析成什么,存在SQL注入风险
  1. 不要暴露一些不必要的日志或者安全信息,比如避免直接响应一些sql异常信息。
  • 如果SQL发生异常了,不要把这些信息暴露响应给用户,可以自定义异常进行响应
  1. ****不相信任何外部输入参数,过滤参数中含有的一些数据库关键词关键词
  • 可以加个参数校验过滤的方法,过滤union,or等数据库关键词
  1. 适当的权限控制
  • 在你查询信息时,先校验下当前用户是否有这个权限。比如说,实现代码的时候,可以让用户多传一个企业Id什么的,或者获取当前用户的session信息等,在查询前,先校验一下当前用户是否是这个企业下的等等,是的话才有这个查询员工的权限。

15. 简单聊一下防盗链

盗链是指服务提供商自己不提供服务的内容,通过技术手段(可以理解成爬虫)去获取其他网站的资源展示在自己的网站上。常见的盗链有以下几种:图片盗链、音频盗链、视频盗链等。

网站盗链会大量消耗被盗链网站的带宽,而真正的点击率也许会很小,严重损害了被盗链网站的利益。

被盗网站就自然会防盗链,可以通过经常更换图片名,也可以通过检测referer。因为正常用户访问一张图片一定是从自己的网站点击链接进去的,如果一个请求的referer是其他网站,就说明这是一个爬虫。

什么是 Referer?

这里的 Referer 指的是 HTTP 头部的一个字段,也称为 HTTP 来源地址(HTTP Referer),用来表示从哪儿链接到目前的网页,采用的格式是 URL。换句话说,借着 HTTP Referer 头部网页可以检查访客从哪里而来,这也常被用来对付伪造的跨网站请求。

盗链网站会针对性进行反盗链,可以通过在请求的headers中设置referer来绕过防盗链,我们现在使用爬虫抓取别人的网站也是这样。

什么是空 Referer,什么时候会出现空 Referer?

首先,我们对空 Referer 的定义为,Referer 头部的内容为空,或者,一个 HTTP 请求中根本不包含 Referer 头部。

那么什么时候 HTTP 请求会不包含 Referer 字段呢?根据 Referer 的定义,它的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源。

比如,直接在浏览器的地址栏中输入一个资源的 URL 地址,那么这种请求是不会包含 Referer 字段的,因为这是一个 “凭空产生” 的 HTTP 请求,并不是从一个地方链接过去的。

16. 简单聊一下中间人攻击?

中间人攻击是什么?

密码学计算机安全领域中,中间人攻击(Man-in-the-middle attack,缩写:MITM)是指攻击者与通讯的两端分别建立独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。在许多情况下这是很简单的(例如,在一个未加密的Wi-Fi ****无线接入点的接受范围内的中间人攻击者,可以将自己作为一个中间人插入这个网络)。

上面说了很多,我来总结一下,简单来说,攻击者是一个中介,攻击者可以知道通信双方的所有通信内容,而且可以任意增加、删除、修改双方的通信内容,而双方对此并不知情,就像你买房子找中介一样,中介知道你的情况,然后售楼的情况中介也知道,中介可以随时对房子的信息进行修改,然后你们双方不一定知道自己收到的信息是否被修改了。

这里举一个通俗易懂的例子帮你理解一下:

  1. 假设 Tom 想和 Jerry 交换一些秘密信息,然而 Tom 又不想跑到 Jerry 家里,于是 Tom 叫来了邮递员,给了邮递员一封信。信的内容是希望 Jerry 给 Tom 一个盒子(这个盒子有两把钥匙)和其中一把钥匙(另一把在 Jerry 手里)。
  2. 邮递员在拿到 Tom 给的信件以后,把 Tom 的信拆开看了一遍,了解到 Tom 希望 Jerry 给 Tom 一个有锁的盒子,又用另一个信封装了回去,并交给了 Jerry。
  3. Jerry 在收到 Tom 的信(实际已经被邮递员拆阅过了)之后,给了邮递员一个有锁的盒子和其中一把钥匙。
  4. 邮递员想知道他们的通信内容,于是他把 Jerry 给 Tom 的盒子换成了他自己的盒子,并附上了自己盒子中的一把钥匙,并在之后将自己的盒子交给了 Tom。
  5. Tom 在收到盒子之后,以为这个盒子是 Jerry 给他的,于是就把秘密的信件放进了盒子里,并把钥匙留下了,之后又交给了邮递员。
  6. 邮递员在拿到盒子之后,用自己的另一把钥匙打开盒子,看了里面的信件。之后将信件调换之后放进了 Jerry 给的盒子,交给了 Jerry。
  7. Jerry 在拿到邮递员给他的盒子之后,并不知道这个盒子里的信件其实已经被邮递员调换过了,所以 Jerry 认为盒子里的信件是来自 Tom 且未被修改过的。之后 Jerry 把回信放进了盒子里,又交给了邮递员。
  8. 邮递员再次调换盒子里的信件,交给了 Tom。

这个过程就是一个典型的中间人攻击的过程,在这个过程中,类比在 HTTPS,Tom 就是客户端,Jerry 是服务端,而邮递员就是客户端和服务端之间的任何实体(包括代理服务器、路由器、反向代理服务器等等),两把钥匙分别是公钥和私钥。通信双方并不知道(且通常很难发觉)自己其实在和中间人通信而非直接和对方通信。在通信过程中,Tom 和 Jerry 并没有验证对方的身份,这就导致了邮递员可以任意查看、修改或者丢弃双方的通信内容。、

总结一下,整个过程大概如下:

  1. 服务器向客户端发送公钥,中间人、截取到服务端的公钥信息
  2. 中间人伪造身份,骗取服务端的私钥
  3. 中间人冒充服务端与客户端通信,并骗取客户端公钥与私钥
  4. 最后就是中间人冒充客户端与服务端实现通信或者冒充服务端和客户端通信

常见的中间人攻击方式

中间人方式攻击的原理很简单,就是通过拦截正常的网络通信数据,从而进行数据修改,这个过程双方都是不知道的,就容易产生消息不对等的情况。

  1. WIFI 欺骗

中间人创建一个和本地 WIFI 同名的虚拟 WiFi 接入点(AP),如果你连接上了虚假的 Wifi ,那么你的一切网络行为都会暴露在中间人的监控下。

  1. HTTPS 欺骗

攻击者通过欺骗您的浏览器,使您认为自己访问的是可信任站点,这样当你输入和该站点相关的登录凭据时,您的流量就会被重定向到攻击者自建的非安全站点处。

  1. SSL 劫持

当你访问的网站不是 https:// 加密的站点的时候,你的浏览器通常会帮助你重定向到 https:// 站点,此时,攻击者便可以劫持这个重定向的过程,将自己的服务器连接植入到这个过程中。从而获取你的敏感数据以及输入的所有信任凭据。

  1. DNS 欺骗

为了方便直接访问一些网站,本地通常会对对应网站的域名进行缓存,这个过程就是之前的说说的 DNS 缓存,DNS 欺骗和 DNS 污染有点像,其会迫使你的浏览器在攻击者的控制下,自动去访问一些伪造的网站,从而获取你的网站信息。

  1. 电子邮件劫持

如果攻击者获得了受信任机构(例如银行)的邮箱、甚至是邮件服务器的访问权限,那么他们就能够拦截包含敏感信息的客户电子邮件,甚至以该机构的身份发送各种电子邮件。

17. 简单聊一下撞库、拖库以及洗库?

撞库、拖库、洗库可以说是数据库黑客的三件套,这一道题我们就简单对这三种方式进行对比。

什么是撞库?

撞库 是黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,主要是很多用户在不同网站上使用的是相同的账号和密码,所以黑客可以通过获取用户在A网站的账户从而尝试登录B网址,批量尝试登陆其他网站后,从而得到一系列可以登录的用户。

说简单点,就是这时候你在你家小区门口掉了一串钥匙,很不幸,这串钥匙被一个小偷拿到了,这个小偷拿着这串钥匙去挨家挨户地进行开锁尝试。

什么是洗库?

“洗库” 是指黑客在入侵一个网站后,通过数据采集、记录等技术手段,将有价值的用户数据进行收集以及分析,然后将获取到的用户数据进行交易。

这里举一个例子,就是一个小偷去博物馆偷文物, 他把有价值的文物都偷走了,然后反手将他转卖给其他买家,这就是一个很典型的洗库的例子。

什么是拖库?

"拖库" 这个就很简单理解,就是黑客攻击或者入侵你的网站,然后到你的数据库中获取你数据库中的所有信息。

这个就和小偷偷东西是一样的。

拖库的步骤通常如下所示:

  1. 黑客首先对想要攻击的网站进行 360 度无死角的扫描,找出网站所具有的漏洞,比如常见的 SQL 注入,文件上传漏洞,XSS 漏洞等等;
  2. 找到网站的漏洞之后,通过在网站服务器上建立“后门(webshell)”,然后通过该后门获取到操作系统的权限
  3. 获取到权限之后,就利用系统权限到你的数据库中下载备份数据,或者查找对应的数据库连接,与对应的数据库建立起连接,然后将数据库中的数据导入到本地。

黑客如果要进行拖库的话,首先就得找到网站本身的漏洞,然后利用网络的漏洞来实现入侵,最常见的入侵方式就是利用网络的漏洞来对网站进行攻击,比如网站自身的漏洞,网站使用的开源框架的漏洞,网站使用的数据库的漏洞(前端时间的 ChatGPT 用户信息漏洞就是由于 Redis 的漏洞导致)等网站漏洞,甚至黑客还可能利用一些系统漏洞,比如在特定的网站上挂木马,如果网站管理员在维护系统的时候不小心访问到这些网站,就可能被植入木马,也会引发后续的拖库风险。

18. 简单讲述一下越权漏洞问题?

什么是越权漏洞问题?

越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第二名。

该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。在实际的代码审计中,这种漏洞往往很难通过工具进行自动化监测,因此在实际应用中危害很大。其与未授权访问有一定差别,目前存在着两种越权操作类型,横向越权操作(水平越权)和纵向越权操作(垂直越权)

什么是水平越权和垂直越权?

  • 水平越权:指相同权限下不同的用户可以互相访问

比如,你在一个用户管理系统中,你可以通过 uid 查询用户信息(如用户的身份证信息、家庭地址等经过数据脱敏后的敏感信息),然后如果此时数据库使用的是自增 id 的主键增长策略的话。攻击者就可以通过利用自己的 uid 向上进行递增或者递减的情况进行对其他用户信息的试探性查询,从而导致用户信息的泄露。

  • 垂直越权:指使用权限低的系统可以访问到权限较高的用户

垂直越权一般是指攻击者越过本身自己的权限去进行更高权限的操作,比如普通用户盗取管理员账号进行管理员权限的操作,比如修改其他用户已信息、删除用户等类似的行为。

越权测试过程

那对此有什么测试方法可以查看是否自己设计的系统是否存在越权问题呢?

  1. 首先我们说一下两种权限测试的思路:
  • 水平越权:用于用户权限是同级的,所以可以通过查看 A 用户的操作是否影响到 B 用户即可
  • 垂直越权 可以查看一下,低权限用户可不可以执行高权限用户的操作,最常见的就是普通用户可不可以使用管理员的功能
  1. 说完以上测试的思路后,我们就可以来进行测试:
  • 登录普通用户 A,进行正常的增删改查操作,然后抓取数据包,通过将数据包中传参 ID 修改为其他用户的ID进行尝试,如果可以查看到其他用户的信息或者修改了其他用户的信息,那么该测试就属于水平越权测试

传参 ID 这个需要根据抓取数据包的实际情况进行检测和修改,常见的传参 ID 字段有 uid,id,user等,通常可以使用 burp 进行爆破传参(传参可能也在 get post cookie 中),这里列举几个常见的越权漏洞连接:

  1. 通过修改get传参来进行越权:wy.zone.ci/bug_detail.…
  2. 通过修改post传参来进行越权: wy.zone.ci/bug_detail.…
  3. 通过cookie传参来进行越权 :www.uedbox.com/post/12566/

抓取参数可以在浏览器、app、应用程序(exe)

这里最后列举一下常见的越权测试案例:

  • 不需要输入原密码的修改密码
  • 抓包改用户名或者用户id修改他人密码
  • 修改资料的时候修改用户 id
  • 查看订单的时候,遍历订单 id

19. 简单聊一下欺骗攻击?

什么是欺骗攻击?

欺骗就像犯罪本身一样古老,骗子们使用狡诈的方法来欺骗人们,以使自己获得非法利益。在现实世界中,这种行为长期以来一直是犯罪活动的主流,而现在已经深入到了虚拟世界。

欺骗攻击是描述一种行为类型的广义术语,是指网络罪犯试图伪装成可信任的用户或设备,从而欺骗您做一些对黑客有利、对自己不利的事情。

常见的欺骗攻击方式

欺骗攻击的方式有很多,这里我就列举几个常见的欺骗攻击手段,帮助大家简单了解一下欺骗攻击:

  1. 电子邮件欺骗

电子邮件欺骗是最广泛使用的一种攻击手段,通常涉及到要求提供个人数据或进行财务交易。这些电子邮件似乎是来自可信任的发件人(例如客户、同事或经理),但实际上来自网络罪犯,他们故意掩饰自己以获取您的信任,并且通过他们希望您采取的行动来提供帮助。请求的目标可能是一笔汇款,或者是访问系统的权限。

此外,欺骗电子邮件有时还包含附件,一旦打开就会安装恶意软件,例如木马病毒。在许多情况下,恶意软件的设计并不只是为了感染您的计算机,而是要扩散到您的整个网络。

在这一方面,欺骗攻击很大程度上依赖于社交工程,它能说服用户本人相信他们看到的内容是合法的,提示他们采取行动并打开附件、完成转账等等。

  1. IP 欺骗

电子邮件欺骗是以用户为中心,而 IP 欺骗则主要面向网络。

IP 欺骗是指攻击者试图发送带有虚假或“欺骗性”IP 地址的消息,使其看起来像是来自可靠来源的消息(例如相同内部计算机网络上的来源),从而对系统进行非法访问。

网络罪犯实现这一点的方法是:获取某个合法主机的 IP 地址,并改变从其自己的系统发出的数据包标头,以使其显示为来自原始、可信任的计算机。

基本上,劫持浏览器的骗子可以将来自合法网站的访客转移到外观类似的欺诈性网站。随后,该网站将截取访客的个人和付款信息。这被称为网站欺骗。

  1. 防御欺骗

在许多方面与防御与网络犯罪一样,自我保护的基本原则是增强安全意识。信任通常都是一件好事,但是盲目信任(尤其是在虚拟世界)并不可取,并且通常都很危险。

如果您对某封电子邮件的合法性存在疑问,请拨打电话以确认信息是否准确,并且真正来自该发件人。

在访问网站时,请特别留意网站的外观和行为。

如果有任何内容看上去可疑,请退出该网站,并且不要共享任何个人信息。如果您真的需要与该公司打交道,可以直接与其联系。

同时,强烈建议您部署功能强大的安全解决方案(例如由 Kaspersky Lab 开发的解决方案)。

强大的互联网安全软件可以保护您避开欺诈性网站,并在恶意软件试图攻击您的系统时尽快将其消除。