首页 > 其他分享 >XSS(跨站脚本漏洞)——皮卡丘练习(小白随笔)

XSS(跨站脚本漏洞)——皮卡丘练习(小白随笔)

时间:2022-09-26 18:11:36浏览次数:56  
标签:XSS 跨站 DOM alert cookie 皮卡丘 message 页面

环境准备:小皮(phpstudy)、皮卡丘(pikachu)、burpsuite、火狐浏览器

概念理解:

1、新建txt文档,后缀改为php

<html>  <body>  :静态页面

<?php> 后端代码:在服务器先做计算,在再把计算结果返回到页面

1 <html>
2  <title>XSS TEST</title>
3  <body>
4     <div>这是一个测试页面</div>
5     keyword:<?php echo $_GET['keyword'];?><br>
6  </body>
7 </html>

echo $_GET['k'];   

echo $_POST['keyword'];       // get和post都为变量值,通过k值写入1234567890123

访问结果:

输入:在链接后添加数值

* 也支持运算:

 keyword:<?php echo $_GET['k']+1111;?><br>

 

  如果访问有乱码,将文件另存为其它编码

 

 

 2、在静态代码中增加一条 动态

<html>
 <title>XSS TEST</title>
 <body>
    <div>这是一个测试页面</div>
    <script>alert('XSS!')</script>
    keyword:<?php echo $_GET['k']+1111;?><br>
 </body>
</html>

访问结果:弹窗(此语句在前端执行)

 

3、当传输参数时没有任何过滤,并且参数还能返回到页面,此时可注入js代码

*网站链接注入代码,也可弹窗

获取cookie值:扩展——搜索:安装插件cookie Editor(可看到当前页cookie信息)

(cookie插件)

(cookie信息)

或者链接获取cookie信息:

http://127.0.0.1/1.php?k=<script>alert(document.cookie)</script>

 


 

XSS跨站脚本攻击过程:

1、恶意攻击者通过Email或HITP将构造好的URL发送给普通用户

2、普通用户在浏览器中浏览该URL

3、汶览器执行脚本后,返回数据

4、在普通用户毫不知情的情况下,脚本将其cookie等信息发送给攻击者

5、攻击者使用盗取来的cookie等敏感信息用来伪造用户

 

恶意脚本形式:

1、利用XSS弹警告窗:

<script>alert('XSS!')</script>

2、嵌入其他网站:

<iframe src=http://www.163.com width=1000 height=1000></iframe>

3、获取cookie值:

<script>alert(document.cookie)</script>

4、XSS输入也可能是HTML代码段,如使网页不停刷新:

<meta http-equiv='refresh' content="1;">

 

XSS的危害:

  • 网络钓鱼,包括盗取各类用户账号
  • 窃取用户cookie资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作
  • 劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账,强制发表日志,发送电子邮件强制弹出广告页面,刷流量等
  • 浏览器挖矿
  • 网页挂马
  • 进行恶意操作,例如篡改页面信息,删除文章等
  • 进行大量客户端攻击,如DDOS攻击
  • 获取客户端信息,如用户浏览历史,真实IP,开放端口等控制受害者及其向其他网站发起攻击
  • 结合其他漏洞进一步扩大攻击
  • 传播XSS跨站脚本蠕虫等
  • ......

隐藏的危害:通过网上的 “短链接生成” 等工具将恶意代码藏到短链接,或者生成二维码

 

常见的三种攻击类型:

1、反射型(非持久性):
  一般来说这种类型的XSS,需要攻击者提前构造一个恶意链接,来诱使客户点击,比如这样的一段链接: www.abc.com/?params= <script>alert(/xss/)</script>。

2、存储型(持久型):
  这种类型的XSS,危害比前一种大得多。比如一个攻击者在论坛的楼层中包含了一段JavaScript代码,并且服务器没有正确进行过滤输出,那就会造成浏览这个页面的用户执行这段JavaScript代码。


