十大常见漏洞<6-10>
6️⃣CSRF(跨站请求伪造 )
原理
攻击者利用目标用户的身份,执行某些非法的操作
- 跨站点的请求:请求的来源可以是非本站
- 请求是伪造的:请求的发出不是用户的本意
危害
• 篡改目标站点上的用户数据
• 盗取用户隐私数据
• 作为其他攻击的辅助攻击手法
• 传播 CSRF 蠕虫
防御
1、检查HTTP Referer是否是同域
2、限制Session Cookie的生命周期,减少被攻击的概率
3、使用验证码
4、使用一次性token
7️⃣SSRF(服务器端请求伪造)
原理
SSRF(Server-Side Request Forgery):服务器端请求伪造,该漏洞通常由攻击者构造的请求传递给服务端,服务器端对传回的请求未作特殊处理直接执行而造成的。
SSRF
危害
• 扫描内网(主机、端口)
• 向内部任意主机的任意端口发送精心构造的payload
• 攻击内网的Web应用
• 读取任意文件
• 拒绝服务攻击
防御
• 统一错误信息,避免用户根据错误信息来判断远程服务器的端口状态
• 限制请求的端口为http的常用端口,比如:80、443、8080等
• 禁用不需要的协议,仅允许http和https
• 根据请求需求,可以将特定域名加入白名单,拒绝白名单之外的请求
• 后台代码对请求来源进行验证
8️⃣XXE(XML外部实体注入)
原理
XXE漏洞全称为 XML External Entity Injection,即XML外部实体注入
XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载, 导致用户可以控制外部的加载文件,造成XXE漏洞。
危害
• 任意文件读取
• 内网端口探测
• 拒绝服务攻击
• 钓鱼
RCE
RCE(Remot Command/Code Execute),远程命令/代码执行
远程命令执行:用户可以控制系统命令执行函数的参数,也称命令注入
远程代码执行:用户输入的参数可以作为代码执行,也称代码注入
命令执行可以看作是一种特殊的代码执行,代码执行相对会更加灵活
9️⃣远程命令执行漏洞
原理
应用程序中有时会调用一些系统命令函数,比如php中使用system、exec、shell_exec等 函数可以执行系统命令,当攻击者可以控制这些函数中的参数时,就可以将恶意命令拼接 到正常命令中,从而造成命令执行攻击。
命令执行漏洞,属于高危漏洞之一,也可以算是一种特殊的代码执行
命令注入漏洞产生原因有两点
1、用户可以控制输入的内容
2、用户输入的内容被当作命令执行
防御方式
尽量不要使用命令执行函数
客户端提交的变量在进入执行命令函数方法之前,一定要做好过 滤,对敏感字符进行转义
在使用动态函数之前,确保使用的函数是指定的函数之一
对PHP语言来说,不能完全控制的危险函数最好不要使用
🔟反序列化漏洞
原理
原因是程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列安全问题。
反序列化
危害
• 不安全的反序列化,主要造成的危害是远程代码执行
• 如果无法远程代码执行,也可能导致权限提升、任意文件读取、拒绝服务攻击等
防御方式
• 应该尽量避免用户输入反序列化的参数
• 如果确实需要对不受信任的数据源进行反序列化,需要确保数据未被篡改,比如使用数字签名来检查数据的完整性
• 严格控制反序列化相关函数的参数,坚持用户所输入的信息都是不可靠的原则
• 对于反序列化后的变量内容进行检查,以确定内容没有被污染
• 做好代码审计相关工作,提高开发人员的安全意识