继上篇应急处理后记。
上次经过排查黑客通过前端upload接口传马后,在框架文件中埋下后门,替换最新框架以及检查前后端控制器后,本以为已经完全封锁了攻击入口,但是态势感知新的告警接踵而至。
收到最新告警:发现安全事件“站点根目录public下出现名为1ndex.php的木马文件”
再次出现问题是在24号,同事告警的文件包括网站缓存日志24.log,在这其中发现一个关键的线索,log里面的木马内容经过base64解码后的内容和1ndex.php的内容完全一致
这个日志是请求后台控制器的index方法,但是随即在index方法中并没有找到接受POST数据的参数reff。这就非常奇怪了,没有接受参数的变量,这串值怎么可以传入呢?而名叫reff的变量又是从哪里来的?定位木马文件第一次web访问的时间点日志,观察前后日志,并未发现任何有上传的接口,既然木马不是上传上来的,上次也把框架换了,那木马为何再次出现?
既然暂时没有任何头绪,看日志也发现不了异常点,就先去检查防火墙。为什么此次入侵防火墙没有将此流量阻断,原来是没有在安全组设置防火墙源站保护(将所有访问流量限制必须通过防火墙,其他来源流量全部禁止)。配好防火墙规则后,依旧还是要面对老问题,继续检查日志。
随即有了新发现
在木马出现时间点,除了请求index方法外,也受到了此攻击ip请求render方法的报文,这个render方法是通过接收传入后台html页面的名字来起到渲染后台界面的作用,后面return数据是传入框架方法fetch后处理的值。
但是,此post报文很奇怪,虽然是post数据,但是在日志中并未发现传入的template键值对(后面在测试站点测试发现,正常的是有传入值的,正是站点是黑客进攻后专门把这个抹除了,导致攻击入口找得非常困难)
这个方法受到攻击是因为传入了“包含木马信息的log文件绝对路径”,template接收后,导致的文件包含执行其中的php代码,从而生成的木马
此测试成功在站点public目录生成指定文件ppp.txt。
至此,找到了攻击的入口,接下来的问题就是如何修复,修复中也是由于过滤方案没有针对性而一波三折。
修复过程
既然黑客传入的template的值为log,那就直接在fetch方法中匹配log,如成功,则返回空,不继续执行,即无法包含成功。
随即测试发现,如果不是利用log来包含呢?回不回再次出现此包含成功的问题呢?测试发现,图片包含可以做到。
这里上传木片马,通过代理拦截请求后,加入GIF89a图片特征,发现成功上传图片,通过返回图片的路径。
随后再次请求render方法,将图片的相对路径传入template变量
发现再次成功包含,将jpg文件当成脚本文件php执行了,站点public目录成功生成jpg木马测试文件111.txt
所以发现,光是过滤log是不可行,避免不了图片包含
随即研究正常传入template的值到底是什么,总结发现,正常的传入值是不带文件后缀的,即不能有“.”这个字符。所以采取过滤“.”的方案,带点即返回空不继续执行
至此成功溯源此次“文件包含导致的传马”安全事件。
欢迎关注“浅渊安全”公众号,一同交流学习!
相关推荐: xStream 远程代码执行高危漏洞复现(CVE-2021-29505)
0x01 漏洞介绍xStream是一个Java对象和XML相互转换的工具,很好很强大。提供了所有的基础类型、数组、集合等类型直接转换的支持。因此XML常用于数据交换、对象序列化(这种序列化和Java对象的序列化技术有着本质的区别)xStream存在…
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论