【web渗透】XSS跨站请求攻击

💕💕💕 博主昵称:摆烂阳💕💕💕

🥰博主主页跳转链接
👩‍💻博主研究方向:web渗透测试 、python编程
📃 博主寄语:希望本篇文章能给大家带来帮助,有不足的地方,希望友友们给予指导

————————————————

在这里插入图片描述

一、原理

恶意攻击者在web页面中会插入一些恶意的javascript代码。当用户浏览该页面的时候,那么嵌入到web页面中script代码会执行,因此会达到恶意攻击用户的目的。那么XSS攻击最主要有如下分类:反射型、存储型、及DOM-based型。 反射性和DOM-baseed型可以归类为非持久性XSS攻击。存储型可以归类为持久性XSS攻击。

在这里插入图片描述

二、出现的原因

程序对输入和输出的控制不够严格,导致"精心构造“的脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害,和sql注入类似,但是sql注入是在后端运行,而XSS是在前端运行

在这里插入图片描述

三、xss的分类

1、反射性

简介:

反射型xss攻击( Reflected XSS)又称为非持久性跨站点脚本攻击,它是最常见的类型的XSS。漏洞产生的原因是攻击者注入的数据反映在响应中。一个典型的非持久性XSS包含一个带XSS攻击向量的链接(即每次攻击需要用户的点击)。

插入代码 -> 执行到后端 - > 后端发送到前端 -> 浏览器解析

2、存储型XSS 或持久型 XSS(高危)

特征:

存储型XSS是指应用程序直接将攻击者提交的恶意代码存储到服务端保存,然后永久显示在其他用户的页面上。

插入代码 - > 执行到后端 -> 存储到数据库 - > 调用数据 -> 后端发送到前端 -> 浏览器解析

在这里插入图片描述可能出现的位置

1、用户注册
2、留言板
3、上传文件的文件名处
4、管理员可见的报错信息
5、在线聊天框
6、客服
7、问题反馈区
8、邮件信箱

理论上见框就插

3、DOM XSS

简介:

通过JavaScript,可以重构整个HTML文档,就是说可以添加,移除等等,对页面的某个东西进行操作时,JavaScript就需要获得对HTML文档中所有元素进行访问的入口。这个入口就是DOM,所以在DOM型的xss漏洞利用中,DOM可以看成是一个访问HTML的标准程序接口。

特征:整个过程都是在前端完成的,没有后端的参与(纯前端的操作!)

插入代码 - > 也可能会发送后端 -> 返回响应 -> js代码处理 -> 浏览器解析

四、xss的检测方法

1、工具扫描

可以使用APPscan、AWVS等工具进行扫描

2、手工测试

Burpsuite、firefox(hackbar)、XSSER XSSF

使用手工检测Web应用程序是否存在XSS漏洞时,最重要的是考虑那里有输入,输入的数据在什么地方输出。在进行手工检测XSS时,人毕竟不像软件那样不知疲惫,所以一定要选择有特殊意义的字符,这样可以快速测试是否存在XSS。

(1)在目标站点上找到输入点,比如查询接口,留言板等;

(2)输入一组"特殊字符+唯一识别字符",点击提交后,查看返回的源码,是否有做对应的处理;

(3)通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);提交构造的脚本代码,看是否可以成功执行,如果成功执行则说明存在XSS漏洞;

五、xss的危害

1、首先对于那些半年没有更新的小企业网站来说,发生XSS漏洞几乎没有什么用。一般在各类的社交平台,邮件系统,开源流行的Web应用,BBS,微博等场景中,造成的杀伤力却十分强大。

2、劫持用户cookie是最常见的跨站攻击形式,通过在网页中写入并执行脚本执行文件(多数情况下是JavaScript脚本代码),劫持用户浏览器,将用户当前使用的sessionID信息发送至攻击者控制的网站或服务器中。

3、“框架钓鱼”。利用JS脚本的基本功能之一:操作网页中的DOM树结构和内容,在网页中通过JS脚本,生成虚假的页面,欺骗用户执行操作,而用户所有的输入内容都会被发送到攻击者的服务器上。

4、挂马(水坑攻击)

5、有局限性的键盘记录

别人在你的网站插入一张照片或者一直有弹窗对自己的影响有多大是可想而知的

在这里插入图片描述

六、xss的防范手法

XSS防御的总体思路是:对输入进行过滤,对输出进行编码

过滤

根据业务需求进行过滤,比如输出点要求输入手机号,则只允许输入手机号格式的数字。

转义

所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面的进行JS转义()

1、用户注册
2、留言板
3、上传文件的文件名处
4、管理员可见的报错信息
5、在线聊天框
6、客服
7、问题反馈区
8、邮件信箱

理论上,见框就插。

七、JavaScript的使用

1、语法格式

<script>
[Javascript代码]
</script>

例如:

<!DOCTYPE html>
		<html>
			<head>
				<meta charset="utf-8">
				<title></title>
			</head>
			<body>
				<script type="text/javascript">
				alert('第一个javascript程序');
				</script>
			</body>
		</html>

