XSS漏洞详解

基本知识

原理

XSS 属于被动式的攻击。攻击者先构造一个跨站页面,利用script、、等各种方式使得用户浏览这个页面时,触发对被攻击站点的http 请求。此时,如果被攻击者如果已经在被攻击站点登录,就会持有该站点cookie。这样该站点会认为被攻击者发起了一个http 请求。而实际上这个请求是在被攻击者不知情的情况下发起的,由此攻击者在一定程度上达到了冒充被攻击者的目的。精心的构造这个攻击请求,可以达到冒充发文,夺取权限等等多个攻击目的。在常见的攻击实例中,这个请求是通过script 来发起的,因此被称为Cross Site Script。

地方:用户可以控制页面内容、和其他用户有交互的地方,类似于订单购买、客服聊天 -->可以执行跨站脚本–>窃取cookie

Cookie 和 Session
cookie:用户的凭据,钥匙和锁的关系 Session 的主要作用就是通过服务端记录用户的状态
ookie 数据保存在客户端(浏览器端) Session 数据保存在服务器端
总结:Session安全性更高

前提条件

存在xss漏洞
管理员会登录触发,用户不适用无痕浏览
需要绕过过滤
对方的浏览器不拦截
总结:属于被动式攻击,利用起来比较难

危害

钓鱼欺骗
网站挂马
身份盗用
盗取网站用户信息
垃圾信息发送
劫持用户Web行为
XSS蠕虫

分类

反射型(非持久型):反射型攻击方式就是把可以执行的 js脚本放到URL参数里面。
发包X=123 => x.php =>回包
有一些后端它是通过URL参数来去获取的,有时候会把脚本放入URL参数里面如:http://test.com/xss/example.php?name=,然后通过邮件方式发送给用户,诱导用户去点击,这就是非存储形式的 XSS

存储型(持久型)
发包X=123 => x.php =>写到数据库=> x.php=>回显
评论框中输入script 代码, 一段未经转义过的 JS 代码被插入到页面之后,其他用户浏览的时候也会去执行它。攻击者就可以得到该用户的cookie值

DOM型
发包x=123 => 本地浏览器静态前段代码=x.phpHTML DOM 定义了访问和操作 HTML 文档的标准方法。DOM 将 HTML 文档表达为树结构。DOM是属于用js代码进行处理(可直接通过查看代码进行判断是否属于DOM型)

pikachu靶场演示

反射型(get)

输入框被限制了长度,修改一下
在这里插入图片描述
输入666,查看源码,也就意味了 我们输入的 原封不同的输出到了p标签中 也就意味着我们输入javascript代码也会被原封不同的·输出
在这里插入图片描述
回到输入点输入一个简单的payload
在这里插入图片描述
在这里插入图片描述
http://127.0.0.1/pikachu-master/vul/xss/xss_reflected_get.php?message=+%3Cscript%3Ealert%28%27xss%27%29%3C%2Fscript%3E+&submit=submit
然后每次访问这个地址,就会发生弹窗,通过邮件方式发送给用户,诱导用户去点击。

存储型的XSS

存储型的xss一般存在于留言的地方但和反射型的最大区别是会提交的脚本插入到数据库,每打开一次留言都会自动弹出我们的js脚本,也会一直攻击。
在这里插入图片描述在这里插入图片描述

DOM型

DOM型是直接调用前段静态代码: #'οnclick=“alert(2)”>
在这里插入图片描述

BEEF安装和使用

在kali上安装

更新命令即可:apt-get update
安装命令:apt-get install beef-xss   
安装apt--fix--broken install:apt --fix-broken install
beef-xss启动:beef-xss
浏览器访问:http://127.0.0.1:3000/ui/authentication
账号:beef
密码:lxl

攻击过程

输入这个命令进行攻击,在在线订单系统里面输入代码
在这里插入图片描述在这里插入图片描述
然后就可以去beef控制界面进行查看了,当管理员处理订单时触发了漏洞,就可以在控制界面获得cookie
在这里插入图片描述

