百万人都在求的网络安全学习路线,渗透漏洞防御总结(附图)

前言

不折腾的网络安全,和咸鱼有什么区别

目录

二、 前言三 、同源策略 3.1 什么是同源策略 3.2 为什么需要同源策略四 、XSS 4.1 概览 4.2 介绍 4.3 防御五 、CSRF 5.1 概览 5.2 介绍 5.3 防御六、 SQL 注入七 、流量劫持 7.1 DNS 劫持 7.2 HTTP 劫持八 、浏览器网络安全九、 浏览器系统安全十 、参考文献

浏览器安全可以分为三大块:

Web 页面安全浏览器网络安全浏览器系统安全

Web 世界是开放的,任何资源都可以接入其中,我们的网站可以加载并执行别人网站的脚本文件、图片、音频、视频等资源,甚至可以下载其他站点的可执行文件。

但是 Web 世界不能绝对自由,例如打开一个银行站点,不小心又打开一个恶意站点:

  • 修改银行站点的 DOM、CSSOM 等信息;

  • 在银行站点内部插入 JavaScript 脚本;

  • 劫持用户登录的用户名和密码;

  • 读取银行站点的 Cookie、IndexDB 等数据;

  • 甚至还可以将这些信息上传至自己的服务器,这样就可以在你不知情的* * 情况下伪造一些转账请求等信息。

所以,在没有安全保障的 Web 世界中,我们是没有隐私的,因此需要安全策略来保障我们的隐私和数据的安全。

这就引出了页面中最基础、最核心的安全策略:同源策略(Same-origin policy)。

【如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!】

①网络安全学习路线

②20 份渗透测试电子书

③安全攻防 357 页笔记

④50 份安全攻防面试指南

⑤安全红队渗透工具包

⑥网络安全必备书籍

⑦100 个漏洞实战案例

⑧安全大厂内部教程

三、 同源策略

3.1 什么是同源策略

所谓 源,可以指 URL。

简单 来看某个 URL 组成;https://github.com/LiangJunrong/document-library

其中,如果 URL 上未标明端口,那么 http 默认是 80 端口,https 默认是 443 端口。

而所谓的同源,是指 协议、域名、端口 一致的情况下,才属于同源。

浏览器默认两个相同的源之间是可以相互访问资源和操作 DOM 的。两个不同的源之间若想要相互访问资源或者操作 DOM,那么会有一套基础的安全策略的制约,我们把这称为同源策略。

对于上面的 URL,我们判断下同源情况:

https://github.com/LiangJunrong/document-library

3.2 为什么需要同源策略

同源策略主要表现在 DOM、Web 数据和网络这三个层面。

第一个,DOM 层面同源策略限制了来自不同源的 JavaScript 脚本对当前 DOM 对象读和写的操作。

当你在 A 页面,通过 的形式打开 B 页面,经过下面 2 行代码可以将 A 页面的内容给隐藏掉:

let pdom = opener.document;``pdom.body.style.display = "none";

这就是同源情况下 DOM 的一个操作。

而不同源的是无法操作的。

第二个,数据层面同源策略限制了不同源的站点读取当前站点的 Cookie、IndexDB、LocalStorage 等数据。

由于同源策略,我们依然无法通过 B 页面的 opener 来访问 A 页面中的 Cookie、IndexDB 或者 LocalStorage 等内容。

第三个,网络层面同源策略限制了通过 XMLHttpRequest 等方式将站点的数据发送给不同源的站点。

四、 XSS

4.1 概览本章目标:看到下面概览可以大略描述说出 XSS 攻击、XSS 攻击类型以及 XSS 防御措施。

  • XSS 攻击类型 1、存储型 2、反射型 3、文档型

  • XSS 防范措施 1、输入检查 2、利用 CSP3、利用 HttpOnly

4.2 介绍

XSS(Cross Site Script)跨站脚本攻击。指的是攻击者向网页注入恶意的客户端代码,通过恶意的脚本对客户端网页进行篡改,从而在用户浏览网页时,对用户浏览器进行控制或者获取用户隐私数据的一种攻击方式。

例如:

  • 可以窃取 Cookie 信息。恶意 JavaScript 可以通过 document.cookie 获取 Cookie 信息,然后通过 XMLHttpRequest 或者 Fetch 加上 CORS 功能将数据发送给恶意服务器。恶意服务器拿到用户的 Cookie 信息之后,就可以在其他电脑上模拟用户的登录,然后进行转账等操作。

  • 可以监听用户行为。恶意 JavaScript 可以使用 addEventListener 接口来监听键盘事件,比如可以获取用户输入的***等信息,将其发送到恶意服务器。黑客掌握了这些信息之后,又可以做很多违法的事情。可以通过修改 DOM 伪造假的登录窗口,用来欺骗用户输入用户名和密码等信息。

  • 可以在页面内生成浮窗广告,这些广告会严重地影响用户体验。注入恶意脚本分 3 种方式:

