漏洞修复 pages.lbi.php Xss漏洞的修复"/>
关于Ecshop 各种漏洞修复 pages.lbi.php Xss漏洞的修复
1:关于Ecshop pages.lbi.php Xss漏洞的修复
直接访问temp/compiled/pages.lbi.php时,浏览源文件,会发现如下代码:
<form name="selectPageForm" action="temp/compiled/pages.lbi.php" method="get">
显然这个form是不完全的。当构造这样的url访问时,会造成在客户端执行代码:
temp/compiled/pages.lbi.php/"</form><sCripT>alert(/cfreer/)</scRipt>
很显然,这个漏洞的原理就是闭合了这个form再在客户端执行javascript.
然后分析出现不闭合form的原因,打开page.lbi.php文件,可以看到如下代码
<form name="selectPageForm" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
<?php if ($this->_var['pager']['styleid'] == 0): ?>
这里执行$this的时候就出现错误了,因为没有进行template的初始化。
既然找到原因了,下面给出解决办法:
打开page.lbi文件,在第二行插入如下代码:
<?php
if (!defined('IN_ECS'))
{die('Hacking attempt');
}
?>
完整代码:
<?php
if (!defined('IN_ECS'))
{die('Hacking attempt');//<form name="selectPageForm" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">}
?><?php if ($this->_var['pager']['styleid'] == 0): ?><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get"><?php if (!defined('IN_ECS'))
{die('Hacking attempt');
}if ($this->_var['pager']['styleid'] == 0): ?>
二:Ecshop version XSS漏洞
$version
临时解决方案:
把admin/receive.php文件中的(约21行)
$version=$_GET['version'];
改为
$version=htmlspecialchars($_GET['version']);
三:用户界面漏洞,借助360
if(is_file($_SERVER['DOCUMENT_ROOT'].'/360safe/360webscan.php')){
require_once($_SERVER['DOCUMENT_ROOT'].'/360safe/360webscan.php');
} // 注意文件路径
代码加到:ECshop: \data\config.php
ectouch防止修改:
<?php
chmod
(
'test.php'
,0444);
// 修改为只读
file_put_contents
(
'test.php'
,
'123456'
, true);
// 写入数据,会提示失败
?>
备注:
模式 | 字符表示 | 说明 |
---|---|---|
0477 | -r--rwxrwx | 所有者仅可读(4),其他及组可读写执行(7) |
0677 | -rw-rwxrwx | 所有者仅可读写(6),其他及组可读写执行(7) |
0444 | -r--r--r-- | 所有均仅可读(4) |
0666 | -rw-rw-rw- | 所有均仅可读写(6) |
0400 | -r-------- | 所有者仅可读(4),组及其他无任何权限(0) |
0600 | -rw------- | 所有者仅可读写(6),组及其他无任何权限(0) |
0470 | -r--rwx--- | 所有者仅可读,组可读写执行,其他则无任何权限 |
0407 | -r-----rwx | 所有者仅可读,其他可读写执行,组则无任何权限 |
0670 | -rw-rwx--- | 所有者仅可读写,组可读写执行,其他则无任何权限 |
0607 | -rw----rwx | 所有者仅可读写,其他可读写执行,组则无任何权限 |
更多推荐
关于Ecshop 各种漏洞修复 pages.lbi.php Xss漏洞的修复
发布评论