这里对Web安全中常见的漏洞及安全问题做一个总结

看情况包含常见漏洞原理、危害、预防。(后面可以增加靶场实操)

  1. 注入漏洞
  2. XSS(跨站脚本攻击)
  3. 跨站请求伪造(CSRF)
  4. XML外部实体(XXE)
  5. 文件上传漏洞
  6. 点击劫持
  7. 其他漏洞及威胁

参考文章:

  • 常见六大Web漏洞介绍和防御方案

  • 常见Web安全漏洞类型

  • WEB应用常见15种安全漏洞一览

  • 渗透测试之小白的常见web漏洞总结

一、注入漏洞


注入漏洞介绍

SQL注入介绍

若后台预想的语句如下:

#admin和password是用户输入的内容
SELECT * FROM user WHERE username=‘admin’ AND psw=‘password’

但通过修改输入可以让后台执行语句变为:

SELECT * FROM user WHERE username=‘admin‘ --’ AND psw=‘xxx’

这样修改后,–‘后面的内容将会被注释掉,最后在数据库中的查询语句就变成了:

SELECT * FROM user WHERE username=‘admin‘

从而不用输入密码就能进行登录

OS命令注入介绍

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

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

SQL盲注(SQL Blind Injection)(危害和预防未写)

  1. 基于布尔的盲注:SQL注入过程中,应用程序仅仅返回True页面和False页面,无法根据应用程序的返回页面得到数据库信息,但可通过构造逻辑条件(如比较大小)向服务端请求后的返回页面来分析判断我们所需要的数据库信息。
  2. 基于时间的盲注:注入的SQL代码影响后台数据库的功能,但此时Web的前端页面始终显示True页面,知识页面返回的响应时间有差异,可以根据时间差来推断注入语句中的判断条件真假,继而获取数据库相关的信息。

Xpath注入(危害和预防未写)

利用XPath解析器的松散输入和容错特性,能够在URL、表单或其它信息上附带恶意的XPath查询代码,以获得权限信息的访问权并更改这些信息。

注入漏洞危害

SQL注入危害

  1. 获取数据库的各类信息(用户名、密码、手机号等)
  2. 获取服务器权限(通过注入绕过管理员登录)
  3. 植入Webshell,获取服务器后门
  4. 读取服务器敏感文件

OS命令注入危害

入侵者可以在用户电脑中执行非法操作

注入漏洞预防

SQL注入预防

  1. 严格限制Web应用的数据库的操作权限,给用户提供能够满足其需求的权限,从而减少注入对数据库的危害
  2. 后端检查输入数据是否符合预期,严格限制变量的类型,如用正则表达式进行一些匹配
  3. 对进入数据库的特殊字符(“,’,<,>,&,等)进行转义
  4. 不要直接拼接SQL语句

OS命令注入预防

  1. 后端对前端提交的内容进行限制(正则表达式)
  2. 对各类参数进行转义过滤
  3. 不直接拼接命令语句,借助一些工具做拼接、转义预处理

二、XSS(跨站脚本漏洞)


XSS介绍

XSS原理介绍

XSS(Cross-Site Scripting),跨站脚本,因为缩写和样式层叠表(CSS)重叠,所以我们称之为XSS。跨站脚本是指通过存在安全漏洞的Web网站中非法的运行HTML标签或JavaScript进行的一种攻击。

XSS的原理是恶意往Web页面里插入恶意可执行网页脚本代码,当用户浏览该页时,嵌入的脚本代码会执行,从而可以达到盗取用户信息等目的

XSS分类

主要分类两种:

  1. 非持久型XSS(反射型XSS)
    非持久型XSS一般通过给别人发送带有恶意脚本代码参数的URL,但URL地址被打开时,特有的恶意代码参数被HTML解析、执行。但一些浏览器如Chrome通常内置了一些XSS过滤器,可以防止大部分反射型XSS.

