常见漏洞及其原理(面试)

ARP欺骗

每台主机都有一个ARP缓存表,缓存表中记录了IP地址与MAC地址的对应关系,而局域网数据传输依靠的是MAC地址。

在ARP缓存表机制存在一个缺陷
就是当请求主机收到ARP应答包后,不会去验证自己是否向对方主机发送过ARP请求包,就直接把这个返回包中的IP地址与MAC地址的对应关系保存进ARP
缓存表中,如果原有相同IP对应关系,原有的则会被替换。这样攻击者就有了偷听主机传输的数据的可能。

ARP欺骗防护

1)在主机绑定网关MAC与IP地址为静态(默认为动态),命令:arp-s网关
IP网关MAC
2)在网关绑定主机MAC与IP地址
3)使用ARP防火墙

CSRF 、SSRF 的区别

【CSRF】

是服务器端没有对用户提交的数据进行严格的把控,导致攻击者可以**利用用户的Cookie信息伪造用户请求**发送至服务器

XSS是实现CSRF的诸多途径中的一条,但并不是唯一的一条

【SSRF】

是服务器对用户提供的可控URL地址过于信任,没有经过严格检测,导致攻击者可以以此为跳板攻击内网或其他服务器。

因为它是由服务端发起的,所以它能够请求到与它相连但与外网隔离的内部系统。由于服务端提供了从其他服务器应用获取数据的功能(例如分享等功能)且没有对目标地址做过滤与限制,给予了攻击者乘虚而入的机会。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。

【重放攻击】

重放攻击是将已经截获的数据包进行重放,达到身份认证等目的。

CSRF、XSS 区别

CSRF攻击不需要将恶意代码注入用户的页面,仅仅是利用服务器的漏洞和用户的登录状态来实施攻击。

CSRF攻击成本也比XSS低,用户每天都要访问大量网页,无法确认每一个网页的合法性,从用户角度来说,无法彻底防止CSRF攻击。

SSRH

SSRF漏洞成因、防御、绕过

【成因】:模拟服务器对其他服务器资源进行请求,没有做合法性验证。
【利用】:构造恶意内网IP做探测,或者使用其余所支持的协议对其余服务进行攻击。
【防御】:禁止跳转,限制协议,内外网限制,URL限制。
【绕过】:使用不同协议,针对IP,IP格式的绕过,针对URL,恶意URL增添其他字符,@之类的。301跳转+dns rebindding。

SSRH 漏洞验证方法

因为SSRF漏洞是让服务器发送请求的安全漏洞,所以就可以通过抓包分析发送的请求是否由服务器所发送的,从而来判断是否存在SSRF漏洞

CSRF

什么是CSRF攻击
CSRF 称为“跨站请求伪造”,就是黑客引诱用户打开黑客的网站,利用用户的登陆状态发起跨站请求。

降维解释:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户
验证,达到冒充用户对被攻击的网站执行某项操作的目的。

CSRF攻击一般怎么实现

1)最容易实现的是Get请求,一般进入黑客网站后,可以通过设置img的src属
性来自动发起请求
2)在黑客的网站中,构造隐藏表单来自动发起Post 请求
3)通过引诱链接诱惑用户点击触发请求,利用a标签的href

应该如何防范CSRF攻击

1)针对实际情况,设置关键 Cookie 的SameSite属性为Strict或Lax
2)服务端验证请求来源站点(Referer、Origin)
3)使用CSRF Token,服务端随机生成返回给浏览器的Token,每一次请求都携带不同的CSRF Token

文件上传 漏洞

由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件。

文件上传漏洞绕过方法

前端Js绕过、黑白名单绕过、文件类型绕过(mime、文件头、文件内容)、路径截断绕过(00截断)、中间件解析漏洞、条件竞争、二次渲染、编辑器漏洞

文件上传防御方法

上传目录的用户执行权限全部取消、判断文件类型、使用随机数改写文件名和文件路径、网站服务器和文件服务器分离、白名单检查、限制文件大小

SQl注入