存储型:即攻击被存储在服务端,常见的是在评论区插入攻击脚本,如果脚本被储存到服务端,那么所有看见对应评论的用户都会受到攻击。例如 2015 年喜马拉雅的专辑名称允许用户编写

反射型:攻击者将脚本混在 URL 里,服务端接收到 URL 将恶意代码当做参数取出并拼接在 HTML 里返回,浏览器解析此 HTML 后即执行恶意代码。例如 Q 群或者邮件中发送恶意链接,用户点击恶意链接,然后解析 URL 执行恶意代码。

DOM 型:攻击者通过各种手段将恶意脚本注入用户的页面中。例如通过网络劫持(WiFi 路由器劫持、本地恶意软件劫持等)在页面传输过程中修改 HTML 页面内容。

4.3 防御

防御 XSS 攻击:

输入检查:对输入内容中的 script 和 等标签进行转义或者过滤设置 httpOnly:设置此属性可防止 JavaScript 获取 Cookie,只能在 HTTP 请求过程中使用 Cookie 开启 CSP 白名单:即开启白名单,可阻止白名单以外的资源加载和运行

五、 CSRF

5.1 概览

本章目标:看到下面概览可以大略描述说出 CSRF 攻击、CSRF 攻击方式以及 CSRF 防御措施。

  • CSRF 攻击方式

1、利用用户的登录状态,并通过第三方的站点来做一些坏事 2、自动发 GET 请求 3、自动发 POST 请求 4、诱导点击发送 GET 请求

  • CSRF 防范措施

1、验证 Token2、验证 Referer3、验证 Samesite

5.2 介绍

CSRF 攻击(Cross-site request forgery)即跨站请求伪造。

是一种劫持受信任用户向服务器发送非预期请求的攻击方式,通常情况下,它是攻击者借助受害者的 Cookie 骗取服务器的信任,但是它并不能拿到 Cookie,也看不到 Cookie 的内容,它能做的就是给服务器发送请求,然后执行请求中所描述的命令,以此来改变服务器中的数据,也就是并不能窃取服务器中的数据。

CSRF 攻击就是黑客利用用户的登录状态,并通过第三方的站点来做一些坏事。

打开攻击者提供的页面后,攻击者有 3 种方式实施 CSRF 攻击:

** 方法一:自动发起 Get 请求**

<!DOCTYPE html>``<html>`  `<body>`    `<h1>黑客的站点:CSRF 攻击演示</h1>`    `<img src="https://jsliang.top/index.html?user=hacker&number=100">`  `</body>``</html>

黑客将转账的请求接口隐藏在 img 标签内,欺骗浏览器这是一张图片资源。

当该页面被加载时,浏览器会自动发起 img 的资源请求,如果服务器没有对该请求做判断的话,那么服务器就会认为该请求是一个转账请求,于是用户账户上的 100 块就被转移到黑客的账户上去了。

** 方法二:自动发起 POST 请求**

<!DOCTYPE html>``<html>``<body>`  `<h1>黑客的站点:CSRF 攻击演示</h1>`  `<form id='hacker-form' action="https://jsliang.top" method=POST>`    `<input type="hidden" name="user" value="hacker" />`    `<input type="hidden" name="number" value="100" />`  `</form>`  `<script>`    `document.getElementById('hacker-form').submit();`  `</script>``</body>``</html>

在页面中构建了一个隐藏的表单,该表单的内容就是极客时间的转账接口。

当用户打开该站点之后,这个表单会被自动执行提交;当表单被提交之后,服务器就会执行转账操作。

因此使用构建自动提交表单这种方式,就可以自动实现跨站点 POST 数据提交。

** 方法三:引诱用户点击链接**

<div>`  `<img width=150 src=http://images.xuejuzi.cn/1612/1_161230185104_1.jpg>`  `</div>``<div>`  `<a href="https://jsliang.top?user=hacker&number=100" taget="_blank">`    `点击下载美女照片`  `</a>``</div>

传说中的色诱,或者 “点击即送 100w 元” 之类的。

5.3 防御

防御 CSRF 攻击:

验证 Token:浏览器请求服务器时,服务器返回一个 token,之后每个请求都需要同时带上 token 和 Cookie 才会被认为是合法请求验证 Referer:通过验证请求头的 Referer 来验证来源站点,但请求头很容易伪造设置 SameSite:设置 Cookie 的 SameSite,可以让 Cookie 不随跨站请求发出,但浏览器兼容不一

六 \SQL 注入

已有代码:

<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>

后端的登录语句:

` let querySQL = ` ``  `SELECT *`  `FROM user`  `WHERE username='${username}'`  `AND psw='${password}'````; `

// 接下来就是执行 sql 语句…攻击者输入的信息是:

用户名:jsliang’ OR 1 = 1 --密码:随意,例如 123456 预想输入和现在输入变成:

SELECT * FROM user WHERE username='jsliang' AND psw='123456'``SELECT * FROM user WHERE username='jsliang' OR 1 = 1 --' AND psw='xxxx'

我们先拆解这条 SQL 语句,避免有些小伙伴看不懂:

SELECT:查找*:所有信息 FROM:来源于某个表(From xxx)user:用户表 username=‘xxx’:用户名是 xxxAND:和 OR:或–:注释,跟我们 JS 的 // 一样所以上面代码的意思是:

第一条:查找 user 表,其中 username 为 jsliang,并且密码是 123456 第二条:查找 user 表,其中 username 为 jsliang,或者 1 = 1 这样,第二条的 SQL 查询条件就必定是真的啦,我们就可以登录这个账号了。

这就是 SQL 注入。

怎么预防?这里我们不理会,属于后端需要注意的范畴。

当然后端可能要求前端帮忙防范,比如用户名不能包含 -、_ 等~

七 流量劫持

流量劫持基本分两种:DNS 劫持 和 HTTP 劫持,目的都是一样的,就是当用户访问 github.com 的时候,给你展示的并不是或者不完全是 github.com 提供的 “内容”。

7.1 DNS 劫持

DNS 劫持,也叫做域名劫持。

当用户通过某一个域名访问一个站点的时候,被篡改的 DNS 服务器返回的是一个恶意的钓鱼站点的 IP,用户就被劫持到了恶意钓鱼站点,然后继而会被钓鱼输入各种账号密码信息,泄漏隐私。

这类劫持:

要不就是网络运营商搞的鬼,一般小的网络运营商与黑产勾结会劫持 DNS 要不就是电脑中毒,被恶意篡改了路由器的 DNS 配置,基本上做为开发者或站长却是很难察觉的,除非有用户反馈。

7.2 HTTP 劫持

HTTP 劫持主要是当用户访问某个站点的时候会经过运营商网络,而不法运营商和黑产勾结能够截获 HTTP 请求返回内容,并且能够篡改内容,然后再返回给用户,从而实现劫持页面。

轻则插入小广告,重则直接篡改成钓鱼网站页面骗用户隐私,就好比 jsliang 访问某 XXDN 网站,会出现 Google 广告,实际上问了其他人的是不会有这个的。

能够实施流量劫持的根本原因,是 HTTP 协议没有办法对通信对方的身份进行校验以及对数据完整性进行校验。如果能解决这个问题,则流量劫持将无法轻易发生。

所以防止 HTTP 劫持的方法只有将内容加密,让劫持者无法破解篡改,这样就可以防止 HTTP 劫持了。

HTTPS 是基于 SSL 协议的安全加密网络应用层协议,相当于 HTTP + SSL,可以很好地防止 HTTP 劫持。

八 、浏览器网络安全

HTTP 在传输过程中的每一个环节,数据都有可能被窃取或者篡改,这也意味着你和服务器之间还可能有个中间人,在通信过程中的一切内容都在中间人的掌握中。

使用 HTTP 传输的内容很容易被中间人窃取、伪造和篡改,通常我们把这种攻击方式称为中间人攻击。

具体来讲,在将 HTTP 数据提交给 TCP 层之后,数据会经过用户电脑、WiFi 路由器、运营商和目标服务器,在这中间的每个环节中,数据都有可能被窃取或篡改。

比如用户电脑被黑客安装了恶意软件,那么恶意软件就能抓取和篡改所发出的 HTTP 请求的内容。

或者用户一不小心连接上了 WiFi 钓鱼路由器,那么数据也都能被黑客抓取或篡改。

九 、浏览器系统安全

浏览器本身的漏洞是单进程浏览器的一个主要问题,如果浏览器被曝出存在漏洞,那么在这些漏洞没有被及时修复的情况下,黑客就有可能通过恶意的页面向浏览器中注入恶意程序。