非持久型XSS漏洞有以下几点特征:

  • 即时性,不经过服务器存储,直接通过 HTTP 的 GET 和 POST 请求就能完成一次,拿到用户隐私数据。
  • 需要诱骗点击,必须要通过用户点击链接才能发起。
  • 反馈率低,所以较难发现和响应修复。
  • 盗取用户敏感保密信息。
  1. 持久型XSS(存储型XSS)
    持久型XSS漏洞一般存在Form表单提交等交互功能,如文章留言,提交文本信息等,利用这些地方存在的漏洞可以将脚本代码提交进入数据库永久存储,后面每次页面渲染时,脚本代码被执行。

持久型XSS漏洞的及格特点:

  • 持久性,保存在数据库中
  • 盗取用户敏感信息
  • 危害面广

XSS危害

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

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

XSS预防

非持久型XSS的预防

  1. Web 页面渲染的所有内容或者渲染的数据都必须来自于服务端。

  2. 尽量不要使用 eval, new Function(),document.write(),document.writeln(),window.setInterval(),window.setTimeout(),innerHTML,document.createElement() 等可执行字符串的方法。

  3. 前端渲染的时候对任何的字段都需要做 escape 转义编码。

持久型XSS的预防

  1. CSP:建立白名单,明确那些外部资源可以加载和执行
  2. 转义字符:永远不信任用户的输入,对引号、尖括号等进行转义

考虑到需转义的标签和属性太多,通常推荐用白名单的方式

  1. HTTPOnly Cookie:这是预防XSS窃取用户Cookie最有效的防御手段

三、跨站请求伪造(CSRF)

CSRF介绍

CSRF(Cross Site Request Forgery),即跨站请求伪造,它利用用户已登录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作

完成CSRF必须要有三个条件:

  1. 用户已经登陆了站点A,并在本地记录了Cookie
  2. Cookie生效的情况下,访问了存在CSRF漏洞的引诱站点B(B要求访问A)
  3. 站点A没有做任何CSRF防御

CSRF危害

黑客可以通过Cookie登陆用户的账号获取私密信息

CSRF预防

预防主要遵循以下几种规则:

  • Get请求不对数据进行修改
  • 不然第三方网站访问到用户Cookie
  • 阻止第三方网站请求接口
  • 请求时附带验证信息,如验证码或者Token

方法主要有:

  1. SameSite:对Cookie设置SameSite属性,该属性表示Cookie不随着跨站请求发送,但该属性不是所有浏览器都兼容
  2. Referer Check:即通过检查http包头的referer的值检查是不是CSRF
  3. Anti CSRF Token:即发送请求时在HTTP请求中以参数的形式加入一个随机产生 的token,并在服务器建立一个拦截其来验证这个token。此方法比检查Referer更安全
  4. 验证码:验证码能很好预防CSRF,但会降低用户的体验,所以通常在关键业务加上验证码

四、XML外部实体(XXE)


XXE介绍

XXE漏洞全称为XML外部实体漏洞(XML External Entity),但应用程序解析XML输入时,如果没有禁止外部实体的加载,导致可加载恶意外部文件和代码,就会造成任意文件读取、命令执行、内网端口扫描、攻击内网网站等攻击。该漏洞只会在能够接受XML格式参数的接口才会出现

XXE预防

  1. 禁止外部实体
  2. 过滤用户提交的XML数据

五、文件上传漏洞


文件上传漏洞介绍

文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。大多数的上传漏洞被利用后攻击者都会留下WebShell以方便后续进入系统。攻击者在受影响系统放置或者插入WebShell后,可通过该WebShell更轻松,更隐蔽的在服务中为所欲为。

WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称之为一种网页后门。攻击者在入侵了一个网站后,通常会将这些asp或php后门文件与网站服务器web目录下正常的网页文件混在一起,然后使用浏览器来访问这些后门,得到一个命令执行环境,以达到控制网站服务器的目的(可以上传下载或者修改文件,操作数据库,执行任意命令等)。

