后台getshell~ 'pc_version' => 'V9.5.5', //phpcms 版本号 'pc_release' => '20140430', //phpcms 更新日期 PHPCMS后台能够自定义url规则: ![]() 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重写规则: |
-
上一篇: 易酷cms本地包含导致getwebshell(ThinkPHP) - 网站安全
下一篇: 新方法Xss代码绕过安全狗 - 网站安全 - 自学php
还没有人抢沙发呢~