本文作者:kris

安装Ubuntu发行版提示占位程序接收到错误数据解决方式-ubuntu占有率

kris 2024-12-26 15:30:04 1
安装Ubuntu发行版提示占位程序接收到错误数据解决方式-ubuntu占有率摘要: 常见的web安全漏洞有哪些?1、sql注入:通过给web应用接口传入一些特殊字符,达到欺骗服务器,执行恶意的SQL命令。利用该漏洞可以读取数据库信息。2、XSS:跨站脚本攻击(Cr...

常见的web安全漏洞有哪些?

1、sql注入:通过给web应用接口传入一些特殊字符,达到欺骗服务器,执行恶意的SQL命令。利用该漏洞可以读取数据库信息。

2、XSS:跨站脚本攻击(Cross-SiteScripting),向web页面注入可执行的恶意代码,利用该漏洞可以读取目标网站cookie发送到黑客服务器上。

3、CSRF:跨站请求伪造(Cross-siteRequestForgery),诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站发起伪造用户请求,达到攻击的目的。

4、DDoS攻击:攻击者不断地发出服务请求,让合法用户的请求无法及时处理,最终就是让一个网站无法访问。

5、XXE:XML外部实体漏洞(XMLExternalEntity),当应用程序解析XML输入时,如果没有禁止外部实体的加载,导致可加载恶意外部文件和代码,就会造成任意文件读取、命令执行、内网端口扫描、攻击内网网站等攻击。

6、JSON劫持:用于获取敏感数据的一种攻击方式,属于CSRF攻击的范畴。

7、暴力破解:

这个一般针对密码而言,弱密码(WeakPassword)很容易被别人(对你很了解的人等)猜到或被破解工具暴力破解。

8、HTTP报头追踪漏洞:

HTTP/1.1(RFC2616)规范定义了HTTPTRACE方法,主要是用于客户端通过向Web服务器提交TRACE请求来进行测试或获得诊断信息。

9、信息泄露:由于Web服务器或应用程序没有正确处理一些特殊请求,泄露Web服务器的一些敏感信息,如用户名、密码、源代码、服务器信息、配置信息等。

10、目录遍历漏洞:

攻击者向Web服务器发送请求,通过在URL中或在有特殊意义的目录中附加../、或者附加../的一些变形(如..\或..//甚至其编码),导致攻击者能够访问未授权的目录,以及在Web服务器的根目录以外执行命令。

11、命令执行漏洞:命令执行漏洞是通过URL发起请求,在Web服务器端执行未授权的命令,获取系统信息、篡改系统配置、控制整个系统、使系统瘫痪等。

12、文件上传漏洞:通过Web访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。

13:框架或应用漏洞

14、SSLStrip攻击

15、OpenSSLHeartbleed安全漏洞

16、CCS注入漏洞

17、证书有效性验证漏洞

前言:

在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?本文主要侧重于分析几种常见的攻击的类型以及防御的方法。

一、XSS

XSS (Cross-Site Scripting),跨站脚本攻击,因为缩写和 CSS重叠,所以只能叫 XSS。跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。

跨站脚本攻击有可能造成以下影响:

  • 利用虚假输入表单骗取用户个人信息。
  • 利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求。
  • 显示伪造的文章或图片。

XSS 的原理是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的

XSS 的攻击方式千变万化,但还是可以大致细分为几种类型。

1.非持久型 XSS(反射型 XSS )

非持久型 XSS 漏洞,一般是通过给别人发送带有恶意脚本代码参数的 URL,当 URL 地址被打开时,特有的恶意代码参数被 HTML 解析、执行。

安装Ubuntu发行版提示占位程序接收到错误数据解决方式-ubuntu占有率

安装Ubuntu发行版提示占位程序接收到错误数据解决方式-ubuntu占有率

从上图可知,攻击者通过图片作为页面背景,隐藏了用户操作的真实界面,当你按耐不住好奇点击按钮以后,真正的点击的其实是隐藏的那个页面的订阅按钮,然后就会在你不知情的情况下订阅了。

安装Ubuntu发行版提示占位程序接收到错误数据解决方式-ubuntu占有率

3. 如何防御

1)X-FRAME-OPTIONS

X-FRAME-OPTIONS是一个 HTTP 响应头,在现代浏览器有一个很好的支持。这个 HTTP 响应头 就是为了防御用 iframe 嵌套的点击劫持攻击。

该响应头有三个值可选,分别是

  • DENY,表示页面不允许通过 iframe 的方式展示
  • SAMEORIGIN,表示页面可以在相同域名下通过 iframe 的方式展示
  • ALLOW-FROM,表示页面可以在指定来源的 iframe 中展示

2)JavaScript 防御