httponly绕过

httponly属性开启:防止js脚本读取cookie信息,只是防止cookie获取,而不是跨站语句漏洞
后台权限 --》cookie获取登入(注意有时候需要session id值)
​ ----》账号密码登录-----》未保存读取(使用XSS平台获取浏览器记录的明文密码的js语句)
​ -----》保存读取(被浏览器记录了账号和密码)—》表单劫持(被攻击者发送两份表单分别给服务器和攻击者)

xss-labs靶场

127.0.0.1/xss-labs-master/

WAF绕过

分析:拆分关键字
1:垃圾数据填充
2:加特殊符号,根据脚本类型(自动生成在线工具:https://xssfuzzer.com/fuzzer.html)
3:便签语法代替
4:更换提交方式:url post get
5:加密解密算法
自动waf 绕过:xssstricke–>反射和DOM XSS扫描,实时探针代码有没有触发过滤器

安全修复

1:waf加持
2:开启httponly
3:输入输出过滤

CSRF和SSRF漏洞

CSRF

跨站请求伪造(Cross-site request forgery)CSRF是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。当用户访问含有恶意代码的网页时,会向指定正常网站发送非本人意愿的数据请求包(如转账给hack,向hack发送API等)如果此时用户恰好登录了该正常网站(也就是身份验证是正常的)就会执行该恶意代码的请求,从而造成CSRF。

超星尔雅学习通同样存在这样的CSRF,手法与该靶场演示手法类似,在校期间和同学进行实验点击链接后就可以更改其性别手机号等(当时戏称一键泰国变性XD)提交后对方以未对敏感数据造成影响打回了目前尚未修复

防御

#防御方案
1)当用户发送重要的请求时需要输入原始密码 
    这样限制攻击者无法在完全无感的情况下执行CSRF,用户也会因此警觉
2)设置随机 Token
  Token:给用户第一次登录时设定的唯一值(且足够随机),在作出请求的时候必须携带这个
  Token才会生效,一方面减少了重复请求量,一方面也避免了大部分CSRF攻击
3)同源策略,检验 referer 来源,请求时判断请求链接是否为当前管理员正在使用的页面
(管理员在编辑文章,黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
4)设置验证码
5)限制请求方式只能为 POST

SSRF


SSRF:服务器端请求伪造(Server-Side Request Forgery)

SSRF是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。SSRF攻击的目标一般是从*外网无法访**问的内部系统*。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)

SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。利用的是服务端的请求伪造。ssrf是利用存在缺陷的web应用作为代理攻击远程和本地的服务器

#常常出现的地点和挖掘方法
WEB功能上:
1)分享:通过URL地址分享网页内容 
2)转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览 
3)在线翻译:通过URL地址翻译对应文本内容 如:百度,有道 
4)图片加载与下载:通过URL地址加载与下载图片 
5)图片 文章收藏功能 
6)未公开的API实现以及其他调用URL的功能 
URL中的关键字:【结合谷歌语法找到入手点】 share wap url link src source target u 3g display sourceURL imageURL domain
绕过
添加端口号
短网址绕过
指向任意IP的域名xip.io
10.0.0.1.xip.io   resolves to   10.0.0.1
www.10.0.0.1.xip.io   resolves to   10.0.0.1
mysite.10.0.0.1.xip.io   resolves to   10.0.0.1
foo.bar.10.0.0.1.xip.io   resolves to   10.0.0.1
IP限制绕过
十进制转换 八进制转换 十六进制转换  不同进制组合转换
协议限制绕过
当url协议限定只为http(s)时,可以利用follow redirect 特性
构造302跳转服务,
结合dict:// file:// gopher://

防御

1、过滤返回的信息,如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
2、统一错误信息,避免用户可以根据错误信息来判断远程服务器的端口状态。
3、限制请求的端口,比如80,443,8080,8090。
4、禁止不常用的协议,仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp://等引起的问题。
5、使用DNS缓存或者Host白名单的方式。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值