拿WebShell 方法总结


当你的才华

还撑不起你的野心时

那你就应该静下心来学习


目录

拿WebShell 方法

拿WebShell 的两种类型

管理权限拿WebShell 常见的方法归纳为14种:

普通权限拿WebShell 常见的方法归纳为7种:


 

拿WebShell 方法

拿WebShell 的两种类型

      • 管理权限拿WebShell (可以理解为进后台拿WebShell)

      • 普通权限拿WebShell(可以理解为不进后台拿WebShell)

下面附一张拿WebShell的思维导图,图如下:

 

管理权限拿WebShell 常见的方法归纳为14种:

1、正常上传

      •  网站对上传文件后缀格式并未过滤,直接上传WebShell即可

          大概思路是,已知后台管理员账号和密码,找有上传节点的地方,写一个隐蔽或变形的木马上传,上传成功后,用菜刀或蚁剑连接。

          注:为什么要写一个隐蔽或变形的木马呢?因为如果你用的常见的木马,只要一上传就会被管理员或WAF发现(常见的木马WAF都是有收集的,所以可以写完木马之后用D盾检查一下,被WAF检测出来的危险等级是多少)

2、数据库备份拿WebShell

网站对上传的文件后缀进行过滤,不允许上传脚本类型文件如 asp、php、jsp、aspx等。而网站具有数据库备份功能,这时我们就可以将WebShell格式先改为允许上传的文件格式,然后,我们找到上传后的文件路径,通过数据库备份,将文件备份为脚本格式。

注:

     1)有些备份数据库的地方,限制了用户更改路径,那该怎么办?

          F12打开开发者工具,修改文本框元素的value值为我们想要的路径或格式就可以完成修改

     2)如果上传的格式被限制呢?该怎么办?

          可以使用%00截断来绕过上传限制或使用BurpSuite 工具(%00截断、特殊名文件名绕过、文件名大小写绕过等等黑白名单绕过,在此就不细诉了,不太明白的可以前往CE写的Web漏洞知识篇)

          链接如下:

                          https://blog.csdn.net/god_xiangyu/article/category/9165924

                          https://blog.csdn.net/god_xiangyu/article/category/9197218

3、本地js验证突破拿WebShell

      当网站设置了js来限制用户上传的文件类型时,可以通过删除js验证或者修改上传类型突破上传拿WebShell。

      使用BurpSuite 或者是 Fiddle等代理工具提交,本地文件先更改为jpg,上传时拦截,再把文件扩展名更改为asp或者php即可

4、上传其它脚本类型拿WebShell

      1)此类型用于一台服务器具有多个网站,a网站是asp的站,b可能是php的站,而a站中限制了上传文件类型为asp的文件,你可以尝试上传php的脚本,来拿Shell

      2)你也可以尝试将脚本文件后缀名改为asa 或者在后面直接加个点(.)如"xx.asp." 来突破文件类型限制进行上传拿WebShell

5、%00截断拿WebShell

      1)在上传文件的时候,你上传的文件名可能会被网站自动改成别的名字,这个时候你可以尝试抓取上传文件数据包,将文件名改为xx.asp%00.jpg进行截断上传,拿WebShell

附上一个ms08067实验室搭建的线上DVWA靶场

  • 地址:http://43.247.91.228:81
  • 账号:admin
  • 密码:password

6、利用解析漏洞拿WebShell

      1)IIS5.x / 6.0 解析漏洞

      2)IIS 7.0 / IIS 7.5 / Nginx <8.03 畸形解析漏洞

      3)Nginx < 8.03 空字节代码执行漏洞

      4)Apache 解析漏洞

7、利用编辑器漏洞拿WebShell

      利用网站的编辑器上传木马,搜索已知的编辑器漏洞,常见的编辑器有 fckeditor、ewebeditor、cheditor等,有时候没有管理员权限也可以拿下webshell。

8、网站配置插马拿WebShell

      通过找到网站默认配置,将一句话插入到网站配置中,不过为了能够成功执行插马,建议先下载该站源码,进行查看源码过滤规则,以防插马失败。

PS:插马失败很有可能会导致网站被你写的一句话木马,没有闭合标签导致被网站被插废。

  "%><%eval request("cracer")%><%'
 
 
   
   
   
   

注意:我这里构造的是下载了程序的源码,然后在config.asp文件里的代码来修改的。不同的版本的网站源码都不一样,实际问题实际分析,在此就不做多的解释了。这里最后的单引号(')是注释当前行后面所有的内容

9、通过编辑模块拿WebShell

      1)通过对网站的模块进行编辑写入一句话,然后生成脚本文件拿WebShell

      2)通过将木马添加到压缩文件,把名字改为网站模板类型,上传到网站服务器,拿WebShell

10、修改脚本直接拿WebShell

      有的网站可以修改添加脚本文件,可以直接拿WebShell

注:织梦的后台,大家可以下个织梦后台网站源码,复现一下

11、数据库命令执行拿WebShell

      可以通过phpmyadmin 登录数据库使用数据库命令来写如一句话拿WebShell

大致步骤:

  1. 创建表
  2. 将一句话写入刚创建的表中
  3. 查询一句话所在表到文件,成功将一句话写入文件

注:这个前提条件是需要有一定的数据库权限

12、上传特殊木马拿WebShell

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

13、文件包含拿WebShell

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

      ASP 包含:


 
 
   
   
   
   
  1. 1.
  2. 2. 调用的文件必须和被调用文件在同一目录,否则找不到
  3. 3. 如果不在同一目录,用下面的语句:
  4.    

     PHP 包含:


 
 
   
   
   
   
  1.     include( '1.jpg');
  2. ?>

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