对于某些远古浏览器来说,并不能支持上面的这种方式,那我们只有通过 JS 的方式来防御点击劫持了。

<head> <style id="click-jack"> html { display: none !important; } </style> </head> <body> <script> if (self == top) { var style = document.getElementById('click-jack') document.body.removeChild(style) } else { top.location = self.location } </script> </body>

以上代码的作用就是当通过 iframe 的方式加载页面时,攻击者的网页直接不显示所有内容了。

给大家推荐一个好用的BUG监控工具Fundebug,欢迎免费试用!

四、URL跳转漏洞

定义:借助未验证的URL跳转,将应用程序引导到不安全的第三方区域,从而导致的安全问题。

1.URL跳转漏洞原理

黑客利用URL跳转漏洞来诱导安全意识低的用户点击,导致用户信息泄露或者资金的流失。其原理是黑客构建恶意链接(链接需要进行伪装,尽可能迷惑),发在QQ群或者是浏览量多的贴吧/论坛中。
安全意识低的用户点击后,经过服务器或者浏览器解析后,跳到恶意的网站中。

安装Ubuntu发行版提示占位程序接收到错误数据解决方式-ubuntu占有率

恶意链接需要进行伪装,经常的做法是熟悉的链接后面加上一个恶意的网址,这样才迷惑用户。

安装Ubuntu发行版提示占位程序接收到错误数据解决方式-ubuntu占有率

诸如伪装成像如下的网址,你是否能够识别出来是恶意网址呢?

;url= ;url= http://tieba.baidu.com/f/user/passport?jumpUrl=

2.实现方式:

  • Header头跳转
  • Javascript跳转
  • META标签跳转

这里我们举个Header头跳转实现方式:

<?php $url=$_GET['jumpto']; header("Location: $url"); ?>

这里用户会认为www.wooyun.org都是可信的,但是点击上述链接将导致用户最终访问www.evil.com这个恶意网址。

3.如何防御

1)referer的限制

如果确定传递URL参数进入的来源,我们可以通过该方式实现安全限制,保证该URL的有效性,避免恶意用户自己生成跳转链接

2)加入有效性验证Token

我们保证所有生成的链接都是来自于我们可信域的,通过在生成的链接里加入用户不可控的Token对生成的链接进行校验,可以避免用户生成自己的恶意链接从而被利用,但是如果功能本身要求比较开放,可能导致有一定的限制。

五、SQL注入

SQL注入是一种常见的Web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。

1.SQL注入的原理

我们先举一个万能钥匙的例子来说明其原理:

安装Ubuntu发行版提示占位程序接收到错误数据解决方式-ubuntu占有率

<form action="/login" method="POST"> <p>Username: <input type="text" name="username" /></p> <p>Password: <input type="password" name="password" /></p> <p><input type="submit" value="登陆" /></p> </form>

后端的 SQL 语句可能是如下这样的:

let querySQL = ` SELECT * FROM user WHERE username='${username}' AND psw='${password}' `; // 接下来就是执行 sql 语句...

这是我们经常见到的登录页面,但如果有一个恶意攻击者输入的用户名是 admin' --,密码随意输入,就可以直接登入系统了。why! ----这就是SQL注入