其中最常见的攻击方式是利用缓冲区溢出,不过需要注意这种类型的攻击和 XSS 注入的脚本是不一样的。

XSS 攻击只是将恶意的 JavaScript 脚本注入到页面中,虽然能窃取一些 Cookie 相关的数据,但是 XSS 无法对操作系统进行攻击。通过浏览器漏洞进行的攻击是可以入侵到浏览器进程内部的,可以读取和修改浏览器进程内部的任意内容,还可以穿透浏览器,在用户的操作系统上悄悄地安装恶意软件、监听用户键盘输入信息以及读取用户硬盘上的文件内容。

渲染进程需要执行 DOM 解析、CSS 解析、网络图片解码等操作,如果渲染进程中存在系统级别的漏洞,那么以上操作就有可能让恶意的站点获取到渲染进程的控制权限,进而又获取操作系统的控制权限。

基于此,在渲染进程和操作系统之间建一道墙,即便渲染进程由于存在漏洞被黑客攻击,但由于这道墙,黑客就获取不到渲染进程之外的任何操作权限。

将渲染进程和操作系统隔离的这道墙就是安全沙箱。

学习计划安排


我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~

这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!!!

:黑客&网络安全的渗透攻防

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

在这里领取:

这个是我花了几天几夜自整理的最新最全网安学习资料包免费共享给你们,其中包含以下东西:

1.学习路线&职业规划

在这里插入图片描述
在这里插入图片描述

2.全套体系课&入门到精通

在这里插入图片描述

3.黑客电子书&面试资料

在这里插入图片描述

4.漏洞挖掘工具和学习文档

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/4816.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Canvas与艺术】 绘制五星红旗

【注意】 该图中五星定位和大小都是按 https://www.douyin.com/note/7149362345016380710 精确绘制的。 【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8&q…

【前端】6. JavaScript(WebAPI)

WebAPI 背景知识 什么是 WebAPI 前面学习的 JS 分成三个大的部分 ECMAScript: 基础语法部分DOM API: 操作页面结构BOM API: 操作浏览器 WebAPI 就包含了 DOM BOM. 这个是 W3C 组织规定的. (和制定 ECMAScript 标准的大佬们不是一伙人). 前面学的 JS 基础语法主要学的是 EC…

【多维动态规划】Leetcode 64. 最小路径和【中等】

最小路径和 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示例 1&#xff1a; 输入&#xff1a;grid [[1,3,1],[1,5,1],[4,2,1]] 输出…

手动在Ubuntu22.04上部署LAMP环境

简介 LAMP环境是常用的Web开发环境之一&#xff0c;其中LAMP分别代表Linux、Apache、MySQL和PHP。本文介绍如何在Ubuntu操作系统的ECS实例内部署LAMP环境。 准备工作 该实例必须满足以下条件&#xff1a; 实例已分配公网IP地址或绑定弹性公网IP&#xff08;EIP&#xff09;。…

关于Dockerfile镜像实例

文章目录 Dockerfile镜像实例一、构建SSH镜像1、建立工作目录2、生成镜像3、启动容器并修改root密码 二、构建systemd镜像1、建立工作目录2、生成镜像3、运行镜像容器4、测试容器systemd 三、构建Nginx镜像1、建立工作目录2、编写Dockerfile脚本3、编写run.sh启动脚本4、生成镜…

源代码加密

企业到底该如何正确选择源代码加密产品&#xff1f; 源代码加密的方法和重点到底是怎样的&#xff1f; 源代码开发环境复杂&#xff0c;涉及的开发软件、文件类型庞杂多变&#xff0c;究竟有什么源代码加密软件能够适应众多开发软件而不影响原有的工作效率&#xff1f; 相信…

个人学习总结__打开摄像头、播放网络视频的以及ffmpeg推流

前言 最近入手了一款非常便宜的usb摄像头&#xff08;买回来感觉画质很低&#xff0c;没有描述的4k&#xff0c;不过也够用于学习了&#xff09;,想着利用它来开启流媒体相关技术的学习。第一步便是打开摄像头&#xff0c;从而才能够对它进行一系列后续操作&#xff0c;诸如实…

有趣的 CSS 图标整合技术!sprites精灵图,css贴图定位

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

vue3.0(三) Vite文件目录结构及SFC语法

文章目录 Vite介绍Vite文件目录结构SFC语法SFC 语法定义bug解决 Vite介绍 为什么使用Vite&#xff1f; 表现 与Vite的ESbuild预绑定使其比使用任何其他JS绑定器都快10到100倍。这是因为它有助于提高页面速度并将CommonJS/UMD模块转换为ESM。 基于Vite文件&#xff0c;“预绑定…

