XSS入门-复现与剖析
Posted 1智慧E生活
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XSS入门-复现与剖析相关的知识,希望对你有一定的参考价值。
01
—
XSS入门-复现与剖析
概述:
通过本文小伙伴们从phpstudy开始了解搭建
web的流程,并自己动手写html、php等熟悉
web的基础开发,通过构造xss页面,来了解
xss产生的机理,并且结合实验步骤四了解xss
其他情况下的绕过方法。
1 预备知识
1. 关于xss的一些基础知识
XSS又称CSS,全称Cross SiteScript,跨站脚
本攻击,是Web程序中常见的漏洞,XSS属于
被动式且用于客户端的攻击方式,所以容易被
忽略其危害性。其原理是攻击者向有XSS漏洞
的网站中输入(传入)恶意的HTML代码,当其它
用户浏览该网站时,这段HTML代码会自动执
行,从而达到攻击的目的。如,盗取用户
Cookie、破坏页面结构、重定向到其它网站
等。对本节课使用到的winhex的简单描述
XSS攻击类似于sql注入攻击,攻击之前,我们
先找到一个存在XSS漏洞的网站,XSS漏洞分
为两种,一种是DOM Based XSS漏洞,另一
种是Stored XSS漏洞。理论上,所有可输入
的地方没有对输入数据进行处理的话,都会存
在XSS漏洞,漏洞的危害取决于攻击代码的威
力,攻击代码也不局限于script。
2phpstudy
phpStudy是一个PHP调试环境的程序集成包。
该程序包集成最新的Apache+PHP+MySQ
L+phpMyAdmin+ZendOptimizer,一次性安装
,无须配置即可使用,是非常方便、好用的
PHP调试环境·该程序不仅包括PHP调试环境
,还包括了开发工具、开发手册等
工具:
phpstudy,firefox
1 步骤本实验主要通过phpstudy搭建web页
面,通过notepad编辑php、html,构造能够触
发xss漏洞的页面。并在构建完成之后使用使用
测试xss的语句<script>alert('xss')</script>进
行测试。在实验四中将会涉及xss复杂场景下的
利用。我们的操作分为4个部分:1.使用
phpstudy搭建web,并构造xss1.php进行xss场
景1的实验2.构造xss2.php进行xss场景2的实
验,并在过程中引入闭合标签等概念并加以利
用3.复杂情况下xss漏洞的利用以及引入事件
触发、编码绕过等概念并加以绕过4.其他常见
绕过xss过滤技巧实验一任务描述:使用
phpstudy搭建web,并构造xss1.php进行xss场
景1的实验1. 启动phpstudy
点击“其他选项菜单”—》“网站根目录”
在目录下新建1.php输入:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>XSS场景1</title>
</head>
<body>
<form action="" method="get">
<input type="text" name="xss_input">
<input type="submit">
</form>
<hr>
<?php
$xss=$_GET['xss_input'];
echo '您输入的字符为<br>'.$xss;
?>
</body>
</html>
打开浏览器,输入127.0.0.1/1.php访问
在输入框中输入1点击提交查询
右键查看源代码,进行查看
在第12行,可以看到我们输入的内容在<br>和</body>中原样输出于是我们猜测输入<script>alert('xss')</script>不会被过滤我们在输入框中输入<script>alert('xss')</script>,点击“提交查询”
成功弹框,利用了xss的漏洞 实验任务二任务描述:构造xss2.php进行xss场景2的实验,并在过程中引入编码绕过、闭合标签等概念并加以利用操作:首先同样在网站根目录下新建2.php,输入以下内容:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>xss场景2</title>
</head>
<body>
<center>
<h6>hint:观察value属性</h6>
<form action="" method="get">
<h6>请输入字符串</h6>
<input type="text" name="xss_input_value" value="输入"><br>
<input type="submit">
</form>
<hr>
<?php
$xss=$_GET['xss_input_value'];
if(isset($xss)){
echo '<input type="text" value="'.$xss.'">';
}
?>
</center>
</body>
</html>
打开浏览器输入127.0.0.1/2.php,页面如图
在输入框中输入1,点击“提交查询” 可以看到在下面的框中出现了1
接下来我们输入<script>alert('xss')</script>点击“提交查询”
查看源代码
结合hint给的提示“观察value属性”发现我们的输入被当作value的值进行处理了,这种情况下,我们通常会使用闭合语句的方法来进行处理。我们使用”>来闭合前面的语句,之后再使用<script>alert(‘xss’)</script>,即输入”><script>alert(‘xss’)</script>,点击“提交查询”,
即可弹窗
实验三任务描述:之前我们的xss都是在使用标签进行攻击的,难道我们就离不开标签了吗?NO,实战环境下我们还可以利用“事件”,在实验二的环境中我们还可以考虑利用on“事件”比如"onclick="alert(‘xss’)前面的引号还是用来闭合语句,关键在于onclick我们输入后点击提交
咦?怎么没反应呢?因为onclick都让你click啦,当然要点击才有反应嘛,点击下面的那个框
我们心情高兴的话换别的事件当然也行,比如onmouselove输入”onmousemove=”alert(‘xss’),提交后鼠标移到下方的框上即可触发xss
变形1:很多情况下我们会使用编码绕过某些页面对xss字符的过滤,我们利用实验二的环境可以试一下最常见的html编码使用"onclick="alert('xss')代替"font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">效果是一样的,因为];就是’的html编码
变形2:有时候某些环境下我们无法利用特定的标签,这时候我们还有种思路就是自己构造一个比script优先级高的标签,比如常常使用的textarea,我们知道标签的使用方法有两种一种是</textarea><script>alert('xss')</script>,一种是<textarea><script>alert('xss')</script></textarea>,两种都是可以进行xss的,不过使用前别忘了使用”闭合前面的语句
实验四敲黑板!敲黑板!敲黑板!常见的绕过xss过滤规则还有一下几种方式,不过在我们现在的试验环境下不适用,用了这些技巧反而不能有效利用及其简单的xss。这也提醒我们,要具体情况具体分析,不能一上来就各种奇技淫巧一起上,结果都无法利用,最后却发现人家根本就没有设置过滤规则。技巧1:
可以使用firefox的hackbar将敏感字符转为ascii码 假设我们要转换的是alert(‘xss’),输入后点击确
将蓝色标注的内容放入<script></script>即可技巧2:使用hex编码,即16进制转换进行绕过比如<script>alert(‘xss’)</script>转换为%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%22%78%73%73%22%29%3b%3c%2f%73%63%72%69%70%74%3e
02
—
如何了解更多内容
以上是关于XSS入门-复现与剖析的主要内容,如果未能解决你的问题,请参考以下文章
漏洞复现WordPress插件Quizlord 2.0 XSS漏洞复现与分析