XSS攻击分析---(原理、危害、防御、应急响应)

server/2024/11/15 8:36:09/

1、攻击原理

造成XSS漏洞的原因就是,对攻击者的输入没有经过严格的控制,使得攻击者通过巧妙的方法注入恶意指令代码到网页,进行加载并执行。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java, VBScript, ActiveX, Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、个人网页内容、会话和cookie等各种内容。

  1)非持久型:

  通过 GET、POST、referer 等参数未加处理直接输出到页面执行。该类型是最为常见的,攻击者主要利用此类型通过email、热度非常大的论坛、或者有针对性的某一用户发送一个隐藏性的链接,让受害者进行点击触发。

  2)持久型:

  由攻击者输入恶意数据保存在数据库,再由服务器脚本程序从数据库中读取数据,然后显示在公共显示的固定页面上,那么所有浏览该页面的用户都会被攻击。该类型攻击性非常大,危险也非常大。

  3)DOM型:

  由Javascript 脚本动态创建、输出到页面造成的。该类型不容易发现,具有隐藏性的特点,必需手工去发现。

  4)浏览器漏洞造成:

  在某个浏览器版本造成的漏洞,由浏览于用户浏览历史、页面交互等方式,未加处理,所造成的。该漏洞攻击危害非常大,一旦存在,基本可以实现跨域操作,严重者可以以本地权限执行 javascript 脚本,访问读取本地文件。

2、常见场景:

 1)回帖,评论,用户输入在页面直接进行显示,没有进行过滤。

 2)用户反馈,客服提问,输入的恶意脚本在后台进行了执行,窃取后台管理员cookie等信息。

 3)搜索展示搜索结果的时候直接展示用户输入。

3、危害影响

1、攻击者可能利用XSS攻击获取业务系统服务器账号权限登

4、防御方法

1)htmlspecialchars() 函数:用于转义处理在页面上显示的文本。

2)htmlentities() 函数:用于转义处理在页面上显示的文本。

3)strip_tags() 函数:过滤掉输入、输出里面的恶意标签。

4)header() 函数:使用header("Content-type: application/json"); 用于控制 json 数据的头部,不用于浏览。

5)urlencode() 函数:用于输出处理 字符型参数带入页面 链接中。

6)intval() 函数:用于处理数值型参数输出页面中。

7)自定义函数:大多情况下,要使用一些常用的 html 标签以美化页面显示,如留言、小纸条。在这样的情况下,要采用白名单的方法使用合法的标签显示,过滤掉非法的字符。

5、研判思路

1、判读是否为规则误报

 1)基于漏洞特征检测:查看是否在请求中包含明文或转义/转码后的执行语句,比如<script>alert()</script>等;

 2)排除业务导致的误报:需要排除业务系统不规范导致的误报情况,比如业务请求中包含alert等字段时的误报

2、判断是否为恶意行为

 1)需要确认是否为分析和研究人员的测试行为;

 2)需要排除是否为内网已授权漏洞扫描器的扫描行为

3、判断是否攻击成功

1)如果来源IP为内网,则说明内网已存在失陷服务器,可以认为攻击成功,该告警的处置优先级高;

 2)如果来源IP为外网,返回值中包含攻击者已执行成功/获取到有效信息,则认为是攻击成功。

6、应急响应-事中处置

1、已失陷主机

 1)隔离和处置失陷机器:及时联系机器负责人,对感染的机器采取断网操作,并且修改相关账户的口令,下载杀毒软件或者专杀软件进行清除;

 2)内部通告和培训:及时进行内部通告和培训,增强企业员工安全意识,对不明邮件附件和不明站点可疑连接谨慎点击访问,从正规渠道下载程序,不安装来自不明来源的应用程序;

 3)端口限制:根据业务情况,在不影响的情况下可选择在安全策略中限制如下端口,3306(MYSQL)、1521(ORACLE)、1433(SQL SERVER)、5432(PG)、6379(REDIS)、9200(ES)

 4)漏洞修补:对存在漏洞的主机进行安全漏洞修复,及时对设备系统进行安全更新和应用安全补丁更新

2、已失陷账户

 1)修改密码:建议采用数字、符号及大小写字母混合的方式,设置8位以上的密码;

 2)账户封禁

 3)账户权限收回

