getshell.php,PHPCMS后台Getshell

后台getshell~

'pc_version' => 'V9.5.5',//phpcms 版本号

'pc_release' => '20140430',//phpcms 更新日期

PHPCMS后台能够自定义url规则:

imgpxy.php?url=gpj.549711029151604102%2F6041_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

其中可以定义是否生成静态文件。生成静态文件这一块,如果处理不好后缀,经常容易直接getshell。那么我们看看phpcms是怎么处理这个url重写的。

/phpcms/modules/admin/urlrule.php第46行:

function edit() {

if(isset($_POST['dosubmit'])) {

$urlruleid = intval($_POST['urlruleid']);

$_POST['info']['urlrule'] = rtrim(trim($_POST['info']['urlrule']),'.php');

$this->db->update($_POST['info'],array('urlruleid'=>$urlruleid));

$this->public_cache_urlrule();

showmessage(L('update_success'),'','','edit');

} else {

$show_validator = $show_header = '';

$urlruleid = $_GET['urlruleid'];

$r = $this->db->get_one(array('urlruleid'=>$urlruleid));

extract($r);

$modules_arr = $this->module_db->select('','module,name');

$modules = array();

foreach ($modules_arr as $r) {

$modules[$r['module']] = $r['name'];

}

include $this->admin_tpl('urlrule_edit');

}

}

这是修改规则的函数。其中关键地方是这句话:

$_POST['info']['urlrule'] = rtrim(trim($_POST['info']['urlrule']),'.php');

先使用trim去除urlrule两边的空格,再调用rtrim去除urlrule两边的下列字符:“.php”,所以,如果我们的规则写的xxx.php,那么就会变成xxx。

值得注意的是,这里去除.php不只是去除.php,是去除“.php”这四个字符里面任意一个字符。也就是说,如果我写“.ppp”,或者“.php.”都是会被去除掉的。

不过这样真的万无一失了吗?很明显不能。

有以下利用方法:

1.xxx.php3或xxx.php4等后缀,也是会被很多服务器解析为php的。

2.如果我们输入“xxx.php .php”,是什么效果?最后一个.php会被清除掉,留下“.php ”。windows主机下有个特点,文件名后面多的空格是会被忽略的。这样我等于说最后生成静态文件的时候生成的是xxx.php。

3.IIS6下可以利用解析漏洞,后缀写为.php;.html即可

具体利用见漏洞证明。

测试环境:windows7 + apache + php5.4

1.登录后台,选一个内容模块(content,我选的倒数第二个),修改url重写规则:

imgpxy.php?url=gpj.905221029151604102%2F6041_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

url规则改成xxxx.php .php,是否生成静态那里选“是”。

点保存。

我们已经可以看到这里改好的url规则,后缀是.php :

imgpxy.php?url=gpj.700441029151604102%2F6041_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

2.然后来到内容 - 管理栏目,选择某个栏目,我选的“国内”,点修改:

imgpxy.php?url=gpj.696451029151604102%2F6041_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

如上图,在“生成HTML设置”里的“内容页URL规则”选择刚才修改的那个规则(这个content-1-2-1.html是事例,不是实际生成的文件名,不管它),然后把“内容页生成HTML”选择“是”。

3.先不提交,再来到SEO设置这里,把一句话写到title里:

imgpxy.php?url=gpj.085561029151604102%2F6041_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

然后提交。

4.如果“国内”这个栏目里没文章,去随便写一篇,如果有,这一步略过。

5.内容 - 发布管理 - 批量更新内容页,更新一下,生成静态页面。生成的静态页面就是你设置的规则规定的那个。我这里是content-6-7-1.php,6是分类id,7是文章id,1是页数。

访问可见phpinfo:

imgpxy.php?url=gpj.157571029151604102%2F6041_htnom%2Fserutcip%2Fmoc.gidkcah.1cip%2F%2F%3Aptth

修复方案:

如上传文件时那样检查后缀。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值