1 XSS漏洞简介定义/原理跨站脚本Cross-Site Scripting本应该缩写为CSS但是该缩写已被层叠样式脚本Cascading Style Sheets所用所以改简称为XSS。也称跨站脚本或跨站脚本攻击。跨站脚本攻击XSS通过将恶意得Script代码注入到Web页面中当用户浏览该页之时嵌入其中Web里面的Script代码会被执行从而达到恶意攻击用户的目的。本质是一种针对网站应用程序的安全漏洞攻击技术是代码注入的一种 。特点XSS主要基于JavaScript完成恶意的攻击行为由于JS可以非常灵活地操作html、css和浏览器使得跨站脚本攻击的“想象”空间特别大。攻击对象被攻击者的浏览器。用户最简单的动作就是使用浏览器上网并且浏览器中有javascript解释器可以解析javascript然后浏览器不会判断代码是否恶意也就是说xss的对象是用户的浏览器。一般的攻击过程攻击者将恶意代码注入到服务器中如论坛、留言板、邮件等用户在没有防备的情况下访问了被注入了恶意代码的服务器服务器将含有恶意代码的网页响应给客户端在客户端浏览器中触发JS恶意代码。微博、留言板、聊天室等等收集用户输入的地方都可能被注入xss代码都存在遭受xss的风险只要没有对用户的输入进行严格过滤就会被xss。当攻击者可以将恶意代码注入到服务器中我们就认为其存在xss漏洞。2 XSS漏洞危害恶意用户利用xss代码攻击成功后可能会得到很高的权限XSS漏洞主要有以下危害1盗取各种用户账号2窃取用户Cookie资料冒充用户身份进入网站3劫持用户会话执行任意操作是指操作用户浏览器4刷流量执行弹窗广告5传播蠕虫病毒。等等3 XSS漏洞分类XSS漏洞大概可以分为三个类型反射型XSS、存储型XSS和DOM型XSS。3.1 反射型XSS定义反射型XSS是非持久性、参数型跨站脚本。反射型XSS的JS代码在web应用的参数变量中如搜索框的反射型XSS。特点这种攻击方式往往具有一次性。攻击方式攻击者通过电子邮件等方式将包含xss代码的恶意链接发送给目标用户。当目标用户访问该链接时服务器接收该目标用户的请求并进行处理然后服务器把带有xss代码的数据发送给目标用户的浏览器浏览器解析这段带有xss代码的恶意脚本后就会触发xss漏洞。3.2 存储型XSS定义存储型XSS是持久性跨站脚本持久性体现在xss代码不是在某个参数变量中而是写进数据库或文件等可以永久保存数据的介质中。存储型XSS通常发生在留言板等地方。我们在留言板位置留言将恶意代码写进数据库中。特点攻击脚本将被永久地存放在目标服务器的数据库或文件中具有很高的隐蔽性。攻击方式这种攻击多见于论坛、博客和留言板攻击者在发帖的过程中将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来恶意脚本也永久地被存放在服务器的后端存储器中 。 当其他用户浏览这个被注入了恶意脚本的帖子时恶意脚本会在他们的浏览器中得到执行 。所以需要浏览器从服务器载入恶意的xss代码才能真正触发xss。反射型与存储型SCC对比如果我们能够谨慎对待不明链接那么反射型XSS攻击将没有多大作为而存储型XSS则不同由于它注入在一些我们信任的页面因此无论我们多么小心都难免会受到攻击。3.3 DOM型XSS3.3.1 节点树模型DOM全称Document Object Model中文为文档对象模型使用DOM可以使程序和脚本能够动态访问和更新文档的内容、结构及样式 。HTML 的标签都是节点而这些节点组成了 DOM 的整体结构一一节点树。通过HTML DOM树中的所有节点均可通过JavaScript进行访问 。 所有HTML元素节点均可被修改也可以创建或删除节点 。3.3.2 DOM型XSS定义DOM型XSS比较特殊。owasp关于DOM型XSS的定义是基于DOM的XSS是一种XSS攻击其中攻击的payload由于修改受害者浏览器页面的DOM树而执行的。其特殊的地方就是payload在浏览器本地修改DOM树而执行并不会传到服务器上这也就使得DOM型XSS比较难以检测。网页的生成及修改在网站页面中有许多元素当页面到达浏览器时浏览器会为页面创建一个顶级的Documentobject文档对象接着生成各个子文档对象每个页面元素对应一个文档对象每个文档对象包含属性、方法和事件 。可以通过JS脚本对文档对象进行编辑从而修改页面的元素 。 也就是说客户端的脚本程序可以通过DOM动态修改页面内容从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的所以基于DOM型的xss漏洞不需要与服务器端交互它只发生在客户端处理数据的阶段。攻击方式用户请求一个经过专门设计的URL它由攻击者提交而且其中包含XSS代码。服务器的响应不会以任何形式包含攻击者的脚本。 当用户的浏览器处理这个响应时 DOM对象就会处理XSS代码导致存在XSS漏洞 。4 漏洞验证本博客内容仅供学习探讨请勿滥用乱用4.1 漏洞验证相关概念POC全称 ’ Proof of Concept 中文 ’ 概念验证 ’ 常指一段漏洞验证的代码。EXP全称 ’ Exploit 中文 ’ 利用 指利用系统漏洞进行攻击的工具即从漏洞检测验证到利用的工具。Payload中文 ’ 有效载荷 指成功exploit之后真正在目标系统执行的代码或指令。Shellcode简单翻译 ’ shell代码 利用漏洞时所执行的代码是Payload的一种。Shellcode也有很多种包括正向的反向的甚至meterpreter。4.2 漏洞验证相关概念之间的区别1POC与EXP对比POC是用来验证漏洞存在的EXP是用来完整利用漏洞(包括从验证到利用全过程)的两者通常不是一类或者说PoC通常是无害的Exp通常是有害的有了POC才有EXP。2Payload与ShellcodePayload有很多种它可以是Shellcode也可以直接是一段系统命令。3Payload与EXP同一个Payload可以用于多个漏洞但每个漏洞都有其自己的EXP也就是说不存在通用的EXP。4Payload模块在Metasploit Framework 6大模块中有一个Payload模块在该模块下有Single、Stager、Stages这三种类型Single是一个all-in-one的Payload不依赖其他的文件所以它的体积会比较大Stager主要用于当目标计算机的内存有限时可以先传输一个较小的Stager用于建立连接Stages指利用Stager建立的连接下载后续的Payload。Stager和Stages都有多种类型适用于不同场景。4.3 常见POC可以用一段简单的代码POC来验证与检查漏洞的存在常见的用于验证XSS漏洞存在的POC如下scriptalert(/xss/)/script //弹框最常用 scriptconfirm(xss)/script //弹出确认框 scriptprompt(xss)/script //弹出输入框我们发现提交的代码scriptalert(/xss/)/script被当作字符串输出在HTML页面中浏览器会根据script标签识别为JS代码语句并会执行它执行弹窗操作。也就是说可以执行其他任意JS代码因此我们验证了XSS漏洞的存在性。5 XSS漏洞验证实例5.1 反射型XSS漏洞验证实例反射型XSS漏洞常存在于参数中。本实验在XSS-labs第一关做验证。具体步骤如下1访问win2008R2SP1虚拟机上的xss-labs靶场页面如下。2点击图片进入xss-labs靶场的第一关如下所示3我们将URL中的参数修改为?namea回车可以看到弹出以下页面并将我们的内容显示在页面上。输入什么网页则返回什么说明可能是一个XSS漏洞注入点。4我们将参数修改为?namescriptalert(/xss/)/script测试是否触发弹窗。回车可以看到弹出窗口说明网站后台未对输入参数进行过滤存在xss漏洞。5我们右键网页点击查看源码如下。由于该网页没有对输入输出内容做任何的检验与过滤导致这种异常的内容输出到客户端浏览器浏览器对内容做解析时将内容按script标签进行解析故弹窗。!DOCTYPE html!--STATUS OK--html head meta http-equivcontent-type contenttext/html;charsetutf-8 script window.alert function() { confirm(完成的不错); window.location.hreflevel2.php?keywordtest; } /script title欢迎来到level1/title /head body object styleborder:0px typetext/x-scriptlet datahttp://xss.tv/themes/default/templates/head.html width100% height50/object h1 aligncenter欢迎来到level1/h1 h2 aligncenter欢迎用户scriptalear(/xss/)/script/h2centerimg srclevel1.png/center h3 aligncenterpayload的长度:29/h3/body /html5.2 存储型XSS漏洞验证实例存储型XSS漏洞常存在于数据库内容中如留言板等。此处利用之前搭建的论坛网站的留言功能作为实验平台该平台的搭建过程参考《【(SQLHTMLPHP)综合】一个简单论坛网站的综合开发案例》。具体过程如下1我们登录访问上述网站使用我们之前住过的账号a密码1。登录后返回首页点击“我要留言”。2使用留言功能留下如下的内容。点击提交3再次返回首页可以看到刚刚留下的留言。4点击该留言出现弹窗这就是存储型XSS漏洞。5右键该页面查看网页源码如下。我们看到因为我们搭建的平台没有对输入输出内容做任何的检验与过滤导致这种异常的内容输出到客户端浏览器浏览器对内容做解析时将内容按script标签进行解析故弹窗。html head meta charset utf-8 title留言论坛/title /head body h1留言内容/h1a href ./index.php返回首页/ahr / a:存储型xsshr/scriptalert(/xss/)/script/body /html5.3 DOM型XSS漏洞验证实例我们将以下代码存在phpstudy网站的根目录下的DOM-XSS.php文件中稍后进行测试。该代码中的script标签内的内容意思是定义一个变量a并赋值为URL为a解码将message后面的内容写入到DOM树中。html head titleDOM-XSS/title meta charsetutf-8 /head body script var a document.URL; //将当前页面的url赋值给变量a a unescape(a); //url有些代码是经过url编码之后的此为将url编码进行解码 document.write(a.substring(a.indexOf(message)8,a.length)); //a.indexOf字符串首次出现的位置8message为8字符为取message之后的内容 //document.write将内容写到html页面中 /script /body /html1我们通过浏览器访问该网页因为我们还没有给URL传递参数message此处将内容以存文本的形式输出。解析为什么页面这样显示a此处为http://172.16.1.1/DOM-XSS.phpdocument.write(a.substring(a.indexOf(“message”)8,a.length));①a为变量也即为对象对象的访问为[对象名称.属性]②a.indexOf(“message”)是指message开始出现时的起始位置此处没有message即为0③a.indexOf(“message”)8即为8④a.substring(a.indexOf(“message”)8,a.length)取截取a的值为字符串即http://172.16.1.1/DOM-XSS.php从第8位开始截取a的长度个字符2修改参数为?messagegood回车时页面显示good。3修改参数为?messagescriptalert(/xss/)/script回车时则出现弹窗。4我们右键查看源代码发现代码与刚刚编写的一致并没有弹窗的内容。5审查网页元素则可以看到DOM树这里多出了个弹窗内容就是上述document语句修改生成的。有的浏览器查看结果有区别可以试试不同浏览器的解析结果修改DOM树浏览器重新渲染页面。6修改参数为#messagescriptalert(/xss/)/script回车时也出现弹窗。#后面内容为锚点锚点内容不会提交到服务器。6 总结1掌握XSS的攻击过程2掌握XSS的分类及各类原理3了解XSS的危害。4掌握XSS的验证网络安全的知识多而杂怎么科学合理安排下面给大家总结了一套适用于网安零基础的学习路线应届生和转行人员都适用学完保底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个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗想要入坑黑客网络安全的朋友给大家准备了一份282G全网最全的网络安全资料包免费领取网络安全大礼包《黑客网络安全入门进阶学习资源包》免费分享7、脚本编程初级/中级/高级在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中面对复杂多变的网络环境当常用工具不能满足实际需求的时候往往需要对现有工具进行扩展或者编写符合我们要求的工具、自动化脚本这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中想要高效地使用自制的脚本工具来实现各种目的更是需要拥有编程能力.零基础入门建议选择脚本语言Python/PHP/Go/Java中的一种对常用库进行编程学习搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP IDE强烈推荐Sublime·Python编程学习学习内容包含语法、正则、文件、 网络、多线程等常用库推荐《Python核心编程》不要看完·用Python编写漏洞的exp,然后写一个简单的网络爬虫·PHP基本语法学习并书写一个简单的博客系统熟悉MVC架构并试着学习一个PHP框架或者Python框架 (可选)·了解Bootstrap的布局或者CSS。8、高级黑客这部分内容对零基础的同学来说还比较遥远就不展开细说了贴一个大概的路线。网络安全工程师企业级学习路线很多小伙伴想要一窥网络安全整个体系这里我分享一份打磨了4年已经成功修改到4.0版本的**《平均薪资40w的网络安全工程师学习路线图》**对于从来没有接触过网络安全的同学我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。如果你想要入坑黑客网络安全工程师这份282G全网最全的网络安全资料包网络安全大礼包《黑客网络安全入门进阶学习资源包》免费分享学习资料工具包压箱底的好资料全面地介绍网络安全的基础理论包括逆向、八层网络防御、汇编语言、白帽子web安全、密码学、网络安全协议等将基础理论和主流工具的应用实践紧密结合有利于读者理解各种主流工具背后的实现机制。网络安全源码合集工具包视频教程视频配套资料国内外网安书籍、文档工具 因篇幅有限仅展示部分资料需要点击下方链接即可前往获取黑客/网安大礼包CSDN大礼包《黑客网络安全入门进阶学习资源包》免费分享好了就写到这了,大家有任何问题也可以随时私信问我!希望大家不要忘记点赞收藏哦!特别声明此教程为纯技术分享本文的目的决不是为那些怀有不良动机的人提供及技术支持也不承担因为技术被滥用所产生的连带责任本书的目的在于最大限度地唤醒大家对网络安全的重视并采取相应的安全措施从而减少由网络安全而带来的经济损失。本文转自网络如有侵权请联系删除。