安徽网站开发公司,可喜安cms系统,海贼王网页设计素材,贵阳网站推广目录
前言
1.反射性XSS
2.存储型XSS
3.DOM型XSS
第01关 反射型XSS漏洞
1.打开靶场
2.源码分析
3.渗透
第02关 存储型XSS漏洞
1.打开靶场
2.源码分析
4.渗透
方法1#xff1a;
方法2
方法3
第03关 DOM XSS漏洞
1.打开靶场
2.源码分析
3.渗透分析
3.渗透过程…目录
前言
1.反射性XSS
2.存储型XSS
3.DOM型XSS
第01关 反射型XSS漏洞
1.打开靶场
2.源码分析
3.渗透
第02关 存储型XSS漏洞
1.打开靶场
2.源码分析
4.渗透
方法1
方法2
方法3
第03关 DOM XSS漏洞
1.打开靶场
2.源码分析
3.渗透分析
3.渗透过程
1渗透方法1
2渗透方法2
3渗透方法3
第04关 XSS修复示例
1.打开靶场
2.源码分析
3.渗透实战 前言
Cross-Site Scripting 简称为“CSS”为避免与前端叠成样式表的缩写CSS冲突故又称XSS。一般XSS可以分为如下几种常见类型
1.反射性XSS
反射型XXS是一种非持久性的攻击它指的是恶意攻击者往Web页面里插入恶意代码当用户浏览该页之时嵌入其中Web里面的html代码会被执行从而达到恶意攻击用户的目的。
2.存储型XSS
存储型XSS又名持久型XSS攻击的恶意代码会被存储在数据库、文件系统等存储介质因为是永久存储所以功效持久。通常来讲攻击者可以把payload放在网站留言板、评论等位置等用户访问网站并有匹配payload的行为时即可触发攻击。
3.DOM型XSS
DOM XSS的XSS代码并不需要服务器解析响应的直接参与触发XSS靠的就是浏览器端的DOM解析可以认为完全是客户端的事情无法通过WAF防护。
第01关 反射型XSS漏洞
1.打开靶场 2.源码分析
如下所示未对传入参数name进行任何过滤存在xss漏洞
?php require_once ../header.php; ?
htmlheadtitle反射型XSS漏洞/title/headh2反射型XSS漏洞/h2div classalert alert-successp/01.php?nameiwebsec /p/divbodytable classtable table-striped?phpif(isset($_GET[name])){$name$_GET[name];echo h2.Hello .$name.h2;}else{exit();}
?
/table很明显这是一个反射型的XSS漏洞
3.渗透
传入参数scriptalert(ljn)/script
iwebsec 靶场漏洞库iwebsechttp://iwebsec.com:81/xss/01.php?name渗透成功效果如下所示 第02关 存储型XSS漏洞
1.打开靶场
iwebsec 靶场漏洞库iwebsechttp://iwebsec.com:81/xss/02.php如下所示这是一个留言板相关内容的网页 2.源码分析
如下所示对传入的参数name并未做任何过滤具备XSS漏洞。
?phprequire_once(../header.php);require_once(../sqli/db.php);?
htmlheadtitle存储型XSS漏洞/title/headh2存储型XSS漏洞/h2div classalert alert-successp请输入你的留言信息/p/divform methodgetinput typetext namename
input typesubmit valuesubmit
/formbody?phpif(isset($_GET[name])){$name$_GET[name];$sqlINSERT INTO xss set name$name;$resultmysql_query($sql);$sqlSELECT * FROM xss;$resultmysql_query($sql);}else{exit();}if ($result) {?table classtable table-stripedtrthid/ththname/th/tr?phpwhile ($row mysql_fetch_assoc($result)) {echo tr;echo td.$row[id]./td;echo td.$row[name]./td;echo /tr;} echo /table;}else {print_r(mysql_error());}?同时对参数name使用SQL语句进行insert存储关键源码如下 $sqlINSERT INTO xss set name$name;$resultmysql_query($sql);
接下来再使用select查询语句将其展示出来关键源码如下 $sqlSELECT * FROM xss;$resultmysql_query($sql);
很明显这是具有存储型XSS漏洞注入的XSS命令会永久存储到服务器从而触发XSS漏洞。
4.渗透
方法1
这里要注意的是因为涉及到SQL语句第一个SQL插入源码如下所示闭合方式为单引号。 $sqlINSERT INTO xss set name$name;
故而name的赋值不可以有单引号故而如果想输出ljn那么参数不能是scriptalert(ljn)/script这是因为包含了单引号
scriptalert(/xss/)/script 如下所示 渗透结果如下所示 方法2
因为使用SQL语句单引号闭合故而可以选择使用双引号来进行渗透
scriptalert(hello ljn)/script
在留言处输入参数后如下所示 如下所示渗透成功 方法3
scriptalert(20221128)/script
如下所示渗透成功 第03关 DOM XSS漏洞
1.打开靶场
iwebsec 靶场漏洞库iwebsechttp://iwebsec.com:81/xss/03.php 2.源码分析
如下代码中存在domxss函数可能存在dom型xss漏洞
?php require_once ../header.php; ?
htmlheadtitleDOM XSS漏洞/title/headh2DOM XSS漏洞/h2div classalert alert-successp请输入内容 /p/divbodytable classtable table-stripedscript
function domxss()
{var str document.getElementById(input).value;document.getElementById(output).innerHTML str;
}
/scripth2 id output/h2input typetext idinput value /
input typebutton valuesubmit onclickdomxss() /
/table
3.渗透分析
输入参数判断是否有过滤信息
?%66666ljn
在当前页面元素搜索框中输入关键字搜索ljn寻找刚刚输入的内容很明显所有字符都还在并不存在过滤单引号和双引号等特殊字符, 并将输入内容显示到页面中。 接下来分析一下闭合关系查看器中的内容如下于是可以输入完整的xss语句通过将内容输出到页面再出发显示到页面的内容执行xss脚本。
h2 idoutputlt;gt;?%66666ljn/h2
3.渗透过程
1渗透方法1
基于此可以构造闭合参数输入xss恶意脚本点击ljn后输出你好
li/onclickalert(你好)ljn/li 输入后提交如下所示 在页面的ljn处点击鼠标则弹出你好渗透成功 2渗透方法2
参数为xss恶意脚本因图标执行错误而出发弹框输出ljn
img src1 onerroralert(ljn)如下所示渗透成功 3渗透方法3
参数为xss恶意脚本鼠标移动到图标后输出ljn
img src# onmouseoveralert(ljn) 提交后如下图所示 当鼠标移动到图标处时弹出弹框渗透成功 第04关 XSS修复示例
1.打开靶场
iwebsec 靶场漏洞库iwebsechttp://iwebsec.com:81/xss/04.php 2.源码分析
如下所示对参数使用了htmlspecialchars函数过滤这样就可以防范恶意的xss攻击
?php require_once ../header.php; ?
htmlheadtitleXSS修复示例/title/headh2XSS修复示例/h2div classalert alert-successp/04.php?nameiwebsec /p/divbodytable classtable table-striped?phpif(isset($_GET[name])){$name$_GET[name];echo h2.Hello .htmlspecialchars($name).h2;}else{exit();}
?
/table
3.渗透实战
再次尝试第01关渗透成功的内容
scriptalert(ljn)/script
如下所示渗透失败说明xss漏洞修复成功