可以通过中国菜刀蚁剑等工具远程连接
参考一句话木马:
# php
<?php @eval($_POST['password']);?>
# ASP
<%eval request(“password”)%>
# ASP.NET
<%@ Page Language=“Jscript”%><%eval(Request.Item[“chopper”],“unsafe”);%>

文件上传绕过的方式:

  1. 修改后缀名(大小写、文件别名等)、修改文件名(文件名加分好、引号等),修改文件内容(图片木马->copy /b xx.jpg + xxx.txt xx.jpg将木马写入图片中)
  2. 结合服务器解析漏洞:IIS、apache、nginx的特定版本都有对应的解析漏洞
  3. 利用文件包含漏洞:如果知道组件版本和名称,在网上找相应的漏洞
  4. 利用组件漏洞:如果知道组件版本和名称,在网上找相应的漏洞

文件上传漏洞预防

  1. 利用防火墙、D盾、安全狗

六、点击劫持


点击劫持介绍

点击劫持是一种视觉欺骗的手段,将需要的网站通过iframe嵌套的方式嵌入自己的网页中,并将iframe设置为透明,在页面中透出一个按钮诱惑用户点击

特点:

  1. 隐蔽性高
  2. 骗取用户操作
  3. 利用iframe或者其它标签的属性进行欺骗

点击劫持危害

通过视觉的欺骗,让用户去点击一些非正常的按钮,从而达到黑客的一定目的。

点击劫持预防

  1. X-FRAME-OPTIONS 用来预防用iframe嵌套的点击劫持的攻击的一个HTTP响应头
  2. JavaScript防御:通过代码让通过iframe的方式加载页面时,网页直接不显示所有内容

其他漏洞及威胁


弱口令

弱口令介绍

弱口令(weak password) ,没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令,如:生日、名字、简单的顺序数字or字符。

弱口令预防

设置密码时尽量复杂,包含大小写字母、数字、符号等。

缓冲区溢出

缓冲区溢出介绍

在计算机内部,输入数据通常被存放在一个临时空间内,这个临时存放的空间就被称为缓冲区,缓冲区的长度事先已经被程序或者操作系统定义好了。向缓冲区内填充数据,如果数据的长度很长,超过了缓冲区本身的容量,那么数据就会溢出存储空间,而这些溢出的数据还会覆盖在合法的数据上。

操作系统所使用的缓冲区又被称为堆栈,在各个操作进程之间,指令被临时存储在堆栈当中,堆栈也会出现缓冲区溢出。当一个超长的数据进入到缓冲区时,超出部分就会被写入其他缓冲区,其他缓冲区存放的可能是数据、下一条指令的指针,或者是其他程序的输出内容,这些内容都被覆盖或者破坏掉。

缓冲区溢出预防

暂无

失效的访问控制

失效的访问控制介绍

由于缺乏自动化的检测和应用程序开发人员缺乏有效的功能测试,因而访问控制缺陷很常见。访问控制检测通常不适用于自动化的静态或动态测试。手动测试是检测访问控制缺失或失效的最佳方法,包括:HTTP方法(如:GET和PUT)、控制器、直接对象引用。

攻击者可以冒充用户、管理员或拥有特权的用户,或者创建、访问、更新或删除任何记录。

安全配置错误

安全配置错误介绍

安全配置错误可以发生在一个应用程序堆栈的任何层面,包括网络服务、平台、Web服务器、应用服务器、数据库、框架、自定义代码和预安装的虚拟机、容器和存储。自动扫描器可用于检测错误的安全配置、默认帐户的使用或配置、不必要的服务、遗留选项等。

通常,攻击者能够通过未修复的漏洞、访问默认账户、不再使用的页面、未受保护的文件和目录等来取得对系统的未授权的访问或了解。

不安全的行序列化

不安全的行序列化介绍

