[Web安全] xss&CSRF漏洞初探

[Web安全] xss&CSRF漏洞初探正文|xss简介现代网站往往会包含大量的动态内容,动态内容是指web应用程序根据用户环境和需要来输出相关内容。跨站脚本攻击(cross site scripting)是一种针对网站应用程序的安全漏洞利用技术,是代码注入漏洞的一种,它使得攻击者可以通过巧妙地方法向网页中注入恶意代码,用户浏览器在加载网页、渲染html文档时就会执行攻击者的恶意代码,攻击成功后,攻击者可能得到很高的权限,获取私密网页内容、会话、cookie等敏感信息。XSS可以理解为在用户
摘要由CSDN通过智能技术生成

[Web安全] xss&CSRF漏洞初探

img

正文|xss简介

现代网站往往会包含大量的动态内容,动态内容是指web应用程序根据用户环境和需要来输出相关内容。跨站脚本攻击(cross site scripting)是一种针对网站应用程序的安全漏洞利用技术,是代码注入漏洞的一种,它使得攻击者可以通过巧妙地方法向网页中注入恶意代码,用户浏览器在加载网页、渲染html文档时就会执行攻击者的恶意代码,攻击成功后,攻击者可能得到很高的权限,获取私密网页内容、会话、cookie等敏感信息。XSS可以理解为在用户浏览器上的代码执行漏洞,可以在悄无声息的情况下实现模拟用户的操作。

XSS按照攻击原理可以大致分为三种:反射型、存储型、DOM型。经常遭受XSS攻击的典型应用有:邮件、论坛、即时通信、留言板、社交平台。

正文|反射型XSS简述

反射型XSS又称非持久型xss,XSS代码作为客户端输入的内容提交给服务端,服务端解析后,在响应内容中返回输入的XSS代码、这种攻击方法往往具有一次性,因为xss代码不会被服务端存储。

以下是反射性xss的环境搭建:

<html>

<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
	<title>XSS利用输出的环境来构造代码</title>
</head>

<body>

	<center>
	<h6>把我们输入的字符串 输出到input里的value属性里</h6>
	<form action="" method="get">
		<h6>请输入你想显现的字符串</h6>
		<input type="text" name="xss_input_value" value="输入"><br />
		<input type="submit">
	</form>
	<hr>
	<?php
		if (isset($_GET['xss_input_value'])) {
			echo '<input type="text" value="'.$_GET['xss_input_value'].'">';
		}else{
			echo '<input type="text" value="输出">';
		}
	?>
	</center>

</body>
</html>

使用payload进行测试:

"><img src=1 onerror=alert(/xss/)>

获取cookie

由于本地搭建没有设置cookie,所以我们在此使用pikachu靶场的反射型xss环境

payload:

<img src=1 onerror=alert(document.cookie>

image.png

正文|存储型xss简述

存储型xss又称持久型xss。存储型xss与反射型xss的区别主要在于提交的xss代码是否会存储在服务端。存储型xss的典型利用应用为留言板,即时通讯,邮件服务等。攻击者通过提交包含XSS代码的留言后,服务端会将其存储在数据库中,其他用户访问留言时,服务端将从数据库查询已有留言并将留言内容输出在http响应中。

下面是存储型xss的环境搭建:简易留言板

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
	<title>留言板</title>
</head>
<body>
	<center>
	<h6>输入留言内容</h6>
	<form action="" method="post">
		标题:<input type="text" name="title"><br />
		内容:<textarea name="content"></textarea><br />
		<input type="submit">
	</form>
	<hr>
	<?php

		$con=mysqli_connect("localhost","root","root","test");
		if (mysqli_connect_errno())
		{
			echo "连接失败: " . mysqli_connect_error();
		}
		if (isset($_POST['title'])) {
			$result1 = mysqli_query($con,"insert into xss(`title`, `content`) VALUES ('".$_POST['title']."','".$_POST['content']."')");
		}

		$result2 = mysqli_query($con,"select * from xss");

		echo "<table border='1'><tr><td>标题</td><td>内容</td></tr>";
		while($row = mysqli_fetch_array($result2))
		{
			echo "<tr><td>".$row['title'] . "</td><td>" . $row['content']."</td>";
		}
		echo "</table>";
	?>
	</center>
</body>
</html>

记得在数据库中创建xss表,不然php找不到xss表就无法插入数据会报错

image.png

image.png

不知为何连接上数据库后php还是不能向数据库中写入。可能是权限问题吧,研究半天没有成功,这里换用pikachu靶场的xss(store)环境

image.png

成功跳转弹窗

image.png

与反射型相同payload上传获取cookie

image.png

正文|DOM XSS简述

img

DOM XSS是指页面中原有的JavaScript代码执行后,需要进行DOM树节点的增加或者元素的修改,引入了被污染的变量,从而导致xss。DOM XSS与反射型,存储型XSS主要的区别在于DOM XSS的XSS代码不需要服务器端解析,依赖的是浏览器端的DOM解析。

DOM环境搭建

<html>

<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
	<title>Test</title>
	<script type="text/javascript">
		function tihuan(){
			document.getElementById("id1").innerHTML = document.getElementById("dom_input").value;
		}
	</script>
</head>

<body>
	<center>
	<h6 id="id1">这里会显示输入的内容</h6>
	<form action="" method="post">
		<input type="text" id="dom_input" value="输入"><br />
		<input type="button" value="替换" onclick="tihuan()">
	</form>
	<hr>
	

	</center>

</body>
</html>

DOM XSS测试

image.png

正文|xss利用

1.窃取 Cookie:

从以上的实验过程中,我们可以看到,由于黑客注入的 JavaScript 代码是运行在 http://server.com 这个域名下的,因此,黑客可以在 JavaScript 中通过 document.cookie 获得 Cookie 信息。也就是说**黑客可以窃取用户的 Cookie。**另外,需要我们注意的是,受SOP(Same Origin Policy,同源策略)保护,我们在 http://server.com 中是无法直接向 http://hacker.com 发送 GET 或者 POST 请求的。但是我们可以通过 window.location 、加载 JavaScript 文件、图片等方式,向 http://attacker.com 发送带有 Cookie 的 GET 请求。

窃取用户的cookie后,黑客可以通过cookie伪造合法身份(管理员身份)登录,获取操作网页的权限。

2. 未授权操作

除了窃取敏感信息以外,黑客还可以利用 JavaScript 的特性,直接代替用户在 HTML 进行各类操作。

微博 XSS 攻击事件中,黑客就利用 JavaScript 脚本,让用户发送了一个微博,微博中同时还带有反射型 XSS 的链接。这样一来,每个点击链接的用户都会通过微博的形式,诱导更多的用户点击链接,一传十、十传百,造成大范围的传播。

微博xss攻击事件相关链接:
https://www.cnblogs.com/svennee/p/4099637.html

https://www.cnblogs.com/hainange/archive/2011/06/29/6152978.html

image.png

3. 按键记录和钓鱼

窃取 Cookie 和未授权操作都是我们很容易想到的危害,除此之外,JavaScript 还能做什么呢?

JavaScript 的功能十分强大,它还能够记录用户在浏览器中的大部分操作。比如:鼠标的轨迹、键盘输入的信息等。也就是说,你输入的账号名和密码,都可以被 JavaScript 记录下来,从而被黑客获取到。

另外,即使某个存在 XSS 漏洞的页面不具备任何输入框,黑客还可以通过修改 DOM,伪造一个登录框,来诱导用户在本不需要登录的页面,去输入自己的用户名和密码。这也是“钓鱼”的一种形式,在这个过程中用户访问的域名是完全正常的,只是页面被篡改了,所以具

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值