网络攻击与防御-第三章 XSS漏洞

XSS 漏洞

0x01 什么是xss

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,ActiveX,Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容

https://xz.aliyun.com/t/4507

https://prompt.ml/0 靶机

https://github.com/myxss/vulstudy

0x02 常用的xss攻击手法

1.盗用cookie,获取敏感信息。
2.利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
3.利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的操作如发微博、加好友、发私信等操作。
4.利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
5.在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDOS攻击的效果。

0x03 反射型xss

反射型跨站脚本(Reflected Cross-Site Scripting)是最常见,也是使用最广的一种,可将恶意脚本附加到 URL 地址的参数中。
反射型 XSS 的利用一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的 URL,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者主机上的浏览器执行。此类 XSS 通常出现在网站的搜索栏、用户登录口等地方,常用来窃取客户端 Cookies 或进行钓鱼欺骗。

01 XSS 挑战之旅

总靶场地址:https://github.com/c0ny1/vulstudy

XSS 漏洞靶场地址:https://github.com/c0ny1/vulstudy/tree/master/XSS-challenge-tour

image-20201020090539990

02 挑战之旅——poc

001 level1
010 level 10

f12查看源码,发现在图片下面存在隐藏的from表单

image-20201020105951128

先删除背景照片,然后在删除表单的隐藏属性

image-20201020110046962

image-20201020110101733

修改from 表单,删除隐藏属性

image-20201020110141572

整个from 表单缺少提交按钮,可以直接从level09 中复制过来

image-20201020110239926

image-20201020110327580

修改一番,添加level10 缺少的元素,修改如下

image-20201020110445719

这样即完成level10的修改,给表单内添加值。点击提交

image-20201020110523885

注意浏览器地址栏,发现存在提交多个参数,但是不清楚有哪些参数显示在页面当中

http://117.167.136.240:38091/level10.php?t_link=123&t_history=321&t_sort=213&submit=%E6%B7%BB%E5%8A%A0%E5%8F%8B%E6%83%85%E9%93%BE%E6%8E%A5

image-20201020110703157

老操作,继续修改

image-20201020110747154

这样的话就发现第三个参数会显示在页面上

尝试闭合,提交事件参数,注释,这里就不用在页面上添加按钮了,直接在地址栏中添加即可,

t_sort=123" onclick="alert(1)" //&submit

image-20201020111016364

点击即可完成level10

image-20201020111626861

011 level 11

和level 10 相同,唯一不同的位置在于多一个链接参数,这个参数正好是我们上一个页面的地址

http://117.167.136.240:38091/level10.php?t_link=123&t_history=321&t_sort=213&submit=%E6%B7%BB%E5%8A%A0%E5%8F%8B%E6%83%85%E9%93%BE%E6%8E%A5

image-20201020112552221

猜测,他可能直接获取我们的http请求头中的Referer 内容,http 请求头的介绍

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Referer

这里我们要用到火狐的插件 ModHeader 一款可以帮我们修改http请求信息的插件

https://addons.mozilla.org/zh-CN/firefox/addon/modheader-firefox/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search

配置如下

image-20201020113925340

刷新level11 页面,插件开启状态下

image-20201020114005782

发现我们referer 头的信息被传入到页面中,尝试构造poc

image-20201020114107175

image-20201020114122010

刷新,并点击

image-20201020114149184

完成

0x04 存储型XSS

持久型跨站脚本(Persistent Cross-Site Scripting)也等同于存储型跨站脚本(Stored Cross-Site Scripting)。
此类 XSS 不需要用户单击特定 URL 就能执行跨站脚本,攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。持久型 XSS 一般出现在网站留言、评论、博客日志等交互处,恶意脚本存储到客户端或者服务端的数据库中。

01 DVWA 靶机

001 DVWA 靶机搭建

这里我们直接使用dokcer来搭建我们的dvwa漏洞平台

image-20201022193703273