解决发现大马上传不了,被防火墙或者安全狗拦截时,可以考虑使用包含文件

思路如下:

          1)先上传一个含有包含代码(如)却没有攻击代码的文件,不会被狗拦
          2)再将大马改成jpg图片文件上传,也不会被狗拦
          3)访问第一次上传的包含函数的文件,会发现执行了木马
          4)这里是因为包含函数包含的文件会被当成脚本文件,直接将文件内容插入到这个文件中

          这是因为包含函数包含的文件会被当成脚本文件,直接将文件内容插入到这个文件中

14、另类拿WebShell

      1)更新页面拿Shell

           在网站模板中的404页面中插入一句话木马,之后找到这个页面的绝对路径,访问之即可拿Shell

      2)上传插件拿Shell

            将木马放入zip压缩文件中,最好是网站插件的压缩文件,之后再后台安装插件,选中含有木马的压缩文件,会自动将插件连通木马安装在网站目录下,接下来我们只需要寻找到木马的绝对路径即可

      3)上传特殊马拿WebShell

      4)还有一种就是我们之前说那种通过上传一些免杀马,变形木马来进行突破封杀

 

普通权限拿WebShell 常见的方法归纳为7种:

普通权限拿WebShell 是啥鬼?

      可以理解为不进后台拿WebShell

常见方法归纳为六种:

1、0day 拿WebShell

      网上有很多理论知识,自己搜索CMS是discz的相关oday,看看能不能复现

2、修改网站上传类型配置来拿WebShell

      某些网站,在网站上传类型中限制了上传脚本类型文件,我们可以去添加上传文件类型如添加asp | php | jsp | aspx | asa 后缀名来拿WebShell

3、xss和sql注入联合利用

有些输入框对一些符号过滤不严密(如<>,所以一般存在xss的地方就可以这么利用)我们可以在这里输入一句话'CE']);?>之后再用数据库注入,查询到文件into file成功插入一句话木马

4、IIS写权限拿WebShell

      有些网站的管理员在配置网站权限的时候疏忽,导致我们有写权限,这种漏洞需要用工具来利用,在这里就不说了,只是提一下。而且已经很少见了,有专门的利用工具(桂林老兵),原理是通过找到有IIS 写入权限的网站(开启WebDeV),PUT进去一个.txt 格式的文件,目录必须有刻写的权限,如 image 文件夹,然后通过move 方法,把txt 格式的木马用move 成脚本格式。

     

      例如:一开始上传的是test.txt    move 成 test1.asp

5、远程命令执行拿WebShell

      命令执行?就是说可以通过执行一些系统命令进行拿WebShell

      执行命令行命令“写入内容到文件"echo ?php "@eval($_POST['CE']);?>" > x.php 会自动将创建木马文件并将一句话木马写入其中,使用菜刀连接即可。

6、头像上传拿WebShell

      头像上传拿WebShell?就是用户注册后有些网站可以上传图片、附件、文件、压缩包等,可以利用上传拿WebShell

大概思路:

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

7、SQL注入漏洞拿WebShell

      1)前提条件,具有足够权限,对写入木马的文件夹有写入权限,知道网站绝对路径

      2)对于MsSQL 注入漏洞网站可以通过log 备份、差异备份拿WebShell

      3)对于MySQL 注入漏洞的网站可以通过into outfile 函数(写入函数)将一句话木马写入,拿WebShell。 还有一个是into file 函数(读取函数)


 
 
   
   
   
   
  1. 1. 要有file_priv权限
  2. 2. 知道文件绝对路径
  3. 3. 能使用union
  4. 4. 对web目录有读权限
  5. 注:若过滤了单引号,则可以将函数中的字符进行 hex编码
  6. # into outfile 函数类似

      4)利用phpmyadmin 将木马导出,拿WebShell

      5)利用连接拿WebShell

什么是外连接?

     数据库有内连接、外连接来组合条件适用,外连接分为左连接和右连接。这里我们可以使用外连接来获取WebShell

内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。

外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。

1、内连接

      内连接,即最常见的等值连接

例:

           SELECT * FROM TESTA,TESTBWHERE TESTA.A=TESTB.A

结果:

A B A B
001 11A 001 11B

 

2、外连接

      外连接分为左外连接,右外连接和全外连接。

      左外连接 left outer join 或者 left join

      左外连接就是在等值连接的基础上加上主表中的未匹配数据

例:

           SELECT *FROM TESTA LEFT OUTER JOIN TESTB ON TESTA.A=TESTB.A

结果:

A B A B
001 11A 001 11B
002 10B    

 

拓展内容:

     全外连接 full outer join 或者 full join

     全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上。

例:

           SELECT * FROM TESTA FULL OUTER JOIN TESTBON TESTA.A=TESTB.A

结果:

A B A B
001 11A 001 11B
002 20A    
    003 30B

外连接内容参考链接:https://zhidao.baidu.com/question/338244729.html

大概思路:

  1. 创建表
  2. 将一句话写入刚创建的表中
  3. 查询一句话所在表到文件,成功将一句话写入文件
  4. 导出木马到某个路径下
  5. 删除刚刚创建的表(这一步是为了清楚痕迹,在一定程度上可以预防我们被管理员发现)

我不需要自由,只想背着她的梦

一步步向前走,她给的永远不重


 

你可能感兴趣的:(拿WebShell 方法总结)