我们之前预想的SQL 语句是:

SELECT * FROM user WHERE username='admin' AND psw='password'

但是恶意攻击者用奇怪用户名将你的 SQL 语句变成了如下形式:

SELECT * FROM user WHERE username='admin' --' AND psw='xxxx'

在 SQL 中,' --是闭合和注释的意思,-- 是注释后面的内容的意思,所以查询语句就变成了:

SELECT * FROM user WHERE username='admin'

所谓的万能密码,本质上就是SQL注入的一种利用方式。

一次SQL注入的过程包括以下几个过程:

  • 获取用户请求参数
  • 拼接到代码当中
  • SQL语句按照我们构造参数的语义执行成功

SQL注入的必备条件:


1.可以控制输入的数据
2.服务器要执行的代码拼接了控制的数据

安装Ubuntu发行版提示占位程序接收到错误数据解决方式-ubuntu占有率

我们会发现SQL注入流程中与正常请求服务器类似,只是黑客控制了数据,构造了SQL查询,而正常的请求不会SQL查询这一步,SQL注入的本质:数据和代码未分离,即数据当做了代码来执行。

2.危害

  • 获取数据库信息管理员后台用户名和密码获取其他数据库敏感信息:用户名、密码、手机号码、身份证、银行卡信息……整个数据库:脱裤
  • 获取服务器权限
  • 植入Webshell,获取服务器后门
  • 读取服务器敏感文件

3.如何防御

  • 严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害
  • 后端代码检查输入的数据是否符合预期,严格限制变量的类型,例如使用正则表达式进行一些匹配处理。
  • 对进入数据库的特殊字符(',",,<,>,&,*,; 等)进行转义处理,或编码转换。基本上所有的后端语言都有对字符串进行转义处理的方法,比如 lodash 的 lodash._escapehtmlchar 库。
  • 所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中,即不要直接拼接 SQL 语句。例如 Node.js 中的 mysqljs 库的 query 方法中的 ? 占位参数。

六、OS命令注入攻击

OS命令注入和SQL注入差不多,只不过SQL注入是针对数据库的,而OS命令注入是针对操作系统的。OS命令注入攻击指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就有存在被攻击的风险。倘若调用Shell时存在疏漏,就可以执行插入的非法命令。

命令注入攻击可以向Shell发送命令,让Windows或Linux操作系统的命令行启动程序。也就是说,通过命令注入攻击可执行操作系统上安装着的各种程序。

1.原理

安装Ubuntu发行版提示占位程序接收到错误数据解决方式-ubuntu占有率

黑客构造命令提交给web应用程序,web应用程序提取黑客构造的命令,拼接到被执行的命令中,因黑客注入的命令打破了原有命令结构,导致web应用执行了额外的命令,最后web应用程序将执行的结果输出到响应页面中。

我们通过一个例子来说明其原理,假如需要实现一个需求:用户提交一些内容到服务器,然后在服务器执行一些系统命令去返回一个结果给用户

// 以 Node.js 为例,假如在接口中需要从 github 下载用户指定的 repo const exec = require('mz/child_process').exec; let params = {/* 用户输入的参数 */}; exec(`git clone ${params.repo} /some/path`);

如果 params.repo 传入的是 确实能从指定的 git repo 上下载到想要的代码。
但是如果 params.repo 传入的是 && rm -rf /* && 恰好你的服务是用 root 权限起的就糟糕了。

2.如何防御

  • 后端对前端提交内容进行规则限制(比如正则表达式)。
  • 在调用系统命令前对所有传入参数进行命令行参数转义过滤。
  • 不要直接拼接命令语句,借助一些工具做拼接、转义预处理,例如 Node.js 的 shell-escape npm包

以上就是常见的web安全漏洞及防御方法!

文章版权及转载声明

作者:kris本文地址:https://www.damoyx.com/p/17641.html发布于 2024-12-26 15:30:04
文章转载或复制请以超链接形式并注明出处大漠游侠网

阅读
分享