直接看到dockerhub

https://hub.docker.com/r/vulnerables/web-dvwa

image-20201022193742924

开启本地部署,然后使用

image-20201022194210060

访问容器ip:10081

image-20201022194243452

登入完成后,直接访问到我们的存储型xss平台(注意先把难度改为low)

image-20201022194410493

进入存储型xss

image-20201022194447912

002 测试DVWA 靶机

开始进行测试,先尝试性输入一些字符,判断是否存在过滤,并判断输入后的字符输出在页面哪些地方

image-20201022194756136

可以看到,在这里是没有做任何过滤信息,输入信息如下

"><svg/onload=alert(1)>

image-20201022194947843

(这里在做任何测试都是一样的,先检查过滤,先闭合,构造poc)

003 成功弹窗

image-20201022195105210

004 xss平台(蓝莲花xss平台)

这里我们要使用到xss平台

XSS 攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序,而本平台的作用就是生成与接收 XSS 测试效果。

这里我们用的是清华大学蓝莲花战队前xss平台,具体地址

https://gitee.com/bxqtee/BlueLotus_XSSReceiver

把项目上传到服务器,解压,直接利用目录下的dockerfile文件来搭建,同时修改dockerfile文件如下

image-20201022200041660

(默认运行dockerfile会直接报错,原因是原来的项目被删除了)

Docker run 启动容器

image-20201022200203891

浏览器访问(注意默认访问ip+端口,会出现正常的空白页面,需要在后面加入/admin.php,输入密码即可进入xss平台后台)

image-20201022200405804

默认密码(bluelotus),登入完成

image-20201022200456375

005 XSS平台基本操作

其实xss平台原理很简单,只是利用

1.首先我们添加我们自己项目的js文件,如下

image-20201022200839922

website 参数的值设置为xss平台的地址,注意不需要加入文件如/admin.php

image-20201022200958491

2.生成我们的payload

image-20201022201036066

3.复制我们的payload,黏贴到存在xss漏洞的位置

image-20201022201135910

这里发现输入框的长度好像不够,可以直接通过f12来修改html属性

image-20201022201220917

直接修改为空,再次黏贴

image-20201022201246910

插入payload后,记得要刷新页面

image-20201022201611606

回到xss平台,收到管理员cookie,如下

image-20201022201516410

点击接收

image-20201022202606767

image-20201022202539613

006 ModHeader 插件介绍

modheader插件是一款简单实用的chrome http请求头添加、修改或删除请求头和响应的浏览器插件

image-20201022202735061

007 盗取靶机cookie

这里我们直接添加一个request header请求头,内容就是xss平台获取到的cookie

image-20201022202928501

image-20201022203022547

删除掉网址后面的login.php,刷新页面,直接登入成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-18XDX0xa-1603371049325)(/Users/doufu/Library/Application Support/typora-user-images/image-20201022203102853.png)]

02 CMS靶机实操(本地)

https://bitbucket.org/evnix/codoforum_downloads/downloads/

https://blog.jenisec.org/security/codoforum-xss-getshell.html

01 靶机搭建(略)
02 靶机测试

经过测试发现用户名注册处存在存储型xss,可以注册如下

``

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YwXDvrB1-1603371049326)(/Users/doufu/Library/Application Support/typora-user-images/image-20201022203917278.png)]

注册如下

"><svg/onload=alert(1)>

image-20201022204002351

注册成功后,会自动跳转到用户页面

image-20201022204138379

那么我们这里直接使用xss平台构造xsspayload

image-20201022204640188

直接打到靶机管理员的登入地址,以及cookie信息

image-20201022204744806

直接使用modheader登入,登入靶机成功

image-20201022205002991

想办法getshll即可

0x05 DOM型XSS