1、xss常用的js标签

alert

alert()方法用于显示带有一条指定消息和一个确认按钮的警告框

window.location

window.location对象用于获得当前页面的地址(URL) ,并把浏览器重定向到新的页面

ocation.href

返回当前显示的文档的完整URL

onload

一张页面或一幅图像完成加载

onerror

在加载文档或图像时发生错误

onchange

HTML 元素改变

onclick

用户点击 HTML 元素

onmouseover

鼠标指针移动到指定的元素上时发生

onmouseout

用户从一个 HTML 元素上移开鼠标时发生

onkeydown

用户按下键盘按键

八、靶场演示

1、dedecms系统

首先在存在注入的地方输入payload

在这里插入图片描述

后台管理员查看信息

在这里插入图片描述
xss平台成功获取信息

在这里插入图片描述

2、xss订单系统

首先在订单页面中找到没有限制的输入点(具体要求)设置payload
在这里插入图片描述
后台管理员访问订单信息

在这里插入图片描述
Xss平台成功获取信息
在这里插入图片描述

九、xss的修复建议

1.在cookie中设置了HttpOnly属性,那么通过JavaScript脚本将无法读取到cookie信息,这样能一定程度上防止XSS攻击。

2.假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的cookie中的变量,HTTP请求头部中的变量等。

3.不仅验证数据的类型,还要验证其格式、长度、范围和内容

4.过滤“<” 、“>” 将用户输入放入引号间,基本实现数据与代码隔离;过滤双引号防止用户跨越许可的标记,添加自定义标记;过滤TAB和空格,防止关键字被拆分;过滤script关键字;过滤&#,防止HTML属性绕过检查。在客户端和服务器端同时做数据的验证与过滤。

5.对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。

本章小结

在这里插入图片描述

XSS攻击最终目的是在网页中嵌入客户端恶意脚本代码,最常用的攻击代码是javascript语言,但也会使用其它的脚本语言,例如:ActionScript、VBscript。而如今的互联网客户端脚本基本是基于Javascript,所以如果想要深入研究XSS,必须要精通Javascript。换句话说,JavaScript能做到什么效果,XSS的胃里就有多大。这完全不是危言耸听。javascript可以用来获取用户的cookie,弹出窗口,那么存在XSS漏洞的网站,XSS就可以用来盗取用户Cookie,废掉页面,导航到恶意网站!更高端的XSS代码完全可以进行监控你的键盘操作,模仿Windows注销界面,诱导你输入开机密码!而攻击者需要做的仅仅是向你的代码中注入Javascript代码!

本文是本人以前笔记,博主主页跳转链接如果有哪里不对的话欢迎各位大佬指出问题,本人也是初学python,希望可以和各位朋友一起学习进步。

点击跳转到博主python专栏:
如果有喜欢web安全的朋友,请在web渗透专栏中进行查看,点击跳转到博主web渗透专栏

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论
学习web渗透测试的线路可以按照以下步骤进行: 1. 先了解什么是web渗透测试。Web渗透测试是指在对目标网站系统信息不知情的情况下,对其进行渗透的过程。可以分为白盒测试和黑盒测试两种方式。白盒测试是在了解目标网站的源码等信息的情况下进行渗透,相当于代码分析审计。而黑盒测试则是在不知道目标网站系统信息的情况下进行渗透。 2. 学习计算机网络的基础知识。计算机网络web渗透测试的基础,掌握网络协议、抓包和扫描主机开放的其他服务端口等技术对于渗透测试至关重要。推荐学习《计算机网络自顶向下方法》,这本书以一种层层剖析的方式讲解了网络的封装过程,包括常见的问题如TCP握手以及阻塞机制等。 3. 学习渗透测试的工具和技术。了解并掌握常用的渗透测试工具,如Nmap、Metasploit、Burp Suite等,以及相关的技术,如XSS、SQL注入、漏洞利用等。通过实践和实际操作,加深对这些工具和技术的理解和掌握。 4. 深入学习web应用安全知识。了解常见的web漏洞类型,如跨站脚本攻击XSS)、跨站请求伪造(CSRF)、SQL注入等,并学习相应的防御措施。熟悉常用的web框架和安全配置,加强对web应用安全的理解和实践。 5. 参与实际的渗透测试项目。通过参与实际的渗透测试项目,不断积累经验和提升技能。可以通过参加CTF比赛、模拟演练或者找到相关的实习机会来锻炼自己的能力。 总结起来,学习web渗透测试的线路包括了了解渗透测试的基本概念,学习计算机网络基础知识,掌握渗透测试工具和技术,深入学习web应用安全知识,并参与实际的渗透测试项目。通过这些步骤的学习和实践,可以逐渐提升自己在web渗透测试领域的能力和水平。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [web渗透测试学习路线](https://blog.csdn.net/2302_77844491/article/details/131147129)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【安全测试工程师】超实用的Web渗透测试学习路线~](https://blog.csdn.net/weixin_44433834/article/details/119330778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摆烂阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值