数据来源

部分数据来源:ChatGPT

一、跨站脚本攻击简介

1、什么是跨站脚本攻击?

跨站脚本攻击(Cross-site scripting,XSS)是一种常见的网络安全漏洞,攻击者通过在受害网站注入恶意脚本代码,使得其他用户访问该网站时执行这些恶意代码,从而达到攻击的目的。

2、危害?

  • 获取用户信息:(如浏览器信息、ip地址、cookie信息等)
  • 钓鱼:(利用xss漏洞构造出一个登录框,骗取用户账户密码,提示登录过期,模拟一个网站的登录框,将用户名、密码发送到攻击者服务器)
  • 注入木马或广告链接:(有些在主站注入非法网站的链接,对公司的声誉有一定的影响)·
  • 后台增删改网站数据等操作:(配合CSR漏洞,骗取用户点击,利用s模拟浏览器发包)
  • xss蠕虫(微博蠕虫:只要看过某人的微博就是自动关注某人;贴吧蠕虫:看过某个帖子就是自动回复这个帖子)

二、跨站脚本攻击漏洞类型及利用场景

跨站脚本攻击(Cross-Site Scripting, XSS)主要有以下三种类型:

  1. 反射型XSS:攻击者构造一个包含恶意脚本的链接,诱骗用户点击后触发攻击。
  2. 存储型XSS:攻击者将恶意脚本代码上传到目标网站数据库中,当其他用户访问该网站后执行恶意代码。
  3. DOM型XSS:攻击者通过DOM操作动态插入恶意脚本代码,然后用户触发恶意代码执行。

XSS攻击可能导致用户个人信息泄露、账户被盗、钓鱼等风险,因此,网站开发者应该遵循安全编码规范,对输入输出做好过滤和转义工作,以防止XSS攻击。

攻击者利用XSS漏洞进行攻击的场景很多,以下是一些可能的情况:

  1. 盗取用户账号密码等个人敏感信息。
  2. 发布虚假信息诈骗资金或滥发垃圾信息等。
  3. 欺骗用户钓鱼、下载恶意软件等。
  4. 篡改网页内容、挂马、植入广告等。
  5. 利用XSS漏洞攻击服务器内网、渗透系统等。

为了防止XSS攻击,开发者需要加强输入输出数据的校验和过滤,减少脚本可执行内容,并及时更新补丁等方式来提高系统的安全性。

http://testfire.net  这是一个开源的测试网站,攻击这个网站不犯法。

1)反射型xss - 利用示例-测试网站是否存在反射型xss

先在输入框输入点东西,随便写如:hello、你好啊,李银河  如下图:

然后加上一些HTML标签,如:h1~h3、p、a等等

 <a href="https:www.baidu.com">你好啊,李银河</a>

李银河是谁?我也不知道.

测试到这里我们就可以得出结论,这个网站存在反射型xss,可以被不法分子利用,出现这个漏洞的原因:写这个网站的前端开发人员没有对输入框的输入内容进行过滤,当然一般大型网站是没有这种漏洞的,Altoro Mutua这个网站是外国人专门开发给别学习测试攻击的所以有很多漏洞。

如果你需要在输入框执行JS代码则需要写在 <script>标签内,如:

<script>alert("hello,zhangsan")</script>

        alert() 这个函数的效果就是在页面弹窗,完整写法:window.alert() 简写: alert()

        或者输入:<img src=1 οnerrοr=alert(1)>     # img 是图像标签,src填写的是图片路径这里写1路径肯定是不存在的然后就报错,error 就是捕获报错的事件,on是绑定事件给这个img标签,“=”后面就可以跟我们要执行的JS代码

2)存储型XSS利用示例

这里我就使用DVWA靶场做测试(windows安装,kali安装)

首先,把靶场的安全等级调到最低

选择XSS存储

<script>alert("hello,zhangsan")</script>
<scr<script>ipt>alert("xss")</script>