传统的 XSS 漏洞一般出现在服务器端代码中,而 DOM-Based XSS 是基于 DOM 文档对象模型的一种漏洞,所以,受客户端浏览器的脚本代码所影响。客户端 JavaScript 可以访问浏览器的 DOM 文本对象模型,因此能够决定用于加载当前页面的 URL。换句话说,客户端的脚本程序可以通过 DOM 动态地检查和修改页面内容,它不依赖于服务器端的数据,而从客户端获得 DOM 中的数据(如从 URL 中提取数据)并在本地执行。另一方面,浏览器用户可以操纵 DOM 中的一些对象,例如 URL、location 等。用户在客户端输入的数据如果包含了恶意 JavaScript 脚本,而这些脚本没有经过适当的过滤和消毒,那么应用程序就可能受到基于 DOM 的 XSS 攻击。

https://xz.aliyun.com/t/4067

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: XSS漏洞和CSRF漏洞都是Web应用程序中常见的安全漏洞,但它们的攻击方式和影响范围有所不同。 相同点: 1. 都是Web应用程序的安全漏洞。 2. 都可以通过恶意构造的请求来实现攻击。 3. 都可以利用受害者已登录的身份进行攻击。 4. 都可以导致用户数据泄露、篡改或者账号被盗等风险。 不同点: 1. 攻击方式不同:XSS漏洞是通过在网页中注入恶意脚本来实现攻击,而CSRF漏洞则是通过伪造请求来实现攻击。 2. 影响范围不同:XSS漏洞主要会针对受害者的浏览器进行攻击,而CSRF漏洞则主要攻击Web应用程序后台。 3. 防御方式不同:防御XSS漏洞需要对用户输入进行过滤和转义,防御CSRF漏洞需要在服务端验证请求来源和用户身份。 总之,XSS漏洞和CSRF漏洞都是比较常见的Web应用程序安全漏洞,开发者需要加强对这些漏洞的了解,采取有效的安全防护措施来保障Web应用程序的安全。 ### 回答2: XSS漏洞(跨站点脚本漏洞)和CSRF漏洞(跨站点请求伪造漏洞)是常见的网络安全问题,两者有一些不同点和相同点。 不同点: 1. 定义:XSS漏洞是指攻击者通过注入恶意脚本代码来篡改目标网页内容,从而获取用户敏感信息或执行恶意操作;而CSRF漏洞攻击者通过伪造请求,利用受害者在目标网站中的有效会话执行非预期的操作。 2. 目标:XSS漏洞的目标是窃取用户信息、劫持会话等;而CSRF漏洞的目标是在受信任的用户执行恶意操作。 3. 注入位置:XSS漏洞注入恶意脚本通常发生在目标网页的输入控件、URL参数等位置;而CSRF漏洞则是通过在第三方网站或恶意邮件中引导用户点击恶意链接触发。 4. 影响范围:XSS漏洞的影响范围主要限于与受攻击网页有交互的用户;而CSRF漏洞对受害者的影响范围更广,因为攻击者可以通过恶意链接或页面在用户不知情的情况下执行操作。 相同点: 1. 都是跨站点攻击漏洞:两种漏洞都利用了缺乏有效的身份验证和授权机制的网站之间的信任关系。 2. 都利用Web应用程序的漏洞XSS和CSRF漏洞都通过发现和利用Web应用程序的弱点来进行攻击。 3. 都对用户隐私和安全构成潜在威胁:XSS漏洞可以导致用户敏感信息的泄露或会话劫持,而CSRF漏洞可以使受害者在不知情的情况下执行非预期操作。 4. 都需要合适的预防措施:为了防止XSS和CSRF漏洞攻击,开发人员需要进行输入验证和过滤、正确的编码方式、实施有效的反CSRF令牌等安全措施。 综上所述,XSS漏洞和CSRF漏洞是不同类型的跨站点攻击漏洞,但同样是Web应用程序安全的重要威胁。开发人员需要通过适当的预防措施来减少这些漏洞的风险,确保用户信息和系统安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值