渗透测试基础-反射型XSS原理及实操

只为对所学知识做一个简单的梳理,如果有表达存在问题的地方,麻烦帮忙指认出来。我们一起为了遇见更好的自己而努力💪!

XSS是什么

因为人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,将跨站脚本攻击缩写为XSS。这就是XSS名字的由来。XSS攻击是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其他用户的使用界面中,通过代码所执行的不同行为,将Cookie或者其他信息发送给攻击者,攻击者可通过这些信息实施破坏或窃取有效信息为己用。

然后说什么为叫反射性XSS攻击?除了反射型,还有其他别的不同的攻击方式嘛?

  1. 反射型XSS:
    通过给别人发送带有恶意脚本代码参数的url,当url地址被打开时,特有的恶意代码参数别html解析,执行。特点是非持久化,也不存入网站服务器中。
    缺点:
    1.1 必须用户点击带有特定恶意脚本代码参数的链接才能执行
    1.2 恶意代码存放在url中,只有用户在点击恶意链接的时候才会执行恶意代码,所有它的隐蔽性很差,可以直观的看到访问了怎样的站点,当然不了解的,也不容易看出来。

  2. 储存型XSS:
    恶意语句会进入到目标服务器中,包括但不限于数据库里面,存写进去的方式,比如网站的留言板,个人信息,文章发布等地方,如果这些地方未对传入的数据细致的过滤,就会有储存型XSS的产生。
    其特点在于,持久性较长,危害性较大。

  3. DOM型XSS
    这个在后面的文章中在详细介绍。

我们来看一看XSS具体是怎样一种表现形式,和利用流程

XSS的表现形式和利用流程

在这里插入图片描述
这个网页,有这么些功能,用户可以在这里填写信息,网页会对其保存,你还可以在旁边的浏览中看到自己留言的信息,像这样的地方就容易存在漏洞。

我们一开始可以不用直接让其弹窗,可放入一些符号,看这些地方,是否有对其进行相应的过滤处理。
在这里插入图片描述
在这里插入图片描述
在上图可以看见,我们在括号里面填写了尖括号单引号双引号,这里都显示了出来,在F12中也能看到并没有做什么限制或者转换。这里很可能存在XSS注入

接下来尝试放入弹窗语句测试

测试语句:
<script>alert('m yxsstest')</script>

这个语句呢,为js语句,前后的<script>标签,让浏览器知道这个地方是js的,要用js的出来方式来处理,中间的alert()提醒的意思,它会以弹窗的方式跳出来提醒你,括号中间是需要弹出的语句字符串用引号框选,数字可直接填写。放入刚才留言板中。
在这里插入图片描述
在这里插入图片描述

点击提交留言后,刚刚写的提示语就弹了出来,证实这里存在xss漏洞
当点击查看留言时,也会跳出刚刚需要提醒的语句
在这里插入图片描述

反射型XSS的靶场演练

在这里插入图片描述
因为是反射型的靶场,所以只要让其弹窗就行了。

我们还是刚刚一样,先看一下这里会对什么符号进行处理。
在这里插入图片描述
在这里插入图片描述
执行之后,根据它显示给我们查看的内容,好像是什么都没有发生改变,其实并不然,我们F12进入详细查看一下。

在这里插入图片描述
这里是看到了上面的内容,但还得转换为HTML一下。
在这里插入图片描述
在这里插入图片描述
这里看到了实际内容,原来这里是做了处理的,将我们的两个尖括号做了实体编码
在这里插入图片描述
这样我们这里尖括号是肯定用不了了,在看看其他信息。
在这里插入图片描述
在这里插入图片描述
在后续的测试中,看到了不一样的事情,这里输入单个双引号,双引号还显示在框框里,且在F12中能看到,它处在两个双引号中,但是在测试输入一个单引号时,发生了变化,表单框里的单引号不见了,显然是这个单引号得到了执行,查看下面的F12也查看到了异样

既然这样,我们可以尝试另外类型的标签来测试,事件型标签

