当前位置: 首页 > wzjs >正文

建立网站的主要步骤温州最便宜网站建设

建立网站的主要步骤,温州最便宜网站建设,it外包公司怎么接项目,帝国网站管理系统视频教程目录 一、XSS 二、DOM型XSS 三、代码分析 1、index.php 2、High.php 3、渗透思路 四、渗透实战 1、渗透准备 2、采用Script标签绕过 3、采用IMG标签绕过 DVWA(Damn Vulnerable Web Application)中的 XSS DOM关卡是用于练习和演示 DOM XSS的不同…

目录

一、XSS

二、DOM型XSS

三、代码分析

1、index.php

2、High.php

3、渗透思路

四、渗透实战

1、渗透准备

2、采用Script标签绕过

3、采用IMG标签绕过


DVWA(Damn Vulnerable Web Application)中的 XSS DOM关卡是用于练习和演示 DOM XSS的不同场景,不同安全等级存在不同的脆弱点和绕过方法,本小节对高等级别(High)关卡进行渗透实战。

一、XSS

XSS(Cross-Site Scripting) 指的是攻击者通过在网页中注入恶意脚本,当用户访问该页面时,脚本会在用户浏览器中执行,从而窃取用户数据、会话信息或进行其他恶意操作。核心原理就是未对用户输入或输出进行适当过滤,导致恶意代码被浏览器解析执行。

XSS类型

位置

数据流向

反射型 XSS

服务器端

用户输入 → 服务器 → 响应中包含恶意代码

存储型 XSS

服务器端

用户输入 → 存储(数据库) → 所有用户访问时触发

DOM XSS

客户端 JavaScript 代码

用户输入 → 浏览器 DOM 操作 → 执行恶意代码

二、DOM型XSS

DOM 型 XSS(Document Object Model Cross-Site Scripting) 是一种特殊的 XSS 攻击,其注入点存在于客户端 JavaScript 代码中,而非服务器端。攻击者通过操控网页的 DOM 环境(如 URL 参数、表单输入等),诱导浏览器执行恶意脚本,无需服务器参与。