3、DOM-XSS:
  DOM—based XSS漏洞是基于文档对象模型Document Object Model,DOM)的一种漏洞。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM—basedXSS漏洞。

  

  利用代码注入的方法,造成浏览器执行了恶意代码,XSS漏洞是借助服务器漏洞对用户浏览器进行攻击的—种方法;不同浏览器呈现的结果不一样。

  形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。

因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
  输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
  输出转义:根据输出点的位置对输出到前端的内容进行适当转义。

 


 

pikachu平台测试:

1、反射型(get)

若显示不全,可将字符限制“20”改为“50”,即可解决

访问链接结果:

 

burpsuite抓包分析:

 1  1 GET /pikachu/vul/xss/xss_reflected_get.php?message=
 2   %3Cscript%3Ealert%28%27XSS%EF%BC%81%27&submit=submit HTTP/1.1
 3  2 Host: 127.0.0.1
 4  3 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
 5  4 Accept: */*
 6  5 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
 7  6 Accept-Encoding: gzip, deflate
 8  7 Connection: close
 9  8 Sec-Fetch-Dest: empty
10  9 Sec-Fetch-Mode: no-cors
11 10 Sec-Fetch-Site: same-origin

对应代码:(位置:根据网址找到对应路径下的文本文件)

 1 <?php
 2 /**
 3  * Created by runner.han
 4  * There is nothing new under the sun
 5  */
 6 
 7 
 8 $SELF_PAGE = substr($_SERVER['PHP_SELF'],strrpos($_SERVER['PHP_SELF'],'/')+1);
 9 
10 if ($SELF_PAGE = "xss_reflected_get.php"){
11     $ACTIVE = array('','','','','','','','active open','','active','','','','','','','','','',
12   '','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',
13   '','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',
14   '','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',
15   '','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',
16   '','','','','');
17 
18 }
19 
20 $PIKA_ROOT_DIR =  "../../";
21 include_once $PIKA_ROOT_DIR.'header.php';
22 
23 
24 $html='';
25 if(isset($_GET['submit'])){
26     if(empty($_GET['message'])){
27         $html.="<p class='notice'>输入'kobe'试试-_-</p>";
28     }else{
29         if($_GET['message']=='kobe'){
30             $html.="<p class='notice'>愿你和{$_GET['message']}一样,永远年轻,永远热血沸腾!</p>
31             <img src='{$PIKA_ROOT_DIR}assets/images/nbaplayer/kobe.png' />";
32         }else{
33             $html.="<p class='notice'>who is {$_GET['message']},i don't care!</p>";
34         }
35     }
36 }
37 ?>

 

 2、反射型(post)

   若忘记登录密码:查看他的数据库——小皮

(点击管理——>打开)

 

(百度搜索此值,即可获得密码)

登陆后返回页面结果:

访问后出现弹窗表示成功;抓包制作发送页(post)

制作单独跳转页:

复制链接并访问(在代理环境下)

  点击后又弹出弹窗。

 

3、存储型XSS

输入字符串并加入干扰项元素123:

出现弹窗并存储干扰项123:

(并且再次访问此链接还会出现弹窗)

分析源码:高危风险

