首页 > 其他分享 >Web安全中的XSS攻击详细教学(一),Xss-Labs靶场通关全教程(建议收藏)

Web安全中的XSS攻击详细教学(一),Xss-Labs靶场通关全教程(建议收藏)

时间:2024-06-20 20:31:26浏览次数:19  
标签:尝试 XSS payload Web alert Labs &# onfocus 源码

Web安全中的XSS攻击详细教学,Xss-Labs靶场通关全教程(建议收藏)

漏洞原理

xss(cross site script)跨站脚本攻击,指的是攻击者往web页面插入恶意脚本代码,当用户浏览时,嵌入web页面里的脚本代码就会执行,从而达到恶意攻击用户的特殊目的,它主要分为俩种类型

  1. 1. 存储型XSS(持久型):攻击者将恶意脚本存储在目标服务器上,每当用户访问受感染的页面时,恶意脚本就会执行。
  2. 2. 反射型XSS(非持久型):攻击者诱使用户点击一个链接,该链接将恶意脚本作为输入传递给服务器,然后服务器将这个脚本反射回用户的浏览器执行。
  3. 3. DOM型(非持久型):

漏洞危害

XSS攻击的常见目标是盗取用户的cookie和其他敏感信息,这些信息可以用来进行会话劫持、身份冒充等进一步攻击。如何防御?

  1. 1. 输入验证:网站开发者需要对用户输入进行严格的验证和过滤,避免将不受信任的数据直接输出到HTML中。
  2. 2. 输出编码:当将用户输入的数据输出到页面时,使用适当的编码方法(如HTML实体编码)来转义可能被浏览器解释为脚本的特殊字符。
  3. 3. 对输出内容进行编码:在变量输出到HTML页面时,可以使用编码或转义的方式来防御XSS攻击。

漏洞复现

Upload-Labs靶场(1-20关)

image-20240612215742388

第一关(URL传参)

分析URL中的参数有个nanme

image-20240612220025399

根据XSS原理,注入恶意脚本,尝试注入payload

?name=<script>alert()</script>

image-20240612220325519

第二关(输入框注入)

尝试注入payload

<script>alert()</script>

image-20240612220558370

分析源码,红色框上面部分被转义了,没有什么绕过方法,但是下面部分,仔细看,如果我们嵌套一个反标签符号呢?payload如下

"><script>alert()</script><"

image-20240612220838099

image-20240612221303860

image-20240612221314671

第三关(事件注入)

尝试使用上一关的内容进行绕过,被转义,只能想想其他办法了

image-20240612221521377

JavaScript中有一个函数onfocus,用于输入框input,select,a标签获得焦点的事件

image-20240612221850638

这里我们给他一个函数即可,payload如下

' onfocus=javascript:alert() '

image-20240612222425014

此时再点击这个input框,使其获得焦点,触发onfocus事件

image-20240612222515544

第四关(引号类型)

使用上一关的结果进行注入,尝试失败

image-20240612222615662

分析源码,发现外围是双引号,双包单了,不符合javascript 的onfocus事件绑定

image-20240612222654588

切换payload为双引号即可

" onfocus=javascript:alert() "

提交payload后,需要点击input框,触发onfocus事件

image-20240612222943533

第五关(a标签注入)

尝试输入脚本标签,被强行切换为scr_ipt

image-20240612223244231

使用上一关的方法" onfocus=javascript:alert() ",事件名称也被强行转换了

image-20240612223453938

这里就要用到a标签的 href属性了,尝试注入

image-20240612223917373

分析源码,并无异常转换,只是少了个"> 和 <",构造payload"><a href="javascript:alert();">xx</a><"

image-20240612223900702

发现页面多了个标签,此时既可以点击此标签

image-20240612224341738

第五关,over!

image-20240612224417283

第六关(大小写绕过)

使用上一关结果,尝试注入"><a href="javascript:alert();">xx</a><"

image-20240612224609209

分析源码,href变成了hr_ef

image-20240612224640322

尝试onfocus绕过,失败

image-20240612224811256

尝试大小写,发现没有对大小写进行验证

//第一种,脚本注入
" ><SCRIPT>alert()</SCRIPT>< "
//第二种,焦点事件
" ONDOCUS=javascript:alert() "
//a标签href属性的
"> <a HREF=javascript:alert()>x</a> <"

