XSS-DOM
2024-10-08 00:16:22
DOM型XSS是基于DOM文档对象模型的一种漏洞
通过 HTML DOM,树中的所有节点均可通过 JavaScript 进行访问。所有 HTML 元素(节点)均可被修改,也可以创建或删除节点。(引用W3C)
因为可以在DOM树中植入js代码,因此造成了XSS-DOM漏洞,所以DOM类型的XSS可能是反射型也可能是储存型
Low
<?php # No protections, anything goes ?>
没有PHP代码,直接看前端
构造payload
?default=<script>alert('xss')</script
成功执行
Medium
<?php // Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
$default = $_GET['default']; # Do not allow script tags
if (stripos ($default, "<script") !== false) {
header ("location: ?default=English");
exit;
}
} ?>
stripos函数 找查字符在字符串中第一次出现的位置
如果$default 出现<script,则默认?default=English
我们可以用采用JavaScript伪协议
?default=</option></select><a href="javascript:alert('xss')">test</a>
High
<?php // Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) { # White list the allowable languages
switch ($_GET['default']) {
case "French":
case "English":
case "German":
case "Spanish":
# ok
break;
default:
header ("location: ?default=English");
exit;
}
} ?>
switch语句选出了对应的结果(白名单),其他的字符默认为English
payload :
?default=English #<script>alert(/xss/)</script>
因为在URL栏中#之后的字符不会提交到服务器,就实现绕过白名单
Impossible
<?php # Don't need to do anything, protction handled on the client side ?>
不需要做任何事情,在客户端处理保护
测试输入 <script>alert('xss')</script>
被解释URL编码,从而防止js代码执行
最新文章
- .Net使用Redis详解之ServiceStack.Redis(七)
- 由ArcMap属性字段自增引出字段计算器使用Python的技巧
- 通过ipv6访问 g o o g l e
- 如何在tpl模版的div块中加ztree
- cxf和jaxws的对比
- 使用eclipse和maven生成java web程序war包
- iOS网络监测如何区分2、3、4G?
- JDBC的批量批量插入
- ImageButton如何让图片按比例缩放不被拉伸
- ActionBarSherlock
- drop table big_table 调试
- AfxMessageBox(";这里为提示框的内容";);程序弹出一个提示窗口,可以做调试提示信息
- (原)caffe中fine tuning及使用snapshot时的sh命令
- 在Linux下使用iconv转换字符串编码
- Netty(6)源码-服务端与客户端创建
- CSS之定位布局(position,定位布局技巧)
- Java简单知识梳理
- 下载文件downloadFile
- setTimeout循环传参数几种方式
- bzoj2054疯狂的馒头——线段树