刷新网页之后,弹框还是出弹出。

原因:输入框没有严格的筛选就存到了数据库中,网页从数据库拿出数据展示也没有做过滤。

可以查看源码,看看这个网页是如何写的

<?phpif( isset( $_POST[ 'btnSign' ] ) ) {// Get input$message = trim( $_POST[ 'mtxMessage' ] );$name    = trim( $_POST[ 'txtName' ] );// Sanitize message input$message = stripslashes( $message );$message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));// Sanitize name input$name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));// Update database$query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";$result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );//mysql_close();
}?> 

        trim()                                         #  trim()函数主要作用是移除字符串两侧的空白字符或其他预定义字符。
        mysql_real_escape_string()  # 函数会对字符串中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义。
        stripslashes()               # 函数删除字符串中的反斜杠

        $query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";   # INSERT INTO 是SQL的插入语句,这条代码主要是把$message(我们输入的留言内容)和$name(留言名称)分别插入到数据库的guestbook表的comment和name字段中。对SQL基础语句不了解的可以看这篇:SQL的基本语句用法

可以看到,对输入并没有做XSS方面的过滤与检查,且存储在数据库中,因此这里存在明显的存储型XSS漏洞

可以自行把安全等级调高然后查看源码,看看是如何做防御的(我这就不多讲了,有兴趣的可以看这篇:DVWA(XSS存储型) 我觉得他写的挺详细的)

不同的计算机语言防御方式是不一样的,不过原理都是相通的。

3)DOM型XSS-利用示例

DVWA靶场做测试 

跟之前的一样先把安全等级调到最低 

开始测试,原来的下拉列表的DOM结构如下图:(F12可以打开开发者模式,查看网页的结构代码)

 检测网站是否存在XSS的DOM漏洞

<script>alert("test")</script>

盗取网站的cookie 

<script>alert(document.cookie)</script>

防御的话,可以自行调高安全等级然后查看源码

三、防御策略

为了防止跨站脚本攻击(Cross-site scripting, XSS)对系统带来的安全威胁,以下是一些常见的防御策略:

  1. 对用户输入做好过滤和转义处理,避免被直接执行作为脚本代码。开发者可以使用一些现成的库和框架来实现数据过滤和转义,例如OWASP ESAPI、JQuery等。
  2. 在请求中包含HTTPOnly标记的cookie,避免JavaScript脚本获取Cookie值。
  3. 配置CSP(Content-Security-Policy)头部,限制页面资源的加载和执行,减少XSS攻击的可能性。
  4. 使用低特权账号和权限分离策略,避免敏感操作的恶意执行和篡改页面内容。
  5. 及时更新补丁和升级软件版本,以消除可能存在的安全漏洞。
  6. 对于发生XSS攻击的网站,及时清除和恢复受影响的数据,同时加强监控和日志审计,快速发现异常情况并进行处理。