1 $link=connect();
2 $html='';
3 if(array_key_exists("message",$_POST) && $_POST['message']!=null){    //校验POST中是否有“massage”键值
4     $message=escape($link, $_POST['message']);
5     $query="insert into message(content,time) values('$message',now())";  //将massage值写入数据库
6     $result=execute($link, $query);
7     if(mysqli_affected_rows($link)!=1){
8         $html.="<p>数据库出现异常,提交失败!</p>";

 

 4、DOM型XSS

 输入语句:aaa'onclick="alert('xss')"

并点击,出现弹窗;点击确定跳转到一个不存在的页面。

出现一个情况:在此操作期间并没有抓到包,直到跳转到其他页面才抓到包。

解释:因为在输入语句进行传参的时候并没有给到服务器,查看源码发现造成此原因是因为DOM型默认有此语句,所以在前端就已经校验 

源码分析: 

1 <script>
2         function domxss(){
3           var str = document.getElementById("text").value;    //从前端直接获取
4           document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
        //"<a href='aaa'onclick="alert('xss')"'>>what do you see?</a>" —— 拼凑 触发原理
5 </script>

 当输入语句:<a href='aaa'onclick="alert('xss')"'>点这里~</a><a style="display:none出现:

 

 5、DOM型XSS-X

(1)输入脚本语句 '><img src="#" onm ouseover="alert('xss')">

(2)构造语句 '><img src="a" one rror="alert('xss')">   ——  (会直接弹出告警)

第一种情况的运行结果: 

代码分析:

<script>
     function domxss(){
         var str = window.location.search;
         var txss = decodeURIComponent(str.split("text=")[1]);
         var xss = txss.replace(/\+/g,' ');
//          alert(xss);

         document.getElementById("dom").innerHTML = "<a href=' '><img src="#" onm ouseover="alert('xss')"></a><a'>就让往事都随风,都随风吧</a>";
         }                                                          // 引入一个图片“#”,当鼠标划过的时候告警
         //试试:'><img src="#" onm ouseover="alert('xss')">
         //试试:' onclick="alert('xss')">,闭合掉就行
</script>

 

 

结束。

标签:XSS,跨站,DOM,alert,cookie,皮卡丘,message,页面
From: https://www.cnblogs.com/dudu-/p/16723494.html

相关文章

  • 针对CS最新XSS漏洞的详细研究--CVE-2022-39197
    针对CS最新XSS漏洞的详细研究--CVE-2022-39197本公众号技术文章仅供参考,未经允许,禁止转载!(某些逗比运营就别污染安全圈环境了)文章仅用于学习交流,请勿利用文章中的技术对......
  • 从0开始挖洞:XSS跨站脚本攻击
    一、XSS简介XSS(CrossSiteScripting跨站脚本攻击),指恶意攻击者通过向网站插入恶意payload或恶意脚本,从而盗取cookie、session信息以利用用户身份进行违规操作、盗取用户......
  • javascript 过滤字符串中script并且替换掉 xss注入攻击+js调试
    最近发现网上找答案也是80%类似结果。js调试可以在浏览器里,f10,f11可以比较准确。functionscriptReplace(str){if(newRegExp(".*?script[^>]*?.*?(<\/.*?sc......
  • 对表白墙wxss的解释
    一、index.wxss1/*信息*/2.Xinxi{3display:flex;4flex-wrap:wrap;5margin:0rpx1%;6}789/*信息列表*/10......
  • [第二章 web进阶]XSS闯关-1
    定义:跨站脚本(Cross_SiteScripting,简称为XSS或跨站脚本或跨站脚本攻击)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。它允许恶意用户将代码注入网页,其他......
  • CORS、XSS 概念
    CORS介绍跨域资源共享Cross-OriginResourceSharing,CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,整个CORS通信过程,都是浏览器自动完成,不需要用户参......
  • CSRF跨站点请求伪造(Cross Site Request Forgery)攻击
    CSRF跨站点请求伪造(CrossSiteRequestForgery)和XSS攻击一样,有巨大的危害性,就是攻击者盗用了用户的身份,以用户的身份发送恶意请求,但是对服务器来说这个请求是合理的,这样就......
  • 可别小看了XSS漏洞
    可别小看了XSS漏洞​ 对于初了解xss漏洞的人来说,XSS漏洞的危害就是获取受害者的cookie,来进行‘cookie劫持’。​ 今天就总结一下XSS漏洞的危害性,望安全人员不要轻视,开发......
  • XSS漏洞
    (备注:以下为个人学习笔记)一、什么是XSS答:XSS(crosssitescript)或者说跨站脚本是一种Web应用程序的漏洞,恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之......
  • XSS (跨站脚本攻击) 漏洞
    《WEB常见漏洞之XSS漏洞研判解析》网络空间安全论文题目:XSS攻击手法解析上课时间:8.24授课教师:蔡徐坤姓名:芸学号:20210329......