常见Web漏洞及其防御手段

SQL注入

SQL注入原理

        用户通过可控参数注入SQL语法,破坏原有SQL结构,达到编写程序时意料之外结果的攻击行为

SQL注入成因

        开发者在处理程序和数据库交互时,使用字符串拼接的方式构造SQL语句

        未对用户可控参数进行足够过滤,便将参数内容拼接到SQL语句中

SQL注入危害

        获取数据库信息,

        特殊情况下可对数据库内容进行增删改查,

        如果还存在权限问题话可以直接GetShell(sqlmap -os-shell)

SQL分类

        数字型,字符型

SQL注入基本手法

        联合查询

        报错注入

        布尔盲注

        延时注入

        堆叠查询

SQL注入防御

        避免使用拼接的方式构造SQL语句,可以采用预编译等技术;

        对进入SQL语句的参数进行足够过滤

        部署安全设备,比如WAF

XSS注入

XSS注入原理

        攻击者将自己构造的代码注入到网页中,由浏览器运行这段JS代码,以达到恶意攻击的效果,当用户访问浏览器的时候,浏览器执行这段代码,用户就被攻击了

XSS注入危害

        盗用账号

        窃取用户Cookie资料,冒充用户身份进入网站

       劫持用户会话执行任意操作

        刷流量

        传播蠕虫病毒

XSS注入分类

        反射型

        存储型

        DOM型

XSS注入防御

        黑白名单策略

        输入过滤

        输出编码

$keywords = htmlspecialchars( $_GET[ 'keywords' ] );

        防御DOM型XSS

                        避免客户端文档重写,重定向或其他敏感操作

        

CSRF 跨站请求伪造

CSRF原理

        强制浏览器客户端用户在当前对其身份验证后的Web应用程序上执行非本意操作的攻击,攻击的重点在于更改状态的请求,而不是盗取数据

CSRF关键点

        受害者没有退出登陆,受害者保持身份认证

CSRF防御

        验证referer字段:

        二次验证:在关键操作之前,再次输入密码或者验证码

        验证token值

        HttpOnly:某些情况下禁止JS脚本访问Cookie信息

        SameSite:Cookie属性,浏览器自带安全机制

任意文件读取

漏洞原理:

        没有对用户查看下载的文件进行限制绕过    

        任意文件读取与下载可能形式不同,但是从本质上讲读取与下载没有区别,从权限角度来 讲,读取与下载都需要读权限。             

漏洞成因

        源代码中存在读取文件功能的函数,Web端开放了文件读取功能

        读取文件的路径客户端可控

漏洞防御

        输入验证:让用户只能访问(读取),所需要的文件和路径

        避免其他漏洞: 不能有文件包含漏洞,目录遍历漏洞或者其他漏洞

        限定文件访问范围

任意文件包含

文件包含原理:

        开发者为了减少重复代码复写,减少代码量,进行函数封装,在需要该函数的时候直接调用,如果使用的是动态包含的函数,而且Web端应用没有进行严格的校验,浏览器客户端就可以控制文件包含的路径,产生任意文件包含漏洞

文件包含防御

        尽量少使用动态包含

        严格过滤文件包含的路径

        将参数allow_url_include设为off.

        使用 函数open_basedir来限定文件的访问范围

任意文件上传

漏洞成因:

        没有对上传进行足够的过滤

漏洞危害

        GetShell

漏洞防御

        黑白名单过滤

        上传文件后给文件重命名

        文件内容检测

        二次渲染,过滤图片中的恶意代码

        建立单独文件存储服务器,类似站库分离

SSRF服务器端请求伪造

SSRF概述

        服务器会根据用户提交的 URL 发送一个 HTTP 请求。使用用户指定的 URL,Web 应用 可以获取图片或者文件资源等。典型的例子是百度识图功能。

        如果没对用户提交的URL进行过滤,就可能存在请求伪造的问题

SSRF 原理

        服务器接受了来自于客户端的 URL 地址,并由服务器发送该 URL 请求。

        对用户输入的 URL 没有进行恰当的过滤,导致任意 URL 输入。

        没对响应的结果进行检验,直接输出。

SSRF危害

        端口扫描

        内网Web应用指纹识别

        攻击内网应用

        读取本地文件

SSRF防御

 过滤输入

        限制只允许http和https协议

        限制IP,避免用户用来获取内网数据

        限制端口,限制请求端口为常用端口

过滤输出

        过滤返回信息,只要不符合要求的全部过滤

        统一错误回显信息,让攻击者无法进行判断

远程命令执行漏洞

漏洞成因

        WEB应用程序过滤不严谨,导致用户可以通过请求将代码注入到WEB应用进行执行。

代码最终是在WEB服务器中进行执行的。

漏洞原理

        程序应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数中的参数时,就可以将恶意系统命
令拼接到正常命令中,从而造成命令执行攻击。

漏洞前提

        用户能够控制的函数输入

        存在可以执行代码或者系统命令的危险函数

漏洞防御

        黑白名单过滤

        尽量不要执行外部命令

        使用自定义函数来代替外部命令的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值