当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2013-046333

漏洞标题:汇文OPAC全版本通杀越权操作和存储xss

相关厂商:江苏汇文软件

漏洞作者: nauscript

提交时间:2013-12-18 12:35

修复时间:2014-03-18 12:35

公开时间:2014-03-18 12:35

漏洞类型:xss跨站脚本攻击

危害等级:高

自评Rank:15

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-12-18: 细节已通知厂商并且等待厂商处理中
2013-12-23: 厂商已经确认,细节仅向厂商公开
2013-12-26: 细节向第三方安全合作伙伴开放
2014-02-16: 细节向核心白帽子及相关领域专家公开
2014-02-26: 细节向普通白帽子公开
2014-03-08: 细节向实习白帽子公开
2014-03-18: 细节向公众公开

简要描述:

汇文OPAC全版本通杀越权操作和存储xss,算0day不?危害性并不大,只是可以影响到的用户很广泛,该图书馆web应用的普及程度让我惊讶(http://www.libsys.com.cn/userlist.php)

详细说明:

本来想留着再做进一步深入挖掘,可是今天居然看到一个“路人甲”发了汇文的盲注,那就先发了吧,此次测试v4.0版本测试对象为南京审计学院图书馆,v5.0版本为中国石油大学图书馆以及某学校v4.0的图书馆终端
首先是越权:
评论处:
1、删除任何人的评论(不需要登陆,游客身份也可以做到)
以下是用v4.0做的测试
http://网址/opac/book_review_del.php?marc_no=书籍编号&certId=证件号(一般为学号或者身份证号)
ps:什么?书籍的编号是打开图书的url后面的几个位数你知道,但不知道证件号怎么办!右键源码告诉你,证件编号统统泄露,而这个编号恰恰可以当做用户名登陆,而初始密码大都是学号或者身份证号的几位位数或者123456.屡试不爽全部版本都涉及到了对读者账号信息的泄露,甚至可以以此收集身份证号和学生证号,这个问题的发现源自在后台删除自己评论时发现了这个规律,只要将书籍号和证件号稍作修改就是了,其他版本也只需要在评论管理处查看以下功能连接,稍作修改就是了。

2、删除任何人的任意书架
只需要在我的书架管理处,在源码中找到“删除”按钮处,将代码改为你想要删除的书架的ID,然后按下删除按钮提交后,你要删除的书架以及里面的藏书全部荡然无存(这个有点损,在测试的时候失手删了一个学霸的书架“本学期要借的书”,里面足足放了104本书,我对不起他啊。。。)
还可以删除任意书架里的书
打开一个自己已经创建的书架,里面一定要有已经添加的一本书,然后再源码处将

delbook('书架号','书号')

改好后点击删除,想不让谁收藏这本书都可以
而每本书被哪个书架收藏了,早该书页面的右边栏也有显示,非常轻松,还可以用上面的方法继续查看书架属于哪个ID,这样平时谁看什么样的书这种隐私也会被泄露
书架功能只对4.0做了测试,因为大多数5.0都是近期才上线使用,而书架功能大都需要账号,所以无法测试到。
3、对书评的认可,无上限评论,刷爆你的认可度
直接附上代码,只需要在你想要刷认可的书籍页面地址栏放上这个代码,随便刷,无限制,也不需要登陆

v4.0代码(测试版本为v4.0普通版和v4.0工作组版)
javascript:_replyReview('书号','证件号','support'); 认可
javascript:_replyReview('书号','证件号','against'); 不认可
v5.0代码(测试版本为OPAC v5.0.1 )
javascript:_replyReview('书号','学号','评论时间','support'); 认可 (这里要注意的是增加的这个评论时间,我测试的这个评论的评论时间是这样的格式,'2011-12-08+22%3A08%3A09',后面的22%3A08%3A09只需要UrlEncode解码就可以得到22:08:09,当然你完全可以在评论者的名字旁边看到发布时间,只需要按照这个格式做一下UrlEncode编码即可,估计在v5.0的删除评论的功能上这个新添加的编码过的时间戳也被用到了)
javascript:_replyReview('书号','学号','评论时间','against'); 不认可


而这个问题的利用就在于当认可度被刷高后,该图书会被想应的放到推荐页面,会有更多的读者来访问,为后面的蠕虫传播做好准备。
4.0版本可以不停的执行,支持数也会很直接的跟随显示,v5.0也可以不停的执行,只是第一次执行后会显示“谢谢参与”,不过你执行几次后再刷新,评论处照样显示你刷票的增加次数
存储xss
这个是个小重点1、评论处没有任何的限制,放什么都可以,何况那些越权大都不需要登陆,暴漫帝小川哥哥说,越权加存储是最好滴搭档,结合前面的越权用存储来触发别人我的认可数,才一天多认可值就增加到了65
2、添加的书架类别名和说明出不论放<script>alert(1)</script>还是alert(1)都可以执行,而放上alert(document.cookie)就更奇葩了,你每刷新一下,就产生一个新的同名书架,而如上所说,你讲一本书收藏在一个书架中后,该书页面的右边栏会显示,那么每当有人打开这个书籍的页面时这个恶意的“书架名”脚本就会被触发,而被书架收藏多的书也会被推荐到首页的推荐图书中,这个脚本要先于评论处的脚本触发。
其实这个利用起来很方便,添加好xss代码后,只需要将书目塞满这个书架就好了,只要有人查看这个书目就会中招,因为在该书目页面的右边有一个“收藏该书的书架”会显示我的书架并触发,下图是我在图书馆的终端查看的,浏览便可触发

YP20131218113441.jpeg


YP20131218113515.jpeg


3、个人信息的地址栏处也可以存储你的xss code
4、个人觉得那个"添加外部RSS源"的功能很不好,完全也可以存储xss code ,当然对于不了解的东西不乱说,只是听说国外有人利用绕过安全限制重定向rss源来执行恶意脚本,但不明原理也不知真伪就不做讨论了

rss.jpg


另外因为我测试的账户权限很低,几乎等同于游客,只是可以发书评而已,权限较大的账户一但被破解,估计也可以利用相同的手法,仅仅只是修改图书的编码、证件号就可以做一些越权操作(仅仅只是推测),特别是一个读者荐购的功能,可以xss攻击,而欠款信息和欠书信息目测也可以越权添加和删除,因为测试账号没有权限,所以不做测试了。
当然还有一处很无聊的,总体评价处没有任何提交限制,那个对于书籍的评价只需要改改change_rating()中的数值,正负值都可以,舆论就任你指挥了,星星数会被修改,一但超过5图片就显示错误了,不过你还可以用负数减回来,这方面的修改可以借鉴豆瓣。

2121.jpg

漏洞证明:

v4.0测试页面:http://211.65.227.61:8010/opac/item.php?marc_no=0000207928
v5.0测试页面:http://lib2.cup.edu.cn/opac/item.php?marc_no=0000313671
另外还有工作组版等几个版本也做了测试,均可行,只是v5.0为最新版本,大都才刚刚使用,评论等很少,而且大都需要账号登陆,因此也给测试带来了限制
(除了不需要登陆的越权操作,审核MM如果需要账号登陆来验证上述问题的话我可以提供哈)

修复方案:

对提交要做限制和验证

版权声明:转载请注明来源 nauscript@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:13

确认时间:2013-12-23 08:34

厂商回复:

CNVD确认所述情况,该漏洞已经转报给教育网应急组织——上海交通大学网络信息中心,由其协调复现和处置

最新状态:

暂无