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

it2023-02-13  83

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

02 挑战之旅——poc

001 level1

010 level 10

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

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

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

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

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

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

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

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

老操作,继续修改

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

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

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

点击即可完成level10

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

猜测,他可能直接获取我们的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

配置如下

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

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

刷新,并点击

完成

0x04 存储型XSS

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

01 DVWA 靶机

001 DVWA 靶机搭建

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

直接看到dockerhub

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

开启本地部署,然后使用

访问容器ip:10081

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

进入存储型xss

002 测试DVWA 靶机

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

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

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

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

003 成功弹窗

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

这里我们要使用到xss平台

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

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

https://gitee.com/bxqtee/BlueLotus_XSSReceiver

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

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

Docker run 启动容器

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

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

005 XSS平台基本操作

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

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

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

2.生成我们的payload

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

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

直接修改为空,再次黏贴

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

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

点击接收

006 ModHeader 插件介绍

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

007 盗取靶机cookie

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

删除掉网址后面的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)>

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

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

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

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

想办法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

最新回复(0)