深入理解Linux调试工具eBPF和strace、内存泄漏处理、Kubernetes容器调试以及C++协程的崩溃信息收集

在软件开发领域&#xff0c;无论是初级开发者还是资深工程师&#xff0c;都需要面对复杂的调试工作。本文将介绍几个重要的调试工具和技术&#xff0c;并提供实际调试方法的指导&#xff0c;包括Linux环境下的eBPF和strace&#xff0c;内存泄漏问题的处理&#xff0c;Kubernete…

RocketMq详解:一、RocketMQ 介绍及基本概念

文章目录 前言1.RocketMQ简介2.RocketMQ 特点3.核心特性4.应用场景5.RocketMQ 优势6.RocketMQ 四大核心组件6.1 NameServer1.NameServer作用2.NameServer被设计为无状态的原因3.和NameServer和Zookeeper的区别4.NameServer的高可用保障 6.2 Broker1.Broker部署方式2.高可用与负…

[Algorithm][分治 - 归并排序][排序数组][交易逆序对的总数][计算右侧小于当前元素的个数][翻转对]详细讲解

目录 0.原理讲解1.排序数组1.题目链接2.代码实现 2.交易逆序对的总数1.题目链接2.算法原理详解3.代码实现 3.计算右侧小于当前元素的个数1.题目链接2.算法原理详解3.代码实现 4.翻转对1.题目链接2.算法原理详解3.代码实现 0.原理讲解 归并排序的流程充分的体现了**「分⽽治之」…

利用RunnerGo数据大屏强化测试管理与决策

测试平台中的数据大屏在提供实时监控、统计分析、效率提升、制定策略和促进沟通等方面具有重要的意义。它为测试团队提供更全面、更直观的数据支持&#xff0c;有助于提高测试质量和效率&#xff0c;减少风险&#xff0c;并加强团队协作和沟通。 数据大屏也是RunnerGo的核心特…

用python写单链表

目录 链表的数据结构单链表操作头插入尾插入中间插入 删除查找 总结 链表的数据结构 链表是什么呢&#xff0c;来看下 链表&#xff0c;是一种数据结构。相对于数组而言&#xff0c;是不连续的一块内存空间。不仅如此&#xff0c;而且链表有多种&#xff0c;包括&#xff1a;…

Spring Security OAuth2 统一登录

介绍 Spring Security OAuth2 是一个在 Spring Security 框架基础上构建的 OAuth2 授权服务器和资源服务器的扩展库。它提供了一套功能强大的工具和组件&#xff0c;用于实现 OAuth2 协议中的授权流程、令牌管理和访问控制。 Git地址&#xff1a;yunfeng-boot3-sercurity: Sp…

火力发电厂超低排放标准?

目录&#xff1a; 引言火力发电厂超低排放的背景与意义火力发电厂超低排放环保指标解析环保验收要求超低排放的重要性环保验收的流程与要点超低排放技术措施与应用火力发电厂超低排放的监测与评估环保验收中常见问题及解决方案案例分析&#xff1a;成功实现超低排放的火力发电…

uniapp分包,以及通过uni-simple-router进行分包

先说一下uniapp的直接分包方式&#xff0c;很简单&#xff1a; 配置分包信息 打开manifest.json源码视图&#xff0c;添加 “optimization”:{“subPackages”:true} 开启分包优化 我们在根目录下创建一个pagesA文件夹&#xff0c;用来放置需要分包的页面 然后配置路由 运行到…

Unity3d 学习之按钮绑定事件

创建测试脚本 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class myTest : MonoBehaviour {// Start is called before the first frame updatepublic Button _codeBindBtn null;void Start(){if (_codeBi…

020Node.js的FS模块使用fs.mkdir创建目录

Node.js的FS模块使用fs.mkdir创建目录 //fs.mkdir 创建目录 /*path 将创建的目录路径mode 目录权限&#xff08;读写权限&#xff09;&#xff0c;默认777callback 回调&#xff0c;传递异常参数err*/ const fsrequire(fs);fs.mkdir(./css,(err)>{if(err){console.log(err)…

03.Kafka 基本使用

Kafka 提供了一系列脚本用于命令行来操作 kafka。 1 Topic 操作 1.1 创建 Topic 创建一个名为 oldersix-topic 的 topic&#xff0c;副本数设置为3&#xff0c;分区数设置为2&#xff1a; bin/kafka-topics.sh \ --create \ --zookeeper 192.168.31.162:2181 \ --replication…