PHP挖洞详细分析 |

  • A+
所属分类:Seay信息安全博客

显示不全请点击全屏阅读

研究一套cms 3天了,自己没挖到什么可以直接利用的漏洞,都是一些比较鸡肋的,可能是自己的水平太菜了。不过我把整个挖洞过程中记录下来,供大家参考。如果有什么不对的,或者是有什么好的建议的,请加QQ群62512676 一起来讨论学习

 

0x1

这套cms我是从站长网,随便下的,所以下下来就搭建起来看代码了,

PHP挖洞详细分析 |

这是最新版本的,我也不知道有没有前辈挖过,所以就开始动工了。

首先开始从首页开始读代码,

PHP挖洞详细分析 |

将其中的几个包含文件打开,依次打开包含文件里面另外包含的地方

首先他定义的是一些常量,所以这些不用管 ,接下来就是包含了, 第一个包含了 common.inc.php

我们看看common.inc.php吧

其他不重要的代码我就略过了,我就分析一下重点的代码位置

d

看到这里的foreach循环没? 这里就存在一个变量覆盖的问题,变量覆盖的话,如果能利用的话,是很有用的,说不定就直接getshell呢?

所以这里的代码等得仔细研究研究。。。

接下来还是一些文件

/引入配置文件

require_once(WEB_INC.’/config.inc.php’);

//引入数据库类

require_once(WEB_INC.’/db.class.php’);

//常用函数

require_once(WEB_INC.’/function.inc.php’);

//基础model函数

require_once(WEB_INC.’/model.class.php’);

/*Session保存路径

$sessionPath = WEB_ROOT.”/data/session”;

if(is_writeable($sessionPath) && is_readable($sessionPath))

{

session_save_path($sessionPath);

}

*/

//session language

session_start();

header(“Content-type: text/html; charset=utf-8″);

//确认正确安装然后连接数据库

$install_check = ”;

/*

echo $db_type.'<br/>’;

echo $host.'<br/>’;

echo $name.'<br/>’;

echo $pass.'<br/>’;

echo $table.'<br/>’;

echo $ut.'<br/>’;

*/