image-20240612225123940

over!

第七关(双拼写)

一样,使用上一关方法尝试,发现此时对大小写也进行了验证。

image-20240612225527950

不难发现,这里面进行了小写转化,将检测出来的on,script,href给删掉了,但是没有关系,我们可以利用****双拼写****来绕过。

" ><sscriptcript>alert()</sscriptcript>< "

image-20240612225857143

第八关(Unicode编码)

尝试使用大小写

image-20240612230044566

失败,对字符进行了强行转换,而且使用了强制小写字母

image-20240612230105027

尝试使用双写,也以失败告终

image-20240612230253044

这里我们能利用href的隐藏属性自动Unicode解码,我们可以插入一段js伪协议

javascript:alert()

利用在线工具进行Unicode编码后得到,在线Unicode编码解码

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;

image-20240612231216260

image-20240612231249092

第九关(指定字符绕过)

先看看过滤了什么

" src data onfocus <script> <a href=javascript:alert()> 

image-20240612233001416

什么嘛,看源码

image-20240612233125151

当传入的参数不包含"http://"时,即其值为假(false),将触发if语句的执行。为了避免这种情况,我们需要在参数中添加"http://",并将其作为注释,以防止其被实际执行,这会影响到弹窗的显示。为了确保strpos函数能够返回一个数值,我们需要构造一个特定的输入(payload),使其满足函数的预期行为。比如:

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;/* <http://> */

image-20240612233740762