方面普通XSSDOM XSS
检测工具传统扫描工具可分析HTTP响应内容需动态分析JS代码和DOM操作
防御位置服务器端过滤(如转义<>客户端转义 + 避免危险的DOM操作
WAF防护可通过拦截恶意HTTP请求防御通常无效(攻击数据可能不发送到服务器)

三、代码分析

1、index.php

进入DVWA靶场源目录,找到index.php源码。

这段代码是DVWA(Damn Vulnerable Web Application)中DOM型XSS的演示页面,主要功能是:

  • 根据用户选择的语言生成一个下拉菜单。
  • 当用户提交选择后,URL中会包含default=参数。
  • 页面JavaScript会读取URL参数并动态生成选项。

 详细注释后的代码如下所示。

<?php
// 设置根目录路径
define( 'DVWA_WEB_PAGE_TO_ROOT', '../../' );
// 引入DVWA页面初始化文件
require_once DVWA_WEB_PAGE_TO_ROOT . 'dvwa/includes/dvwaPage.inc.php';// 启动页面,要求认证和PHPIDS保护
dvwaPageStartup( array( 'authenticated', 'phpids' ) );// 创建新页面
$page = dvwaPageNewGrab();
// 设置页面标题
$page[ 'title' ]   = 'Vulnerability: DOM Based Cross Site Scripting (XSS)' . $page[ 'title_separator' ].$page[ 'title' ];
$page[ 'page_id' ] = 'xss_d';
$page[ 'help_button' ]   = 'xss_d';
$page[ 'source_button' ] = 'xss_d';// 连接数据库
dvwaDatabaseConnect();// 根据安全等级选择对应的级别文件
$vulnerabilityFile = '';
switch( $_COOKIE[ 'security' ] ) {case 'low':$vulnerabilityFile = 'low.php';break;case 'medium':$vulnerabilityFile = 'medium.php';break;case 'high':$vulnerabilityFile = 'high.php';break;default:$vulnerabilityFile = 'impossible.php';break;
}// c
require_once DVWA_WEB_PAGE_TO_ROOT . "vulnerabilities/xss_d/source/{$vulnerabilityFile}";// 对于impossible级别,不进行URI解码
$decodeURI = "decodeURI";
if ($vulnerabilityFile == 'impossible.php') {$decodeURI = "";
}// 构建页面主体
$page[ 'body' ] = <<<EOF
<div class="body_padded"><h1>Vulnerability: DOM Based Cross Site Scripting (XSS)</h1><div class="vulnerable_code_area"><p>Please choose a language:</p><form name="XSS" method="GET"><select name="default"><script>// 检查URL中是否包含default参数if (document.location.href.indexOf("default=") >= 0) {// 提取default参数值var lang = document.location.href.substring(document.location.href.indexOf("default=")+8);// 动态写入选项document.write("<option value='" + lang + "'>" + $decodeURI(lang) + "</option>");document.write("<option value='' disabled='disabled'>----</option>");}// 写入固定选项document.write("<option value='English'>English</option>");document.write("<option value='French'>French</option>");document.write("<option value='Spanish'>Spanish</option>");document.write("<option value='German'>German</option>");</script></select><input type="submit" value="Select" /></form></div>
EOF;// 添加更多信息链接
$page[ 'body' ] .= "<h2>More Information</h2><ul><li>" . dvwaExternalLinkUrlGet( 'https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)' ) . "</li><li>" . dvwaExternalLinkUrlGet( 'https://www.owasp.org/index.php/Testing_for_DOM-based_Cross_site_scripting_(OTG-CLIENT-001)' ) . "</li><li>" . dvwaExternalLinkUrlGet( 'https://www.acunetix.com/blog/articles/dom-xss-explained/' ) . "</li></ul>
</div>\n";// 输出页面
dvwaHtmlEcho( $page );?>

2、High.php

打开源码High.php,分析可知这段代码使用switch方法的白名单过滤了XSS注入,如下所示。

分析代码,当前防护措施如下所示。

  • 参数检查:检查URL中是否存在default参数(如?default=English),且值不为null
  • 白名单验证:只允许FrenchEnglishGermanSpanish四个值,其他值会触发重定向到默认英语选项。
  • 防御性设计:通过白名单强制无效输入回退到安全默认值,避免不可控输入。

详细注释后的源码如下所示。

<?php
// 检查是否存在名为"default"的GET参数且其值不为null
if (array_key_exists("default", $_GET) && !is_null($_GET['default'])) {# 白名单允许的语言选项switch ($_GET['default']) {case "French":case "English":case "German":case "Spanish":# 如果是白名单中的语言,不做任何操作,继续执行后续代码break;default:# 如果不在白名单中,重定向到?default=Englishheader("location: ?default=English");exit; // 终止脚本执行}
}
?>

3、渗透思路

由于源码器使用了switch白名单的方式,判断参数中的值是不是所规定的四种(FrenchEnglishGermanSpanish),所以服务端是无法通过除此之外的其他内容绕过。

但还有一种绕过方式:

  • 使用#符号来使URL传入内容被截断,URL栏的 # 号之后的内容并不会发送至服务器端
  • 但是js语言中#号并不会被截断,会使得default传入的所有内容都会完整传入。

综上,当注入语句配置为“白名单的四个词+空格+#+原始注入语句”时,就可以实现URL白名单绕过,js可以传入完整的注入语句,从而实现$_GET['default']传递的值刚刚好为白名单内的值,使绕过验证,又实现了前端加载攻击语句。

四、渗透实战

1、渗透准备

配置security为High级别,如下所示。

进入DVWA靶场XSS DOM关卡High级别,选择English,此时完整URL地址如下所示。

http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=English

2、采用Script标签绕过

尝试注入XSS语句<script>alert('mooyuan')</script>,参考Low关卡,注入语句仍为<script>alert('mooyuan')</script>,针对本关卡,注入语句前增加French空格#号,注入语句如下所示。

French #<script>alert('mooyuan')</script>

3、采用IMG标签绕过

尝试注入XSS语句<img src=0 οnerrοr=alert('mooyuan')>,参考Medium关卡,构造单select闭合,语句变为</select><img src=0 οnerrοr=alert('mooyuan')>。针对本关卡,注入语句前增加English空格#号,注入语句如下所示。

English #</select><img src=0 onerror=alert('mooyuan')>

http://www.dtcms.com/wzjs/537002.html

相关文章:

  • 如何做伪原创文章网站苏州建设网站多少钱
  • 茶叶网站设计物流案例 网站
  • 网站收录查询入口英文网站模板 查看
  • 住房和城乡建设部的网站做网站的工作记录
  • 如何找外贸网站建设公司浏览器游戏网址
  • 网站建设汽车后市场德国网站域名后缀
  • 潍坊网站托管手机建站专家
  • 做外贸自己的公司网站十大网络推广公司
  • 电影项目做产品众筹哪个网站好学校建设网站的目的
  • 网站规划与设计教案深圳龙岗区优化防控措施
  • 网站seo 最好ui设计说明万能模板
  • 网站对于企业的好处少儿编程课网课哪个好
  • 制作网站参考案例wordpress E405
  • 设计网站如何打造收费山东外贸建站
  • 学院网站建设目的站群推广
  • 网站权重什么意思施工企业会计实务
  • 做网站公司 包含了服务器费用吗微信创建网站应用程序
  • 周口公司做网站wordpress.en
  • 网站运营与管理的内容有哪些vps搭建网站
  • 东莞阿里巴巴网站建设wordpress设置登录背景
  • 贵州省兴义市建设局网站首页国网公司网站
  • 用wordpress做网站做简历的网站叫什么软件
  • 做网站运营用什么配置电脑国内最大的app开发公司
  • 东莞网站建设怎么收费互联网平台推广怎么做
  • 哈尔滨网站建设教程wordpress 分享 可见
  • 学校 网站建设 报销华强北手机网站建设
  • 门户网站 建设 如何写yii2 wordpress
  • 电商网站的建设与安全做网站凡科如何
  • 顶尖的网站建设开公司做购物网站是不是想多了
  • 厦门模板建站哪家好百度搜索推广费用