Koi
- 关注
一、介绍
简介
XSS全称是Cross Site Scripting即跨站脚本,为了不和层叠样式表(Cascading Style Sheets)的缩写CSS混合,所以改名为XSS;
攻击者会向web页面(input表单、URL、留言版等位置)插入恶意JavaScript代码,导致管理员/用户访问时触发,从而达到攻击者的目的。
成因(原理)
服务器对用户提交的数据过滤不严,导致浏览器把用户的输入当成了JS代码并直接返回给客户端执行,从而实现对客户端的攻击目的。
类型
1、反射型(非持久型)
这种攻击方式往往具有一次性,只在用户单击时触发
2、存储型(持久型)
注入型脚本永久存储在目标服务器上,当浏览器数据请求时,脚本从服务器上传回并执行。
3、DOM型
反射型 XSS 跟存储型 XSS 的区别是:存储型 XSS 的恶意代码存在数据库里,反射型 XSS 的恶意代码存在 URL 里。
危害
窃取Cookie(冒充身份)
后台增删改文章、修改网页代码
钓鱼攻击
蠕虫攻击
网站重定向
获取用户信息等
绕过
大小写
js伪协议
没有分号
Flash
Html5新标签
Fuzz进行测试
双层标签绕过
二、搭建efucms靶场
1.首先在efucms目录下更改数据库的配置文件(确保配置文件不要出现问题)
'DB_PWD'=>'xxxxx','DB_TYPE'=>'mysql','DB_HOST'=>'localhost','DB_USER'=>'root','DB_NAME'=>'efucms'
DB_PWD代表密码
DB_TYPE代表类型
DB_HOST代表主机名
DB_USER代表用户名
DB_NAME代表数据库名
2.为了访问靶场的稳定,需要更改PHP的版本为5.5.9
3.访问浏览器ip地址加上靶场的名字(代表搭建成功),如下
4.进入靶场后台登录(admin,123456)
能看到这样的页面代表成功
三、XSS平台操作流程
1.注册一个关于XSS的网站账号(里面含有测试指令)
xss.yt
首先要配置
点击查看代码
2.点进入一个连接,然后在里面输入内容(以测试指令代替,其余内容随便填)
3.回到靶场环境
4.然后再后台就可以看到评论的内容
5.可以看到cookie等重要信息
复制cookie
利用hackbar将cookie信息写入进去,然后发送
进入对应的后台程序
四、扩展phpMyadmin数据库的管理工具
浏览器访问ip+phpMyadmin
然后源文件目录自动生成的文件夹,浏览器登陆即可
登录数据库后台(root,123456)
例如:存储密码的数据库
可以看到再靶场环境当中输入的评论内容
五、DVWA靶场
XSS型(反射型):
low
尝试:
<script>alert(111)</script>
爆出cookie
<script>alert(document.cookie)</script>
法二:
按下F12,在控制台输入如下代码,同样会爆出cookie
javascript:alert(document.cookie)
接着来到登录页面尝试,可以登录成功
Medium
<?php
header ("X-XSS-Protection: 0");
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Get input
$name = str_replace( '<script>', ' ', $_GET[ 'name' ] ); //会检查 name 参数中是否有 “< script >”标签,如果有则替换为空,str_replace函数,它是区分大小写的,可以使用大小写混合绕过。
// Feedback for end user
$html .= "<pre>Hello ${name}</pre>";
}
?>
<sCript>alert(document.cookie)</sCript>
<SCript>alert(document.cookie)</SCript>
High
当看到:“hello > ”这是被后端代码过滤
查看源码
红框中的字符解释:PHP preg_replace() 函数是替换的函数的意思:https://www.cnblogs.com/crxis/p/7714636.html
上面的 .* 是表示任何字符,也就是说不管<>包住的是什么都去掉,其中. 表示任意字符, * 表示任意个数
红框中这句话大致意思就是:只要出现script类似的字符,都会被替换为空,也就是被过滤,那么本题就不可以在运用<script>标签,但是有一些javascript事件后仍然能执行javascript代码,构造新的payload
<img src="xxx.jpg" onerror=alert(document.cookie)>
#如果加载图像时发生错误,则会触发一个函数。该函数会显示带文本的警告框。
在本例中,我们引用了一个不存在的图像,因此发生了 onerror 事件。
案例:
XSS型(存储型)
low
<script>alert(111)</script>
继续操作
登陆执行
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)