sql注入种类:

按【数据的传递方式】可以分为:   get注入、post注入、cookie注入
根据【注入点类型】分类:        数字型、字符型
根据【执行效果】分类:          有回显的注入、盲注、报错注入、堆叠注入、宽字节注入

sql注入能做什么?

绕过登录验证,比如说使用万能密码登录网站;获取网站管理员账号密码;读取文件、写入webshell等。

sqlmap常用参数

-u(指定 url)
-r(读取需要注入的post 请求的文本)
-m(批量跑get 注入)
-p(指定注入参数)
-current-db:(获取当前数据库)
--table(枚举数据库表)
--tamper(使用过waf脚本)

PHP注入

PHP注入会使攻击者执行任意代码getshell从而控制网站或服务器。

系统注入会使攻击者继承web服务器程序权限执行系统命令、读写文件、反弹shell从而控制整个网站甚至服务器。

XXE

原理:

XXE(XML外部实体注入,可扩展标记语言 XML 被设计用来传输和存储数据)

在应用程序解析XML输入时,当允许引用外部实体时,可构造恶意内容,导致读取任意文件、探测内网端口、攻击内网网站、发起DoS拒绝服务攻击、执行系统命令等。

Java中的XXE支持sun.net.www.protocol 里的所有协议:http,https,file,ftp,mailto,jar,netdoc。一般利用file协议读取文件,利用http协议探测内网。

防御:

配置XML处理器使用禁用DTD、禁止外部实体解析、通过黑名单过滤用户提交的XML 数据。

XSS

如何验证存在xss漏洞

XSS漏洞的原理是:

插入语句、改变结果、操纵数据

攻击者在有漏洞的前端页面嵌入恶意代码,导致受害者访问页面时不知情的情况下触发恶意代码,获取受害者关键信息。
形成XSS漏洞的原因本质上还是前端对输入输出的过滤限制不严格,导致精心构造的脚本输入后,在前端被当做有效代码并执行。

本质是:

用户输入的 html 语句直接输出,包括了使用不正确的方法去验证
挖掘XSS的【第一步】是找输入,也就是用户可以操控代码的位置;
【第二步】是找输出,也就是找到第一步用户输入的代码在网页的何处地方进行了输出;
【第三步】:构造payload, 通过查看源代码,构建出payload。

XSS有哪些类型:

【反射型XSS】(也叫非持久型):恶意JavaScript脚本属于用户发送给网站请求中的一部分,随后网站又将这部分返回给用户,恶意脚本在页面中被执行。
一般发生在前后端一体的应用中,服务端逻辑会改变最终的网页代码。这种攻击方式往往具有一次性

【储存型XSS】
存储型XSS又称持久型XSS,攻击脚本将被永久地存放在目标服务器的数据库或文件中,具有很高的隐蔽性。
攻击方式:这种攻击多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器的后端存储器中。当其他用户浏览这个被注入了恶意叫你本的帖子时,恶意脚本会在他们的浏览器中得到执行。

【DOM型XSS】
DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。
攻击方式:用户请求一个经过专门设计的URL,它由攻击者提交,而且其中包含XSS代码。服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。

XSS 可以被黑客用来做哪些事情?

盗取用户Cookie、未授权操作、修改DOM、刷浮窗广告、发动XSs蠕虫攻击、劫持用户行为,进一步渗透内网。

XSS攻击如何进行防护

1)将HTML元素内容、属性以及URL请求参数、CSS值进行编码
2)当编码影响业务时,使用白名单规则进行检测和过滤
3)使用W3C提出的CSP(Content Security Policy,内容安全策略),定义域名
4)设置Cookie的HttpOnly属性。

盲注

盲注是什么,怎么盲注

盲注是在SQL注入攻击过程中,服务器关闭了错误回显,我们单纯通过服务器返回内容的变化来判断是否存在SQL注入和利用的方式。
盲注的手段有两种:
一个是通过页面的返回内容是否正确(boolean-based),来验证是否存在注入;
一个是通过sql语句处理时间的不同来判断是否存在注入(time-based),可以用benchmark,sleep等造成延时效果的函数
也可以通过构造大笛卡儿积的联合查询表来达到延时的目的。

