常见漏洞的原理与防御

一:SQL注入

原理:将SQL语句插入或添加到用户输入的参数种,然后提交到数据库执行。
修复:
1、使用参数化查询
2、对用户输入的特殊字符(单引号、上引号等)进行转义或者编码。
3、最小权限,把每个数据库用户的权限尽可能缩小。

二:XSS

原理:攻击者在网页中插入恶意代码。
危害:
1、盗取用户的Cookie(保存到测试者的服务器)
2、钓鱼网站
3、广告页面
4、网站挂马。先将恶意攻击代码嵌入到Web应用程序之中。当用户浏览该挂马页面时,用户的计算机会被植入木马。
防御:
1、对参数做html转义过滤(要过滤的字符包括:单引号、双引号、大于号、小于号,&符号),防止脚本执行。
2、启用COOKIE的httponly属性。(如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息)

三:CSRF

原理:伪造用户发送恶意请求,比如说修改密码,转账等等
比如一个人登录了一个网站,他的cookic信息就会保存到本地,然后我给他发一个修改密码的恶意链接,他在没有退出登录的情况下点击,就会修改密码。
防御:
1、验证referer,验证一下这个网页是从哪里跳转过来的。
2、添加随机TOKEN(刚刚进入页面的时候就调用后端代码,后端代码生成一个token,返回给客户端,客户端储存token)
3、添加验证码。

四:SSRF

原理:ssrf就是是服务器请求伪造,构造攻击链接传给服务端执行造成的漏洞,原因就是提供了从其他的服务器上获取数据的功能。
危害:
1、可以对外网服务器所在的内网、本地进行端口扫描
2、攻击运行在内网或者本地的应用程序。
3、攻击内外网的web应用。sql注入、struct2、redis等。
4、利用file协议读取本地文件等。
( http://127.0.0.1/1.txt?url=file://…/…/…/passwd,构造payload反弹shell)
如何找ssrf漏洞:
1、一般在分享功能中找,比方说通过URL地址分享网页内容(http:***?resourceUrl=https://www.sobug.com),如果没有对目标地址的范围做过滤与限制就存在着SSRF漏洞。
2、看URL里边的关键字,假如说有url、link、src、display、imageURL啊等等的就有可能存在ssrf
防御:
1、过滤返回信息。
2、禁用不需要的协议。仅仅允许http和https请求

五:文件上传

原理:在具有上传功能的地方,未对上传文件的类型进行限制,导致用户可以上传任意文件,甚至是木马文件。
绕过方法:
1、客户端JavaScript检测
绕过:
抓包,修改后缀名
2、服务器MIME类型检测
抓包,修改Content-Type 将内容修改成服务器可以解析的内容
3、服务器端文件内容检测
制作图片码 copy/b 1.jpg+2.php=3.jpg
4、服务器配置问题
1.Apache解析漏洞
一个文件名为test.php.aaa.bbb的文件,Apache会从ccc的位置往php的位置开始尝试解析直到遇到一个能解析的拓展名为止。
存在漏洞的版本apache2.0、2.1、2.4、2.5、2.6
2.IIS解析漏洞
a.IIS6.0 在解析 asp 格式的时候有两个解析漏洞.
例如: “test.asp/1.jpg”会按照asp来解析
例如: “text.asp;.jpg”会按照asp来解析
b.IIS7.0/7.5是对php解析时有一个类似于Nginx的解析漏洞,
例如:”http://www.target.com/upload/1.jpg/1.php”会按照php执行。
3.Nginx解析漏洞
上传test.jpg,访问“http://www.target.com/upload/1.jpg/1.php”就可以执行php代码
利用条件:
1、能够更上传脚本文件
2、知道上传目录的绝对路径
3、上传目录能够执行脚本文件
防御:
1、对上传的文件进行白名单限制,只允许上传jpg、png等类型。
2、上传目录不给执行权限
3、上传文件的名称要随机生成
4、 图片上传,要通过处理(缩略图、水印等),或通过图片读取函数判断无异常后才能保存到服务器。

六:文件包含

原理:服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。
文件包含函数
request();request_once();include();include_once()
防御:
1、过滤各种…/…/,http://,https://
2、配置php.ini配置文件
allow_url_fopen=off
allow_url_include=off
magic_quotes_gpc=on
3、白名单策略,仅允许包含指定的文件,其他的都禁止

七:文件下载漏洞

原理:文件下载的时候,允许用户提交任意文件路径,并把服务器上对应的文件直接发送给用户,这将造成任意文件下载威胁。
防御:

  1. 要下载的文件地址保存至数据库中;
  2. 文件路径保存至数据库,让用户提交文件对应ID下载文件;
  3. 下载文件之前做权限判断;
  4. 文件放在web无法直接访问的目录下;
  5. 记录文件下载日志;
  6. 不允许提供目录遍历服务。

八:命令执行漏洞

原理:web应用代码中,允许接收用户输入一段代码,之后在web应用服务器上执行这段代码,并返回给用户。 由于用户可以自定义输入一段代码,在服务器上执行,所以恶意用户可以写一个远程控制木马,直接获取服务器控制权限,所有服务器上的资源都会被恶意用户获取和修改,甚至可以直接控制数据库。
防御:所有需要执行的系统命令,必须是预先定义好的,不允许接收用户传来的参数,加入到系统命令中去。

九:水平越权

原理:Web应用程序接收到用户请求,对用户数据进行增、删、改、查操作时,没有判断数据的所属人,或数据所属人userid,直接从用户提交的request参数(用户可控数据)中获取,导致恶意攻击者可以通过变换数据ID或所属人userid,从而越权获取或修改其他人数据。
防御:
1、检查提交操作请求的操作者(通过session信息得到)与目标对象的权限所有者(查数据库)是否一致,如果不一致则阻断。从session中获取当前登录用户的userid,并且需要在执行的SQL语句中,加入当前用户userid作为条件语句。
2、将数据ID改成一个具有一定长度的随机字符串。

十:垂直权限攻击

原理:由于web应用程序没有做权限控制,或仅仅在菜单上做了权限控制,导致的恶意用户只要猜测其他管理页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升目的。
防御:
1.在打开管理页面URL或者请求接口时,首先判断当前用户是否拥有该页面的权限,如果没有权限,就判定为攻击拒绝访问;
2.使用ESAPI框架进行安全开发

十一:XXE

原理:xxe就是xml外部实体注入,xml文档中,包含一个dtd模块(文档类型定义),dtd可以内部声明,也可以外部引用,如果外部引用但是又没对内容进行严格的验证,就有可能造成任意文件查看或者命令执行的漏洞。
防御:
1、配置XML处理器使用禁用DTD、禁止外部实体解析
factory.setFeature(“http://apache.org/xml/features/disallow-doctype-decl”, true);
factory.setFeature(“http://xml.org/sax/features/external-general-entities”, false);
factory.setFeature(“http://xml.org/sax/features/external-parameter-entities”, false);
2、通过黑名单过滤用户提交的XML数据
关键词:<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC
3、不允许XML中含有自己定义的DTD

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值