if(file_exists(WEB_DATA.’install.lock’)) {

$db=new DB($db_type,$host,$name,$pass,$table,$ut);

} else {

$install_check = ‘Not installed’;

if(WEB_APP != ‘install’){

echo $install_check;

exit;

}

包含了一些数据库的配置文件,以及一些类,以及功能函数

所以这里是略过了,没有什么安全隐患

接下来就是第二个主页的包含文件了

PHP挖洞详细分析 |

Forbiddenip.inc.php了

这里是一个禁止IP的

PHP挖洞详细分析 |

也没问题

接下来是include(WEB_INC.’close.inc.php’);

这个文件是控制这个网站的开启和关闭的

这里

PHP挖洞详细分析 |

看到没?这里存在安全隐患,我想大家一定会说,这里哪里有安全隐患呢???

大家请仔细想一想,如果这里的$sys[‘isclose’]=1之后,他是打印出$sys[‘closeinfo’]这个数组变量吧! 如果这里的数组变量可控的话,我们就有机会了

我就举实例吧

这里的$sys再这个文件中下

PHP挖洞详细分析 |

这里的$sys[‘closeinfo’] 是由后台控制的,如果我们对其修改,然后我就可以拿到webshell了

PHP挖洞详细分析 |

然后sys.inc.php就变成了

PHP挖洞详细分析 |

PHP挖洞详细分析 |

所以大家看到了,这里他是悲剧了,所以只要进后台了。。。这个站就直接取webshell了。这是漏洞一了

0x2

接下来就是最后一个首页包含文件了

include(WEB_INC.’rootstart.inc.php’);

PHP挖洞详细分析 |

我就详细分析下吧

这里的变量 a 和 c的话,如果不存在就直接用之前定义好的赋值 ,

这里也存在个包含的漏洞的

所以这里的$a 和 $c 都是可控的

接下来是in_array()这个函数了,他是从数组里面对其进行比较

这里的$controllerName 就是$c 了,而 $config[‘modtype’]的是之前被定义好的,所以这里的$c也就被控制死在这个$config[‘modtype’]里面了,

所以$a

PHP挖洞详细分析 |

如果存在$filepath这个文件,就包含它,这里的$filepath的$action 是可以控制的,可以由用户控制

所以这里我们可以构造成这样子包含

PHP挖洞详细分析 |

也截断了,这种情况是gpc关的,不过也可以再开的时候才用./来突破来包含,win下256,

*nix下4000多吧,具体我也忘记了。

所以这也算是一个安全隐患吧!

0x3

接下来包含的是 PHP挖洞详细分析 |

默认包含的是includecontroller 下的

PHP挖洞详细分析 |

PHP挖洞详细分析 |

这里的一些文件是实例化一些类

然后,妈妈的,大家看

PHP挖洞详细分析 |

这里的一个intval函数就把我们堵死了,所以如果想通过这2个参数去注入是不可能了。。。。

接下来的是对$a 进行switch判断

PHP挖洞详细分析 |

首先默认的是list

这里的进入数据库查询的有

$where

PHP挖洞详细分析 |

我们跟进一下这个$db-execute()看看先

这个在db.class.php这个数据库类当中

PHP挖洞详细分析 |

大家看他写的方法

PHP挖洞详细分析 |

PHP挖洞详细分析 |

接下来这个safesql就是处理我们sql语句了,妈的,我觉得他这里处理的有点类似于dedecms的

PHP挖洞详细分析 |

PHP挖洞详细分析 |

这个功能方法很强大,可以对付很多黑客的…. (嘿嘿)

大家可以仔细研究研究,我刚刚也试了试,还是可以的….如果以后大家的站,也可以加上以上的一些方法来搞了

不过他这里还是有一定的问题的,例如末尾

PHP挖洞详细分析 |

他将一些错误信息写进去,由于这里是不能进行报错处理(哎,我也说不清了,自己看看代码这里你就清楚了),

所以我们可以直接构造一个$log_file的变量为php,然后将一些错误信息进行触发该漏洞,将我们的恶意代码写进去

PHP挖洞详细分析 |

这就是触发之后的文件….所以同样可以。。。。

但是前提是能进行变量覆盖。。。。。

接下来是show 了

PHP挖洞详细分析 |

这里的关键变量也是做了处理的,所以你想注入的话,哥,不太现实了。。。。

中间我就省略很多过程不去分析了,所以前台我就分析道这了

接下来就是后台分析了

0x4

后台差不多。。。

我就讲一下变量覆盖吧

这是后台的

PHP挖洞详细分析 |

这里我想了想,这里的变量如果代码只要稍微改改,我们就可以绕过网站数据库登陆后台的,

其实说的也就是变量覆盖了,这里只要这里将common.inc.php中的一个

PHP挖洞详细分析 |

提到最顶上,我们就可以进行变量覆盖了

这个漏洞呢,大家百度吧,我只演示过程

将这里的变量覆盖就ok了

PHP挖洞详细分析 |

PHP挖洞详细分析 |

这里需要的是我们重新搭建个数据库。。。然后我们就可以利用了

现在直接登录后台

PHP挖洞详细分析 |

PHP挖洞详细分析 |

这样子就完了,所以。。。。。

整体而已,我研究这套cms3天了,自己技术很菜….发现不了什么比较大的0day,但是也发现一些小问题,从该套cms看的出来,他们程序员对注入这块还是下了功夫的,呵呵

我发出来只是一个学习的过程,文中难免有一些不足的地方,希望大牛能指点,让我们小菜更加努力学习。。。。

如果有兴趣研究0day的,可以加我们的群 62512676 一起发现0day,一起公布0day,要学习的一起来

现在是凌晨3点多了,各位,如果看了该文,不在论坛回复的,m鸡鸡啊 (嘿嘿)m鸡鸡啊m鸡鸡啊m鸡鸡啊m鸡鸡啊m鸡鸡啊m鸡鸡啊…………………………

哈哈.。。。。各位尽量还是给出点意见吧,大家一起学习

文 :西毒

Tags:

挖洞分析,

如果您喜欢我的博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容: 也可以点击链接【订阅到鲜果】

如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡
PHP挖洞详细分析 |