反序列化漏洞有十年的历史,存在于不同的编程语言中,最为明显的当属Java、PHP、Python、Ruby。漏洞的本质就是反序列化机制打破了数据和对象的边界,导致攻击者注入的恶意序列化数据在反序列化过程中被还原成对象,控制了对象就可能在目标系统上面执行攻击代码。

使用含有已知漏洞的组件

使用含有已知漏洞的组件介绍

这种安全漏洞普遍存在。基于组件开发的模式使得多数开发团队不了解其应用或API中使用的组件,更谈不上及时更新这些组件了。如Retire.js之类的扫描器可以帮助发现此类漏洞,但这类漏洞是否可以被利用还需花费额外的时间去研究。

不足的日志记录和监控

不足的日志记录和监控介绍

对不足的日志记录及监控的利用几乎是每一个重大安全事件的温床。攻击者依靠监控的不足和响应的不及时来达成他们的目标而不被知晓。

根据行业调查的结果,此问题被列入了Top10。判断你是否有足够监控的一个策略是在渗透测试后检查日志。测试者的活动应被充分的记录下来,能够反映出他们造成了什么样的影响。

多数成功的攻击往往从漏洞探测开始。允许这种探测会将攻击成功的可能性提高到近100%;据统计,在2016年确定一起数据泄露事件平均需要花191天时间,这么长时间里损害早已发生。

未验证的重定向和转发

未验证的重定向和转发介绍

应用程序经常将用户重定向到其他网页,或以类似的方式进行内部转发。有时,目标网页是通过一个未经验证的参数来指定的,这就允许攻击者选择目标页面。

攻击者链接到未验证的重定向并诱使受害者去点击。由于是链接到有效的网站,受害者很有可能去点击。攻击者利用不安全的转发绕过安全检测。

这种重定向可能试图安装恶意软件或者诱使受害者泄露密码或其他敏感信息。不安全的转发可能允许绕过访问控制。

业务逻辑漏洞

业务逻辑漏洞介绍

业务逻辑问题是一种设计缺陷,逻辑缺陷表现为设计者或开发者在思考过程中做出的特殊假设存在明显或隐含的错误。攻击者会特别注意目标应用程序采用的逻辑方式,设法了解设计者与开发者做出的可能假设,然后考虑如何攻破这些假设。攻击者挖掘逻辑漏洞有两个重点:业务流程、http/https请求篡改。

业务逻辑漏洞经常出现的场景为:账户(注册/登录/密码找回)、交易、支付、个人信息修改。

URL跳转漏洞

URL跳转漏洞介绍

黑客构建恶意链接(通过伪装,尽可能迷惑),再通过QQ群、贴吧论坛等进行传播,用户点击后,经过服务器或者浏览器解析后,跳转到恶意的网站中

通常构造方法为:
http://xxxx.com(可信的官网)?url=evil.com(伪造的诈骗网站)

URL跳转漏洞危害

可能会导致用户信息泄漏或者资金的流失

URL跳转漏洞预防

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

DDOS攻击

DDOS攻击介绍

分布式拒绝服务攻击,可以是黑客控制肉鸡大量的去进行访问服务器,从而导致服务器的崩溃无法正常提供服务

该攻击仍旧是如今十分有效的一种攻击手