宽字节注入

1)产生原理:

在数据库使用了宽字符集而WEB中没考虑这个问题的情况下,由于OXBF27是两个字符,
在PHP中addslash和magic_quotes_gpc开启时,会对0×27单引号进行转义,因此0xbf27会变成0xbf5c27。
而数据进入数据库中时,由于OXBF5C是一个另外的字符,
因此转义符号会被前面的bf带着“吃掉”,单引号由此逃逸出来可以用来闭合语句。

2)根本原因:

character_set_client(客户端的字符集)和character_set_connection(连接层的字符集)不同,或转换函数
如,iconv、mb_convert_encoding使用不当。

3)解决办法:

统一数据库、Web应用、操作系统所使用的字符集,避免解析产生差异,最好都设置为UTF-8。或对数据进行正确的转义,
如,mysql_real_escape_string+mysql_set_charset的使用。

DDOS

ddos攻击如何去防范?

目前对于低网络层的DDoS攻击有一些有效的防护手段,如丢弃第一次SYN包.上流量防护设备,上WAF封禁地址等。
比较难缠的是第七层,第八层的CC攻击,它会找到目标网站上比较消耗资源的关键位置,重复发起攻击以消耗CPU/内存/数据库IO等资源

目前的应付手段有:优化资源消耗高位置的代码,增加硬件设备,上云,购买专业安全公司的安全服务。

除此之外,隐藏服务器的真实IP、上云WAF、CDN、负载均衡等设备,或者暂时将域名解析到公安网警网站等也是可以作为选择方案。

OWASP top10

owasp漏洞都有哪些

1)SQL注入防护方法
2)失效的身份认证和会话管理
3)跨站脚本攻击XSS
4)直接引用不安全的对象
5)安全配置错误
6)敏感信息泄露
7)缺少功能级的访问控制
8)跨站请求伪造CSRF
9)使用含有已知漏洞的组件
10)未验证的重定向和转发

一句话木马

ASP:<%eval request(“cmd)%>
ASP.NET:(aspx)
<%@ Page Language=“Jscript”%>
<%eval(Request.Item[“cmd”],“unsafe);%>
PHP:<?php @eval($_REQUEST['cmd]);?>

常见挖矿木马

如何排查?

首先挖矿木马是占用系统资源进行挖矿行为,常见的遭遇挖矿会有以下行为:

1)系统响应缓慢
2)CPU/显卡使用率过高
3)内存/带宽占用高

登录进可疑主机后,可以通过以下方式确认挖矿木马:

1)查看进程(系统命ps、ls令有可能被替换)
2)检查日志、检查系统用户
3)发现异常文件

token

token是什么

就是用来区别请求是来自用户本身还是他人伪造的一个好办法。当用户在登录时,服务器生成一个 token 发送给[客户端]
客户端把这个 token存在内存中或者本地,每次请求都带上这个 token,服务器接收到这个 token 并验证合法性,合法即继续执行请求,非法即拦截请求,不予执行。

由于浏览器的[同源策略]的限制,攻击者的页面无法跨域得到用户页面接收到的token,所以攻击者的请求肯定是无法给出合法的 token 的,由此服务器可以判断请求到底是用户自己发出的,还是以用户的名义被伪造发出的。从而防范 CSRF 攻击。

针对token 攻击,你会对token的哪方面进行测试

针对token的攻击,一是对它本身的攻击,重放测试一次性、分析加密规则、校验方式是否正确等,
			  二是结合信息泄露漏洞对它的获取,结合着发起组合攻击。
				信息泄露有可能是缓存、日志、get,也有可能是利用跨站。很多跳转登录的都依赖token,有一个跳转漏洞加反射型跨站就可以组合成登录劫持了。
			  另外也可以结合着其它业务来描述token的安全性及设计不好怎么被绕过 比如,抢红包业务之类的。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>