跨站脚本攻击漏洞(XSS):基础知识和防御策略相关推荐

  1. php文件跨站漏洞防御,修复PHP跨站脚本攻击漏洞(XSS)方法

    1.昨天360站长之家开通官网直达,安全报高突然报[高危]跨站脚本攻击漏洞,必须修复才可进行官网直达. 2.神马是XSS,额我也不懂,百度如下: 用户在浏览网站.使用即时通讯软件.甚至在阅读电子邮件时 ...

  2. WEB漏洞篇——跨站脚本攻击(XSS)

    目录 一.XSS简述 1.1 什么是XSS 1.2 XSS分类 1.3 DOM XSS漏洞演示 二.XSS攻击进阶 2.1 初探XSS Payload 2.2 强大的XSS Payload 2.3 X ...

  3. XSS(跨站脚本)漏洞详解之XSS跨站脚本攻击漏洞的解决

    XSS(跨站脚本)漏洞详解 XSS的原理和分类 跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆, ...

  4. XSS跨站脚本攻击漏洞(1)

    XSS漏洞介绍: xss攻击的目录就是让前端把我们的攻击代码执行 跨站攻击   全都是前端的  只需要右击查看源代码就可以查看到漏洞了 测试漏洞方式:弹窗测试(测试成功以后具体功能实现的xss代码有很 ...

  5. XSS(跨站脚本攻击)漏洞解决方案

    XSS(跨站脚本攻击)漏洞解决方案 参考文章: (1)XSS(跨站脚本攻击)漏洞解决方案 (2)https://www.cnblogs.com/boboxing/p/9261996.html 备忘一下 ...

  6. web攻防之跨站脚本攻击漏洞

    摘要:XSS跨站脚本攻击一直都被认为是客户端Web安全中最主流的攻击方式.因为Web环境的复杂性以及XSS跨站脚本攻击的多变性,使得该类型攻击很难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什么, ...

  7. web安全性测试用例(输入、输出、SQL注入、跨站请求伪造(CSRF)、跨站脚本攻击(XSS))实实在在的干货

    https://www.cnblogs.com/qmfsun/p/3724406.html 建立整体的威胁模型,测试溢出漏洞.信息泄漏.错误处理.SQL 注入.身份验证和授权错误. 1.   输入验证 ...

  8. 怎么防止跨站脚本攻击(XSS)?

    一.XSS 是什么? 跨站脚本攻击(Cross-site scripting,XSS)是攻击者向网站注入恶意脚本,等待用户访问网站并自动运行恶意脚本发起攻击的过程.不同的脚本可以实现不同目的: 盗用c ...

  9. 跨站脚本攻击漏洞防范与解决办法

    前段时间在修改时天气预报15天查询(http://tqybw.net),想增加图片延迟载入的脚本功能,刚好看到某XX网站上有,为了测试方便,就直接引用某XX站的JS调用,没有下载下来.然后急着就上线了 ...

最新文章

  1. 生态伙伴 | xiaopiu入驻飞书,助你高效创作,从原型到文档一站搞定!
  2. 数字语音信号处理学习笔记——语音信号的短时时域分析(4)
  3. 【Linux】一步一步学Linux——ip命令(183)
  4. CodeForces - 551C GukiZ hates Boxes(二分+贪心)
  5. mysql索引是自动使用吗_mysql索引是自动使用吗?
  6. vba上传指定文件ftp服务器
  7. shell timeout
  8. django不修改数据库创外键_【实战演练】Python+Django网站开发系列03-Django初始配置与静态Index页面开发...
  9. js统计字符串中特定字符出现的个数
  10. 1核2g服务器能干什么_国内哪个云服务器比较便宜性价比高?大家有什么好推荐...
  11. Eclipse安装中文简体语言包(详细)
  12. SHT20温湿度传感器
  13. 中望3d快捷键命令大全_CAD常用快捷键命令大全:335个cad快捷键
  14. 集成电路设计的一种运作模式(Fabless/Foundry/IDM模式)
  15. 计算机内无法使用搜狗,电脑搜狗输入法不能用怎么办
  16. charles+安卓模拟器采集豆果美食app
  17. informix mysql 语法_Informix SQL 语句详解
  18. aliyun阿里云发送短信验证码和校验
  19. oracle数据库报错1033,ORACLE出现错误1033和错误ORA-00600的解决方法
  20. AE IFeatureClass导出SHP文件

热门文章

  1. PMP : PMP备考心得 (8)
  2. linux configure 的 --prefix 参数的作用
  3. IP-Prefix List
  4. Pytorch教程(1)
  5. 以太网MII接口类型大全-MII、RMII、SMII、GMII、RGMII、SGMII、XGMII、XAUI、RXAUI
  6. 485通讯线是几芯的_rs485总线是啥线?rs485总线是几芯线
  7. arch使用create_ap创建wifi热点
  8. 如何对网站关键词进行合理布局?
  9. C/C++ fstream
  10. TypeScript中any与unknown的区别