跨站脚本攻击利用
跨站脚本攻击利用
hihopkc盗取Cookie
前提条件
-目标网站没有使用http-only
-受害者可以访问到接收端
-获取到cookie后目标用户没有退出登录
Cookie
Cookie是一种存储在计算机浏览器目录中的文本文件。当用户浏览某个站点并注册帐号,就会生成一个Cookie文件用于记录登录信息。目前,大多数网站都会应用Cookie技术,这既能给用户提供一个好的网络环境,又能方便收集访客信息。
攻击方法
方法一
攻击者视角
首先在公网服务器启动一个用于接收Cookie的WEB服务,既可以使用python启动,也可以使用Apache启动。
因为受害者与攻击者处于各自的局域网之中,两者之间是无法通信的。如果你想要获取到受害者的Cookie,则必须要使得受害者能与攻击者进行通信,所以攻击者需要在公网里启动
python3启动WEB服务:
1 | python3 -m http.server --bind 0.0.0.0 2333 |
然后在XSS漏洞的地方插入攻击代码
JavaScript 可以使用 document.cookie 属性来创建 、读取、及删除 cookie。 window.open 常用来在新的window或新的tab页打开一个页面或文件(如图片、PDF等)。 btoa 进行base64编码
以本地dvwa为例子
可能复制的时候会复制不全
就是前端做了限制
一开始maxlength为50,可以删掉,也可以增加长度
上传后
受害者视角
受害者访问了攻击者插入了xss代码的网页,触发了漏洞,在浏览器打开新的一个页面,并将浏览器的cookie发送到攻击者服务器。
用无痕模式打开dvwa
输入账号:smithy
密码:password
打开页面发现弹出这个窗口
base64解码得出
我们可以重新打开login.php
把security改为low,phpsessid改为刚刚解码得到的值
然后重新再访问
/DVWA/vulnerabilities/xss_s/
这个页面
可以无需输入账号密码即可登入
方法二
利用现有的XSS平台,XSS平台是一个测试XSS漏洞获取cookie的平台,XSS可以做JavaScript能做的所有事,包括但不限于窃取cookie、后台增删改文章、钓鱼、利用XSS漏洞进行传播、修改网页代码、网站重定向、获取用户信息等。
攻击者视角
首先准备一个XSS平台用以接收Cookie,在网上其实有很多这种平台,但其实有的平台存在黑吃黑的 现象。所以为了安全起见可以自行搭建。
下载BlueLotus_XSSReceiver,解压后放到虚拟机里。 这里使用docker搭建xss平台
第一步:拉取docker镜像
1 | sudo docker run -d -p 9944:80 -v ./01-bluelotus:/var/www/app romeoz/docker-apache-ph p:5.6 |
第二步:利用镜像启动一个容器并挂载xss平台的目录
1 | sudo docker run -d -p 9944:80 -v ./01-bluelotus:/var/www/app romeoz/docker-apache-php:5.6 |
第三步:修改配置
1 | mv ./01-bluelotus/config-sample.php ./01-bluelotus/config.php |
第四步:访问http://your-ip:port/login.php
比如我XSS平台的宿主机IP为192.168.247.133,docker的 端口为9944
则访问http://192.168.247.133:9944/login.php 密码为:bluelotus
第五步:在【我的JS】里选择插入【default】模板,文件名随意
第六步:修改模板里的“网络地址”为平台的地址,并点击【新增】
这里平台搭建完成。
点击新增,和生成playload
把这个复制到dvwa里
受害者视角
依旧使用smithy账号登入
虽然正常访问无弹窗,但依旧收集到cookie信息
网络钓鱼
钓鱼网站是指欺骗用户的虚假网站。“钓鱼网站”的页面与真实网站界面基本一致,欺骗消费者或者窃取访问者提交的账号和密码信息。钓鱼网站一般只有一个或几个页面,和真实网站差别细微。钓鱼网站是互联网中最常碰到的一种诈骗方式,通常伪装成银行及电子商务、窃取用户提交的银行账号、密码等私密信息的网站。 网络钓鱼是犯罪分子最容易实施的网络攻击方式之一,也是最容易上当的方式之一。它还可以为黑客提供所需的一切,以洗劫其目标的个人和工作帐户。 网络钓鱼也是网络攻击者传播恶意软件的一种流行方法,通过鼓励受害者下载一个文件或访问一个链 接,秘密安装恶意有效载荷,从而进行传播木马恶意软件、勒索软件或各种破坏性和破坏性攻击。
Flash钓鱼
Flash
flash player是一种广泛使用的、专有的多媒体程序播放器。Flash Player使用矢量图形的技术来最小化文件的大小以及创造节省网络带宽和下载时间的文件。因此Flash成为嵌入网页中的小游戏、动画以及图形用户界面常用的格式。
Flash官网页面伪造
真实的flash官网
虚假的,除了网址不同其他都相同
攻击者视角
1、首先下载相关文件,解压后将Flash相关文件放到WEB网站根目录里,这里以安装了apache的docker镜像为例
1 | sudo docker run -d -p 9945:80 -v ./02-fakeflash:/var/www/app romeoz/docker-apache-php:5.6 |
2、再将index.html重命名为index.php
1 | mv index.html index.php |
3、编辑flash.js文件
将window.location.href修改为index.php的url地址,该文件的作用为插入一个iframe内联框架
4、向存在XSS漏洞的地方插入payload
受害者视角
如果没有太大的警觉心就会觉得确实是flash版本太低了,点击确定就会跳转到攻击者伪造的flash官网页面
然后就会下载攻击者生成的恶意文件并安装执行
Cobalt Strike钓鱼
Cobalt Strike(简称为CS)是一款团队作战渗透测试神器,是一种可以用来进行横向移动、数据窃取、鱼叉式钓鱼的后渗透工具,分为客户端和服务端,一个客户端可以连接多个服务端,一个服务端也可以对应多个客户端连接。
克隆网站
首先将Cobalt Strike程序下载下来,然后放到kali里(需要有jdk环境,kali自带)
给程序执行的权限并启动服务端
1 | chmod +x teamserver |
启动客户端
1 | chmod +x cobaltstrike |
Host填写服务端的IP
Port默认50050
User随意填写
Password为启动时的密码
开始克隆
选择攻击 –> 钓鱼攻击 –> 克隆网站
这里clone url我选择我dvwa的登入界面
可以输入这个网址,打开钓鱼网站
创建eval.js
window.location.herf填入你攻击机的ip地址
1 | python3 -m http.server 1234 |
在存在xss漏洞的地方插入payload
受害者视角
攻击者视角
Beef钓鱼
Beef(The Browser Exploitation Framework)是浏览器攻击框架的简称,是一款专注于浏览器端的渗透测试工具。
攻击原理
BeEF 提供一个 Web 界面来进行操作,只要访问了嵌入 hook.js 的页面,抑或执行了 hook.js 文件的浏览器,就会不断地以 GET 的方式将其自身的相关信息传到 BeEF 的服务端。
服务器端:beef作为服务端管理,管理访问运行了hook的客户端
客户端:运行于客户端浏览器的 Javascript 脚本(hook),也就是beef生成的payload。
beef将运行了hook的web浏览器钩住,进行管理
攻击手段
配合xss,将hook插入到存在xss的注入处;
直接诱使客户端访问含有 hook 的伪造站点
结合中间人攻击注入 hook 脚本
使用
最新的kali系统已经不会默认安装 BeEF,需要我们自行安装。
1 | sudo apt install beef-xss |
启动beef
可以使用命令
1 | sudo beef-xss |
或者直接打开
第一次启动需要配置密码
默认账户是beef
密码要改成不用beef的密码
如果出现错误,则可以尝试以下命令进行重装
1 | apt remove ruby |
利用beef进行攻击钓鱼
实际上启动界面已经给了攻击代码了
攻击者视角
受害者视角
流量劫持
流量劫持是指利用一些软件或者木马修改浏览器不停的弹出新的窗口强制性的让用户访问指定的网站。
在漏洞处插入payload:
跨站脚本攻击漏洞修复
输入过滤
对用户提交的数据进行有效性验证,仅接受指定长度范围内并符合我们期望格式的的内容提交,阻止或者忽略除此外的其他任何数据。
输出转义
在变量输出到 HTML 页面时,可以使用编码或转义的方式来防御 XSS 攻击。htmlspecialchars():把预定义的字符转换为 HTML 实体 预定义的字符如下:
& (和号)成为 &
“ (双引号)成为 “
‘ (单引号)成为 ‘
< (小于)成为 <
>(大于)成为 >
使用http-only
HttpOnly是加在cookies上的一个标识,用于告诉浏览器不要向客户端脚本(document.cookie或其他)暴露cookie。当你在cookie上设置HttpOnly标识后,浏览器就会知会到这是特殊的cookie,只能由 服务器检索到,所有来自客户端脚本的访问都会被禁止。
HttpOnly:禁止javascript读取,如果cookie中的一个参数带有httponly,则这个参数将不能被javascript获 取;httponly可以防止xss会话劫持攻击。
配合csp
CSP(Content Security Policy)指的是内容安全策略,为了缓解很大一部分潜在的跨站脚本问题,浏览器的扩展程序系统引入了内容安全策略(CSP)的一般概念。
CSP 本质上是建立白名单,规定了浏览器只能够执行特定来源的代码;即使发生了xss攻击,也不会加载来源不明的第三方脚本。