本章小结:插入指定内容(本关是http://)绕过检测,再将指定内容用注释符注释掉即可

第十关(属性修改)

a标签注入失败,

image-20240613091830703

看看网页源码,全部都在h2标签去了,看着下面还有这么多hidden的input,这谁顶得住啊。

image-20240613091908251

看后端源码吧

image-20240613092300717

它多了个get的参数,测试了好几遍,可以尝试这个参数,把后面的type="hidden"给干掉,或者给type="text"也行就可以让这个input显示出来,再让它获得焦点,触发onfocus事件。

level10.php?t_sort=" onfocus="javascript:alert()" type="
level10.php?t_sort=" onfocus="javascript:alert()" type="text

image-20240613093643554

第十一关(Referer)

老样子,使用上一关的payload,发现我们的参数被转义了

image-20240613094007132

检查源码使用,这个str11并没有使用htmlspecialchars()方式进行转换,那么这里就是注入点

image-20240613095350148

知识补充:

**htmlspecialchars()**:一个PHP函数,用于将特殊字符转换为HTML实体。这个函数通常用于防止跨站脚本(XSS)攻击。

$_SERVER['HTTP_REFERER'] :链接到当前页面的前一页面的 URL 地址。(referer,推荐人)

$userInput = "<script>alert('xss');</script>";
$safeOutput = htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');
echo $safeOutput; // 输出: &lt;script&gt;alert(&#039;xss&#039;);&lt;/script&gt;

尝试注入RefererREFERER:<script>alert()</script>

image-20240613154538518

注入成功,但是他把我们的< 和> 这些尖括号给去掉了

image-20240613154629944

那么可以尝试使用onfocus事件,并且把隐藏的input给显示出来,payload如下

REFERER:" onfocus="javascript:alert()" type="text" "

over!

image-20240613155121147

第十二关(User-Agent)

上一关使用的referver,这一关我们猜测使用cookie,开始尝试

image-20240613155911490

发送请求,果断打开源码,尝试个鬼,用的user-agent

image-20240613155954404

尝试使用如下payload,添加到请求头后面

" onfocus="javascript:alert()" type="text" "

image-20240613160209621

image-20240613160321357

over!

第十三关(Cookie)

这关想都不要想,一定是Cookie!有人不服嘛,不服顺着网线来打死我 (´。✪ω✪。`)

image-20240613161352005

先查看源码,然后抓包,或者说,直接抓包

image-20240613161653344

俩个东西似曾相识哈,复制上一关的payload,开始注入

" onfocus="javascript:alert()" type="text" "

image-20240613161855188

鼠标点击input输入框,使其获得焦点,成功!

image-20240613161749399

第十四关

由于本关因****iframe****调用的文件地址失效,无法进行测试。

第十五关

来到了第十五关,直到看到如下图片,啊??????

image-20240613165504251

再看看源码,没有一点头绪啊,之前用的方法全部没作用了

image-20240613165609978

使用burp suite抓包试试。。。。。。

image-20240613165822952

无奈,只能看php源码了,有一个SRC参数,关键他还使用了htmlspecialchars()

image-20240613170222820

累了,煞了我吧

image-20240613170725536

看网上是这样子说的

这里有个html实体化函数在,没有删掉东西,所以不影响我们接下来的操作,我们可以包涵第一关并让第一关弹窗(注意,这里不能包涵那些直接弹窗的东西如

标签:尝试,XSS,payload,Web,alert,Labs,&#,onfocus,源码
From: https://blog.csdn.net/xt350488/article/details/139726968

相关文章

  • 从零开始学Web安全,文件包含漏洞详解
    从零开始学Web安全,文件包含漏洞详解大家好,我是[小羽],一个对网络安全充满热情的小白。今天,我将与大家分享我的网络安全中的Web安全学习笔记什么是文件包含漏洞?,这里很详细的介绍了Sql注入的各种类型防御的方法。靶场:dvwa,pikachu服务器:centos7数据库:mysql5.7php:8.0nginx:1.......
  • 深入探索WebKit中的跨域资源共享(CORS)实现
    跨域资源共享(CORS)是一个安全协议,允许不同源之间的资源共享。在现代Web应用中,CORS对于实现WebAPI调用、Ajax跨域请求等至关重要。WebKit作为广泛使用的浏览器引擎之一,其对CORS的支持直接影响到Web应用的跨域交互能力。本文将深入探讨WebKit如何实现CORS,以及这一机制对开发者......
  • webpack项目开发完后,如何优化打包速度?
    Gzip压缩前端页面文件缓存我们先来简单回顾下http缓存的知识:HTTP1.0是通过Expires(文件过期时间)和Last-Modified(最近修改时间)来告诉浏览器进行缓存的,这两个字段都是UTC时间(绝对时间)。Expires过期控制不稳定,因为浏览器端可以随意修改本地时间,导致缓存使用不精准。而且L......
  • 使用Ollama+OpenWebUI本地部署阿里通义千问Qwen2 AI大模型
    ......
  • CentOS7系统搭建web环境 php&nginx&pgsql
    环境:VMware、CentOS-7-x86_64-DVD-2009.iso、nginx-1.26.1、php-7.2.0、postgresql-12php最好安装对应php项目所需版本,否则会出现不兼容问题。一、VMware安装CentOS7操作系统下载LinuxCentos7映像:https://mirrors.aliyun.com/centos/7/isos/x86_64/?spm=a2c6h.25603864.0.......
  • 详解Web应用安全系列(1)注入漏洞之SQL注入
    注入漏洞通常是指在可输入参数的地方,通过构造恶意代码,进而威胁应用安全和数据库安全。常见的注入漏洞包括:SQL注入和XSS跨站脚本攻击。这篇文章我们主要讲SQL注入,SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查......
  • 5.21实验三 Web数据库程序设计
    一、实验目的通过使用JSP技术设计一个简单的数据库管理系统,了解展示页面和编辑页面的区别,掌握Web服务器与MySQL数据库的连接和数据库操作的方法,掌握使用Java语言编写JSP文件的方法。二、实验内容和基本要求从以下列举的四个数据库中,任选其一,或者自行定义其他数据库,每个数据库中......
  • 山东菏泽家乡网页代码 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页
    ......
  • Web渗透:XSS-反射型&存储型
    跨站脚本攻击(Cross-SiteScripting,XSS)是一种常见的网络安全漏洞,它允许攻击者将恶意脚本注入到网页中,其他用户在浏览这些页面时,可能会执行这些恶意脚本,从而导致各种安全问题,如窃取用户信息、会话劫持等。产生原因:XSS漏洞其实就是一个前端漏洞,产生的根本原因是未对用户输入进行......
  • 通过 HIDS 告警分析 webshell 行为
    准备漏洞环境1. 下载 vulhub 仓库gitclonehttps://github.com/vulhub/vulhub.git2.  修改 tomcat 弱口令漏洞环境配置vivulhub/tomcat/tomcat8/tomcat-users.xml将配置文件中的 user 和 password 修改为非弱口令3.  启动漏洞环境(根据实际 docker 环境......