【郑大二年级信安小学期】Day9:XSS跨站攻击XSS绕过CSRF漏洞SSRF漏洞
目录
0 录制文件
1 XSS基础
1.1 XSS漏洞危害
1.1.1 网络钓鱼
1.2 XSS漏洞探测
编辑
1.3 XSS类型
1.3.1 反射型XSS
1.3.1.1 看一下dvwa靶场
1.3.2 存储型XSS
1.3.3 Dom型XSS
1.4 XSS平台利用
1.5 dvwa靶场搭建
2 XSS防御
2.1 关键词黑名单
2.2 设置 HTTP-only
2.3 使用 HTML 实体编码
2.4 SOP 的同源策略
3 XSS绕过
3.1 xss-labs靶场
3.1.2 第二关
4 CSRF漏洞
4.1 利用条件
4.2 案例1-get型
4.3 案例2-post型
5 CSRF探测和防御
6 SSRF漏洞
6.1 SSRF漏洞挖掘
6.2 SSRF漏洞利用
6.2.1 端口扫描
0 录制文件
日期:2025-07-10 08:37:55
录制文件:https://meeting.tencent.com/crm/2M4gB7ZZ35
日期:2025-07-10 14:49:31
录制文件:https://meeting.tencent.com/crm/KEBmnED77a
日期:2025-07-10 16:42:25
录制文件:https://meeting.tencent.com/crm/NQDV1LaZ5d
1 XSS基础
在HTML嵌入恶意代码,用户浏览页面时,恶意代码执行,用户浏览器被攻击者控制。
就是在一些数据输入输出的地方,攻击者自己去构造了一些恶意的 javascript 代码,然后让浏览器去执行它,那么浏览器执行它就相当于触发了这段代码。
这个过程所形成的攻击就叫做XSS 攻击
1.1 XSS漏洞危害
1.1.1 网络钓鱼
需要伪造页面,就是与实际页面极其相似,或者是跟这一模一样的。别人访问到构造的假的网站,才可能会相信。
还有就是邮件钓鱼。直接给你发送一些恶意邮件,让你去点击链接的。包括现在短信都有很多。
1.1.2.窃取用户的 cookie 资料
窃取用户的 cookie 资料,从而获取用户隐私信息。直接通过 JS 代码可以将用户的 cookie 盗取出来,然后利用他的 cookie 去登录一些网站。
1.2 XSS漏洞探测
正常payload写法:<script>alert(1)</script>
前面的单引号双引号,尖括号,是为了构造闭合。为了让浏览器将我们后面的写入的代码当成了一个正常的标签来执行,不是必须加不可,就前面这个单引号双引号以及加括号,它跟我们的sql注入一样,我们sql注入是用单引号双引号去构造闭合,前面的这两这三个东西也是为了能够闭合前面的一些语句。加上之后利用payload的成功概率更高。
当我们输出这个 payload 以后执行以后,页面是没有什么变化的,只有当我们鼠标去点击的这个地方才会执行这个代码。还有鼠标移动事件,我们只有鼠标移动了以后还会去触发那段代码。
1.3 XSS类型
1.3.1 反射型XSS
1.3.1.1 看一下dvwa靶场
输入222,会直接弹回
如果在这里写入一段js代码,这个代码的作用是当执行这段解析这段代码的时候,它会给我们出现一个弹窗,这个弹窗写的一个内容是1
同样,可以在alert的括号里更换其他内容
通常用这个 script 的标签去检测这个地方是否存在XSS 漏洞
如果我们退出,再重新返回到这个页面。我们发现我们刚才解析的那个代码不存在了,而浏览器也不再重新解析,这个就是叫反射型XSS。
他只有一次机会,就是当我们第一次去访问的时候,它会触发这个代码,再次去访问的时候,那么这段代码就不会再触发了。
1.3.2 存储型XSS
比反射型更具有威胁。存储型的XSS 是危害性最大的。那么攻击脚本会被永久的放在这个目标服务器的数据库中,或者是一些文件里面。
也是利用起来最方便的,代码存在于服务器中,它将这个 javascript 代码存在服务器里面,每一次我们去访问到这个页面的时候。
当我们再重新再次访问这个页面的时候,它又会弹出这个弹窗,也就是这段 JS 代码又会被执行了。
那么后续只要这段代码在服务器里面没有被发现,它将会永久的存在这个里面。无论后面有多少人来访问这个页面都会触发这个代码。那么如果它是一个窃取用户信息的,这么一个代码,那么未来所有访问这个页面的人,他的信息都会被窃取到这个就是存储型的XSS,也就是说为什么它是危害性最大的原因。
1.3.3 Dom型XSS
这种多模型的XSS,它不需要服务器去处理响应。
查看一个源码
这个代码里面包含了一个 HTML 的表单,还有一个 java script 代码,javascript 代码是用来生成下拉菜单的。资源代码首先去检测 URL 里面是否包含 default 参数。如果包含了 default 参数,那么就从 URL 里面去提取参数,并将其作为下拉菜单的一个选项。之后。代码添加一些固定的语言选项,比如这些英语法语这些东西。然后把这些参数插入到 HTML 里面,攻击者可以通过构造的恶意的 URL 来注入 JS 代码。这种东西。dom 型其实就可以简单把它理解为了一种特殊的反射型,只不过反射型它是经过服务端的,而 dom 型是不经过服务端。
这里面有个下拉菜单,我们点击 select 直接去执行一下 URL,我们可以看到这个 default 参数等于1,就是它的原理,那么我们去验证它其实就直接在后面加上我们的 JS 代码就可以了。
1.4 XSS平台利用
注册登录
创建一个项目
随意命名
点开项目,查看页面源码
复制第三个代码
当我们去做信息收集或者是漏洞检测的时候,那我们可能发现了这个页面是存在一个XSS 漏洞的。既然它这里面存在XSS 漏洞,我们就可以将我们的 payload 给它粘贴进去。然后去点击一下
用户这个页面里面我们是看不到任何这个变化的,我们这里面感知没有任何感知
看一下漏洞利用平台的后台
因为我们这里面配置代码是通过这个平台恶意构造出来的,那么我们将这段代码给它发送到这个存在XSS 漏洞的时候,当去解析的时候,它就会把这些信息发送到这个XSS 平台里面。
现攻击者已经获取到了人的 cookie。知道了它登录的地址是哪里,也就是触发的 URL。现在他想去登录这个地方。那发现这里面是有账户密码的,他并不知道账户密码这里面怎么办。
用 FN 加 f12打开这个东西,比如说火狐浏览器。它这里面有个 cookie 信息
它这个 cookie 这些信息有两个内容 security 等于 low pgp session 等于这一串东西。这个地方我们把被攻击者的这些 cookie 信息给它换到我们公益者这里 G Hp session. 给它粘贴过来
改完以后我们再去点击一下这个触发的 URL 布置一下,然后用浏览器去访问一下。
有任何账号密码,只是通过这个XSS 漏洞窃取到了他的 cookie,然后我们就直接可以用他的账号密码去登录。
1.5 dvwa靶场搭建
更改config.php文件里的数据库账号密码
2 XSS防御
2.1 关键词黑名单
之前给了很多的 payload,那么它这些防御手段都是针对于这些常用的 payload 的,比如说正常payload很多都在间括号。带有这种 script 标签,它可能直接将 script 单词直接给你做一个防御。如果你写入这个 script,他会给你过滤掉或直接给删掉,或者针对于 unclick 这种事件把这两个字符它连在一起写进去,那么给你过滤掉,或者在中间给你加一些东西。或者这些这些特殊的一些字符,针对于这一点去做一个防御。
2.2 设置 HTTP-only
只要 cookie 中含有 http only 这个字段,那么任何 JS 脚本都没有权限去读取这条 cookie 的内容。
在开启了 HTTP 这个模式以后,那么我们之前用XSSAQ 这些平台去获取这个 cookie的行为就没有办法成功了,我们没有办法获取 cookie。
2.3 使用 HTML 实体编码
将我们输入的这个 JS 代码给你做一个编码,那么可能没有办法识别,做了编码以后,这种情况下去防御我们的攻击。
2.4 SOP 的同源策略
SOP 把拥有相同主机名协议和端口的页面视为同一来源,不同来源的资分销交互受限制。我们刚开始获取到的 cookie 被攻击者,他自己是拥有一个 cookie 的,而且那是他用自己的电脑去登录的,也用我自己的主机名协议和端口,那么我们窃取到他的 cookie 以后,利用我们自己的主机去登录的时候,他这个主机名肯定是不一样的。只有这三点,主机名协议和端口缺一不可,每一个都是一样的,才会被它视为同一来源。只要这三点有一点不同,那么就给他做一些限制。那他没有办法去访问。
3 XSS绕过
比如说如果把双引号给他过滤了,那么我们用括号加上单引号去绕过禁用双引号的方法,如果禁用了单引号,那么我们用双引号和括号斜杠绕过这个单引号。
也可以用大小写双写这种方式去绕过,那么最简单有效的其实就是使用别的标签,也就是换payload。
3.1 xss-labs靶场
一开始看到的就是在这个 URL 里面。还有一个 test 改一下看一下。输出的内容根据URL 的改变去在页面上也做改变了,所以这里面我们可以直接尝试一下,将我们的payload给他复制进去。
我们已经过关了,第一关就是让我们看哪里能输入输出我们的这个 payload 去执行这个 JS 代码。
3.1.2 第二关
但是这是怎么过关的?
这个标签是被过滤了的
看前7关就行
4 CSRF漏洞
4.1 利用条件
必须同时满足
条件过于苛刻
4.2 案例1-get型
CSRF 它不一定能够获取账户密码,他只是去窃取登录的状态
利用皮卡丘靶场,这有个 CSRF get 型的。
这里面有提示有这么几个用户的信息,首先我们随便登录一个 Vince.
将它定义为一个受害者。现在我们去以一个攻击者的再去登录一下这个平台。比如说攻击者是丽丽。
他们两个同时去登录这个购物网站,也就是他们两个修改个人信息的地方,其实是一样的,都是在这个里。这个地方现在莉莉知道了这个lince这个人在登录这个平台,然后他想去利用CSR F 漏洞去更改lince的个人信息改成他自己的。那么他需要去抓包
将这个抓到的包是lili自己去更改信息的这么一个包。直接将这个数据包给它复制下来。
它复制到这个文档里面,然后将前面的 IP 地址给它补全,因为你需要去访问的哪个服务器的 IP 地址,也就是你这个购物网站的 IP 地址是什么,需要将这个 Ip直给他补
这个包现在就已经构造成了构造完了,那么后面这个信息可以根据他自己去改,比如说现在就是完全把这个人的信息改成lili的信息了,整个已经改成这个了,那么现在就是它构造好的一个恶意链接,也就是这个配套的,那么现在我们需要模拟一下。
被攻击这个人登录是一个前提,他必须要登录才行,如果不登录,那么没有任何意义。这个人的登录信息,可以看到,然后这个时候这个丽丽把这个恶意链接发给了这个 VI CE 这个人。那么在他不知情的情况下,他去点击了这个恶意链接。
可以看到 VIC 这个人他的个人信息。现在已经全部都改成了lili的
4.3 案例2-post型
攻击者同样是lili,然后抓包
自动生成CSRF
可以在这里面去改信息
改完数据包以后在右下角这有个 copy,Html. 我们把这个 HTML代码给它复制下来
去我们自己的服务器上。也就是我们这个靶机里面,在WWW目录底下。去自己创建一个 HTML 的文件。将我们的代码给它复制进去保存。那么我们生成的一个恶意链接,其实就是在这个服务器下,也就是我们的这个靶机,看你们自己的 IP 下面的一点 HTML 这么一个东西。恶意链接就是 IP 地址。
现在让被害人登录
在他登录的同时,他去访问了这个恶意链接,这地方有一个跳转
点击确定,当它点击完之后,数据包信息就改了
5 CSRF探测和防御
如果能够修改成功,那么表示存在 CSRF漏洞,就是我们在抓包的时候,这个里面来源页也就是去看它是从哪个页面过来的。如果我们能把这个给它删除掉,然后还能发包成功。这种情况下说明它是存在 CSRF漏洞的。
6 SSRF漏洞
其实 SSRF 的本质它是一种信息泄露。利用这个漏洞基本都是用作对内网的一个扫描,去探测内网的信息。
比如说攻击者现在去想去访问内网当中一个 B 服务器,但是由于这个防火墙,或者是因为 B 它是一个内网的做了隔离。这种情况下,我们通过外网没有办法直接去访问这个服务器,但是服务器 a 它存在一个 SSRF 漏洞,而服务器 a 与服务器 B 又在同一个网段。这个时候我们就可以利用这个 a 来去发起 SSRF 攻击,通过主机 a 向这个 B 去发起请求来获取主机 B 上的一些信息。
这个 URL 可以看到我们访问的是这个皮卡丘b靶场下面的 CURL .PHP,也就是这个靶场 CURL 的 php,但它却给我们跳转到了这个 SSRF 下面的 info.php,也就是虽然我们访问的是这个,但实际上我们访问的是另一个东西,就是后面这个info.php
如果我们将后面东西改成我们一个内网服务器的一些东西。比如说百度。
6.1 SSRF漏洞挖掘
6.2 SSRF漏洞利用
6.2.1 端口扫描
这个地方我们确定它是存在 URL 的SSRF 漏洞的,那么这里面我们可以去对它进行一个信息探测,比如说现在我去探测它的80端口。
端口太多,不能手动一一探测,用burp
端口:1-65535
可以看到这个80的开放的状态与没有开放的端口, length 长度是不一样的
根据这个特点,我们去可以去探测这个它服务器。都有哪些端口开放,那如果他开放了一些特殊的端口,比如说2122或者是这种445,那么我们可以直接利用这些端口可能存在什么永恒之蓝或者是端口爆破。