事件型标签:当一个事件发生时,所执行什么动作,叫做事件型标签,事件型标签挺多的,可以参考下面的连接(https://www.w3school.com.cn/tags/html_ref_eventattributes.asp),我们这里简单介绍两个。oninputonclick第一个:当输入时触发;第二个:当鼠标单击时触发。

我们接着看靶场,既然这里会用到单引号,我们先输入单引号开头,然后跟上事件标签,因为输入的语句是在双引号之内的,所以末尾得让其注释掉//

测试语句:
'oninput=alert(1)//

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

提交之后,在随便输入一个字母,页面就弹窗了。看下面的代码发现,输入的语句拼接进了前段代码中,我们输入的单引号和前面的引号居然闭合了,这里就说明人家这里本来就是单引号,由于浏览器的渲染,显示成了双引号,后面的注释将末尾的引号注释掉,语句成功执行。

漏洞总结

XSS的防护方法和注入也一样,过滤为主,将尖括号和单双号引号都进行实体编码了,这里就不存在XSS了。

《最好的防御,是明白其怎么实施的攻击》

黑客&网络安全如何学习

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

1.学习路线图

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

如果你对网络安全入门感兴趣,那么你点击这里👉CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

如果你对网络安全入门感兴趣,那么你点击这里👉CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

如果你对网络安全入门感兴趣,那么你点击这里👉CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

朋友们如果需要点击下方链接也可扫描下方微信二v码获取网络工程师全套资料【保证100%免费】

在这里插入图片描述

<think>嗯,用户想了解如何使用JavaScript进行渗透测试的技术和工具。首先,我需要回忆一下渗透测试中JavaScript常见的攻击面和测试方法。记得XSS(跨站脚本攻击)和DOM-based漏洞都是常见的JavaScript相关漏洞,应该先提这些。另外,CSRF(跨站请求伪造)和点击劫持可能也需要JavaScript来实现,所以这些也应该包括进去。 然后,工具方面,用户可能知道Burp Suite和OWASP ZAP,这些都是常用的渗透测试工具,特别是处理Web应用的时候。不过JavaScript特定的工具,比如JSBeautifier或者Chrome开发者工具,可能也需要提到,用于代码分析和调试。 接下来,用户可能需要具体的例子,比如如何手动测试XSS,或者如何使用工具自动扫描。比如,用Burp Suite拦截请求并修改参数来测试存储型XSS。或者使用Node.js工具进行依赖库的漏洞扫描,比如npm audit。 另外,用户的问题可能涉及到实际代码示例,比如演示一个简单的XSS漏洞,或者如何用JavaScript构造CSRF的PoC。这时候需要提供一些代码片段,但要注意安全,确保示例仅用于教育目的。 还要考虑用户可能的深层需求,比如他们是否在开发中需要防范这些漏洞,或者他们正在学习渗透测试。因此,除了攻击技术,可能还需要提到防御措施,比如CSP(内容安全策略)或输入验证,但用户的问题主要是关于测试技术,所以防御部分可以简要带过。 需要检查是否有相关的引用文献,比如站内引用的那篇关于Web应用扫描的文章,里面提到了自动化工具和手动测试,可以引用到回答中,特别是在讨论工具使用的时候。 最后,生成的相关问题需要围绕JavaScript渗透测试的扩展,比如具体漏洞的深入分析、工具比较或者与其他语言的对比。确保问题有针对性,能帮助用户进一步学习。 总结一下,回答的结构应该是先介绍常见攻击技术,然后列出工具和示例,最后提供相关问题和引用。确保使用正确的中文术语,并且LaTeX格式正确,如果有数学表达式的话。不过JavaScript渗透测试可能更多涉及代码而非数学,但如果有涉及加密或算法的地方,比如哈希函数,可能需要用LaTeX表达。</think>### 如何使用JavaScript进行渗透测试 #### 一、JavaScript渗透测试的核心技术 1. **跨站脚本攻击(XSS)测试** - **反射型XSS**:通过URL参数注入恶意脚本,例如: ```javascript http://example.com/search?q=<script>alert(1)</script> ``` - **存储型XSS**:在用户输入(如评论、表单)中注入脚本,持久化到数据库[^1]。 - **DOM型XSS**:利用未过滤的`document.location`或`innerHTML`操作触发漏洞。 2. **客户端逻辑漏洞检测** - 分析前端验证绕过(如修改`onsubmit`事件或禁用JavaScript)。 - 检测敏感数据泄露(如硬编码API密钥或调试信息)。 3. **CSRF攻击模拟** 构造恶意页面发起跨域请求: ```html <form action="http://bank.com/transfer" method="POST"> <input type="hidden" name="amount" value="1000"> </form> <script>document.forms[0].submit();</script> ``` 4. **点击劫持与DOM操作** 使用`iframe`覆盖透明层诱导用户交互: ```css iframe { opacity: 0; position: absolute; top: 0; } ``` #### 二、工具与实操示例 1. **自动化扫描工具** - **Burp Suite**:拦截修改HTTP请求测试XSS,通过`Intruder`模块模糊测试参数。 - **OWASP ZAP**:自动化识别未编码输出的`innerHTML`调用。 2. **代码分析与调试** - **Chrome DevTools**: - 使用`Sources`面板调试JavaScript执行流 - 通过`Console`动态修改DOM属性 - **JSBeautifier**:格式化混淆代码以分析潜在漏洞。 3. **依赖库漏洞检测** 使用`npm audit`扫描第三方库(如存在已知漏洞的`lodash`版本): ```bash npm audit ``` #### 三、防御措施验证 1. **内容安全策略(CSP)测试** 检查`Content-Security-Policy`头是否限制非法脚本加载: ```http Content-Security-Policy: script-src 'self' ``` 2. **输入输出编码验证** 确保使用`textContent`替代`innerHTML`,或采用编码库如`DOMPurify`。 ```javascript // 安全示例 document.getElementById("output").textContent = userInput; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值