3、外部攻击遏制

 1)封禁IP:在防火墙上配置IP黑名单,封堵攻击源主机

7、应急响应-事后加固

 1)更新网络安全管理措施:根据该事件中暴露的问题,针对性修订完善网络安全管理制度,做好攻击预警和处置,同时对攻击事件进行复盘,并更新网络安全突发事件应急预案;

 2)加强网络安全隐患修补:在消除该事件攻击影响的情况下,开展网络安全隐患排查和修补。例如,在权限管理方面,重点排查弱口令、账户权限、口令更新和共用等问题;在漏洞修补方面,及时更新系统、软件、硬件等漏洞补丁;

 3)自动化封禁:使用SOAR或其他自动化手段将此类告警外网源IP在第一时间进行边界防火墙的封禁;

 4)保持网络安全设备特征库更新:日常运维过程中需要保持特征库为最新版本


http://www.ppmy.cn/server/36809.html

相关文章

数据可视化准备:动态识别echarts的横纵坐标数据字段

前言 继上一篇文章 自动选择图表类型&#xff1a;基于数据特征智能决策 分析了如何根据sql和数据结果判断应该自动使用哪种图表类型&#xff0c;本文继续将图表的x轴和y轴横纵坐标识别出来&#xff0c;基本一个二维数据类普通图表就可以直接输出为echarts参数了。 在数据可视…

Android 桌面小组件 AppWidgetProvider

Android 桌面小组件 AppWidgetProvider 简介 小组件就是可以添加到手机桌面的窗口。点击窗口可以进入应用或者进入应用的某一个页面。 widget 组件 如需创建 widget&#xff0c;您需要以下基本组件&#xff1a; AppWidgetProviderInfo 对象 描述 widget 的元数据&#xff0…

解决连接不上VPN问题

解决连接不上VPN问题 错误描述&#xff1a;错误描述&#xff1a; 错误描述&#xff1a; 无法建立计算机与VPN服务器之间的网络连接&#xff0c;因为远程服务器未响应。这可能是因为未将计算机与远程服务器之间的某种网络设备&#xff08;如防火墙、NAT、路由器等&#xff09;配…

node.js中的断言

assert.ok(value, [message])&#xff1a;如果value不为真&#xff0c;则抛出一个AssertionError&#xff0c;可选地包含message。 const assert require(assert); assert.ok(true); // 没有错误 assert.ok(false, 这里应该是true); // 抛出 AssertionError: 这里应该是tru…

远程桌面连接不上,远程桌面连接不上的专业解决策略

在信息技术领域&#xff0c;远程桌面连接是一种非常重要的工具&#xff0c;它允许用户从任何地点、任何时间访问和操作远程计算机。然而&#xff0c;当远程桌面连接出现问题时&#xff0c;可能会严重影响工作效率。以下是一些可能导致远程桌面连接不上的原因以及相应的解决方案…

通过颜色学习css

文章目录 1.生成html2.添加css链接3.将h1标签text-align元素4.添加div标签4.1、为类marker添加元素4.2、添加两个新的div标签4.3、修改div标签的类型并修改css元素4.4、为类container添加元素4.5、以数字形式添加颜色4.5、container添加padding属性4.6、组合css中的颜色属性4.7…

CMakeLists.txt语法规则:条件判断中表达式说明一

一. 简介 前面学习了 CMakeLists.txt语法中的 部分常用命令&#xff0c;常量变量&#xff0c;双引号的使用。 前面一篇文章也简单了解了 CMakeLists.txt语法中的条件判断&#xff0c;文章如下&#xff1a; CMakeLists.txt语法规则&#xff1a;条件判断说明一-CSDN博客 本文…

【MySQL】数据分组(关键字:GROUP BY)过滤分组(关键字:HAVING)

文章目录 数据分组&#xff0c;关键字&#xff1a;GROUP BY过滤分组&#xff0c;关键字&#xff1a;HAVING常见 SELECT 子句顺序 我是一名立志把细节说清楚的博主&#xff0c;欢迎【关注】&#x1f389; ~ 原创不易&#xff0c; 如果有帮助 &#xff0c;记得【点赞】【收藏】 …