[总结]常见漏洞的总结相关推荐

  1. php进攻教程,如何对PHP程序中的常见漏洞进行攻击(下)_php基

    如何对PHP程序中的常见漏洞进行攻击(下)_php基 发布时间:2016-06-17 来源: 点击: 次 如何对PHP程序中的常见漏洞进行攻击(下) 翻译:analysist(分析家) 来源:http ...

  2. android WebView详解,常见漏洞详解和安全源码(下)

    上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑.  上篇:android WebView详解,常见漏洞详解和安全源码(上)  转载请注明出处:http ...

  3. android WebView详解,常见漏洞详解和安全源码(上)

    这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析.  由于博客内容长度,这次将分为上下两篇,上篇详解 WebView ...

  4. 如何对PHP程序中的常见漏洞进行攻击(上)

    如何对PHP程序中的常见漏洞进行攻击(上) 创建时间:2001-07-17 文章属性:翻译 文章来源:http://www.china4lert.org 文章提交:analysist (analysi ...

  5. Android常见漏洞

    Android常见漏洞 漏洞名称: Log敏感信息泄露 漏洞描述: 程序运行期间打印了用户的敏感信息,造成泄露 修改建议: 建议禁止隐私信息的log 漏洞名称: web https校验错误忽略漏洞 漏 ...

  6. 什么是CVE?常见漏洞和暴露列表概述

    常见漏洞和暴露(Common Vulnerability and Exposures,简称CVE)收集了已知的网络安全漏洞和暴露,以帮助您更好地保护您的嵌入式软件. 在这里,我们会阐释什么是CVE,C ...

  7. IIS 服务器常见漏洞

    IIS 服务器常见漏洞 文件解析漏洞 1.目录解析漏洞 2.文件名解析漏洞 3.畸形解析漏洞 IIS 短文件漏洞 PUT 任意文件写入 IIS是Internet Information Service ...

  8. 网站渗透测试之常见漏洞排行

    我们SINE安全在进行Web渗透测试中网站漏洞利用率最高的前五个漏洞.常见漏洞包括注入漏洞.文件上传漏洞.文件包含漏洞.命令执行漏洞.代码执行漏洞.跨站点脚本(XSS)漏洞.SSRF漏洞.XML外部实 ...

  9. 一般网站有哪些常见漏洞?

    Web应用是指采用B/S架构.通过HTTP/HTTPS协议提供服务的统称.随着互联网的广泛使用,Web应用已经融入到日常生活中的各个方面:网上购物.网络银行应用.证券股票交易.政府行政审批等等.在这些 ...

  10. Oracle数据库的常见漏洞及注入语句

    一.Oracle数据库的常见漏洞 Oracle 公司 于 2021 年 1 月 19 日,发布了第一个年度安全预警.其中,有 8 个安全警告和 Oracle 数据库部分有关.目前,可以通过最新的 CP ...

最新文章

  1. java射击游戏_Java Swing打猎射击游戏源码
  2. (已解决)登录火狐浏览器账号后没有同步数据--博主的奇妙寻号之旅
  3. java中怎样验证重复文件_java – 如何在下载之前检查URL中的重复文件
  4. 7天拿到阿里Android岗位offer,都是精髓!
  5. Java 输出指定目录下的所有文件
  6. java thread.notify_Java Thread notify()方法
  7. 冷知识 —— 计算机科学及编程
  8. SQL Serever学习14——存储过程和触发器
  9. easyui 合并单元格
  10. ZigBee串口发送字符串函数
  11. Excel的筛选功能应用教你在大数据中筛选出需要的数据
  12. Python Factory 工厂方法
  13. ASAN Pass源码分析(六)——全局变量插桩
  14. 如何设置浏览器标签图标
  15. Quartus-建立新工程
  16. h5中performance.timing轻松获取网页各个数据 如dom加载时间 渲染时长 加载完触发时间...
  17. 用Android实现计算器
  18. 循环冗余校验码CRC原理和实例
  19. 计算机微课课件评比活动总结,优质课评比活动总结
  20. Appium 自动化用例设计(TESTNG 篇)

热门文章

  1. 电子信息科学与技术考研考计算机,电子信息科学与技术专业考研需要考哪些科目,有哪些......
  2. Elasticsearch:理解搜索中的 precision 及 recall
  3. python计算precision@k、recall@k和f1_score@k
  4. win10怎么打开电脑前面板耳机
  5. 土圭垚㙓数学课(四)空间变换
  6. Decenber 2004 (再见了我的2004猴年)
  7. 写写自己找工作的经历
  8. Android之近场通信技术
  9. LeetCode刷题之路(四)——medium的进阶
  10. springboot2初期笔记存档