粉丝47.9万获赞239.1万

大家有没有常遇到这种情况,线上系统卡顿,数据库连接数打满,此时是急着扩容吗?我敢说,百分之八十的人都踩过这个坑。今天我把业界通用的连接池监控拆解下,从底层逻辑讲透,让你不但能解决线上问题,还知道为啥。 线上全网统一的连接池排查标准流程,按照排查问题章法来,先看连接本身够不够,再看请求有没有排队堵塞,接着把连接站着不放的根源,最后都抵查隐性泄露。 四步走下来,所有连接池问题根本藏不住,这就是专业架构师和普通开发的核心区别。讲流程,抓本质,不瞎事,下面详细拆解每一步。先看第一幅活跃连接数,这是连接池的第一道情侣表。很多人搞不懂活跃连接和总连接、空闲连接的区别,我一句话说透,空闲连接是等着干活的,活跃连接是正在干活的。看活跃连接数,你不能只看顺时数字,要 看持续趋势。如果只是秒杀大速瞬间打满,很快回落,那是正常波动。但如果长时间满负荷连接,全被战死,没有空闲,这才是真的资源不够,这时候考虑扩容才是对的。一看到数字高就扩容,那是初级运维的做法。架构师要看趋势,看本质。第二副是最容易让架构师踩坑的指标,也是区分真假瓶颈的核心。 我见过太多案例,活跃连接打满,等待线城堆成山,开发立马去扩连接池,结果系统直接崩了。为什么?因为这时候很有可能不是连接不够,而是连接被占着,不释放新请求,只能排队你再加连接,相当于让更多请求堵在数据库门口,数据库压力暴增,直接荡机。记住,等待线城堆积,先别扩容, 再查下后面的执行问题。第三幅是整个监控体系的灵魂,也是我反复强调的核心。为什么说不加 c 口刀见树不见林?因为前面看连接为什么不释放才是问题本质。要明白一个正常的 c 口刀见树不见林,因为什么不释放。连接池永远不会满, 但一条慢斯基口直行三秒,五秒,一个长竖挂几分钟,一个连接就被死死占住十条,这样的 cico 就 能把二十个连接的池打满。所以不查 cico, 光掉连接数, 永远是治标不治本,这就是专业和业余的天壤之别。最后一幅,连接泄露,这是线上最隐蔽最致命的定时炸弹。前面的问题高峰期会爆发,而连接泄露是温水煮青蛙,哪怕系统没流量,泄露数也在慢慢涨,空闲连接一点点被吞,直到某一天,连接池彻底空了,系统直接卡死, 必须把这个指标作为兜底,只要非高峰时段泄露数持续涨,不用想百分百是代码问题。去查连接关闭,逻辑异常处理事物释放,这是从根上解决问题,杜绝隐性风险。最后总结,把这套流程刻在脑子里,排查连接池,就按这个顺序,先看活 跃连接数,深挖 c 孔和事物耗时,最后紧盯连接泄露。记住口诀和金句,以后线上出问题不用慌,按流程来精准定位根音,不做无用的扩容,不踩低级的坑。这就是高级架构师的实战方法论,通用权威落地,直接拿去用,解决所有连接池瓶颈问题。

今天面了一个四年后端简历,写着精通缓存架构,高可用设计,会性能调优。结果一个高频题直接给他问,蒙面试官,高病发场景下先更新数据库还是先删除缓存?他知知无无,半天说用延迟双删。面试官追问具体延迟多久,直接说看心情。再问数据库连接池泄露怎么排查, 只会受过重启服务加大连接数,剩下的全答不上来。现在中级后端的考核,早就不是被缓存血崩穿透这种基础概念了。 很多人做后端只懂用 reddit 和 mexico, 却不懂实际落地的核心痛点。比如缓存一致性的病发、静态连接池泄露的精准定位,这些才是面试官真正要考的。 要是这类题你也没思路,赶紧学学我整理的后端面试题库,参照大厂初级到中高级后端工程师的能力模型,包含市面百分之八十场景题内容,只要你是我的粉丝,甩个六六六直接带走学习 nice 高手答这类题都靠这两套系统化思路,直接戳中面试官痛点。第一套,缓存一致姓房引发静态方案,核心是解决先删缓存后更新 d b 与先更新 d b 后删缓存的静态问题。三步搞定。 一、采用先更新 d b 再删除缓存策略,并给缓存设置合理过期时间作为兜底。二、删除缓存失败时,将 t 发送到延迟消息队列,一步重试删除,最多重试三次。三、读请求时,若缓存 miss 加分布式锁,如 ready 房缓存击穿锁内,二次查 d b 后写回缓存,既保证最终一致,又避免引发脏数据。 第二套,数据库连接池泄露精准排查法除了看活跃连接数和超时,还要覆盖这六个关键维度,一、监控连接池的借出未归还时长,按县城堆占聚合定位。二、开启慢连接,日制打印每个连接的 coco 执行号时和持有时间。 三、使用动态代理包装 connection, 在 close 括号时记录调用站。四、定期单普连接池状态比对接触列表与活跃事物。五、配置泄露检测参数,如黑格雷的 leak detection threshold。 六、压测时注入连接未关闭的模拟故障验证监控告警。这两道题考的不是你背过多少面试题,而是你解决实际生产问题的落地能力。 后端开发的核心是避坑,既要懂原理,更要想得到真实线上会炸的雷,比如缓存双写不一致、连接池打满拖垮整个服务这些真实痛点。 最后问一句,你做后端开发时,因为缓存一致性问题现象出过最严重的故障是什么?评论区聊聊下期讲没有列路追踪时怎么用 gtech 加 grab 手工定位死锁现成还不漏掉关键锁?

张老师,又有粉丝问到说用德罗一的连接时,他过了一段时间呢,就提示后期不能连接,然后呢,修改连接时大小,过了一段时间呢,又提示后期不能连接,请问这是怎么回事呢?应该怎么去排查呢?这个问题正好我自己也遇到过,当时排查呢,是因为数据库的连接时泄露导致的。 那么今天呢,借这个机会可以分享一下我的一个排查经历,当时的话,我们用的是德鲁一这个连接十,那么开始的时候呢,经常是把这一个错, 我们可以从报作信息中可以找到两个关键的一个信息,就是 active 呢是十,而 max active 呢也是十。 那么看到这个信息呢,我感觉就是 maxxt 五呢,他的设置的值太小了,而我们的这个业务呢,实际需要的连接呢,超过了他的一个上限,所以我的第一反应呢,就是把 maxxt 五的一个值来调大,调到了一百。然后呢,我再重启服务, 之后呢,我就再去模拟先生的一个业务场景,对他进行一个轮番的操作,我发现过了一段时间之后呢,一百也满了,也是报同样的错,所以这个时候呢,我就发现这个问题呢,不应该那么简单了,应该不是一个连接时数量的问题,我就开始怀疑是不是代码写的有问题,所以呢,导致这个连接呢一直没有释放。 然后呢,我就开始进行排查,因为德罗伊这个连接词呢,他默认是没有去开启一个监控功能的,所以呢,我第一步的话就是要去开启他的一个监控功能,打算呢通过这个监控呢,来排查一下他的原因, 凝聚毕生数学给大家研制了一份佳娃程序员的一个求职突击手册,包含简历模板面试突击压题一周的一个技术提升,以及佳娃提升的一个完整学习路线。领取方式呢,在我视频主页,一册在手,保你 高薪无忧。那监控怎么来开呢?我们来看一下这么一大代码,它主要是配置两个病,一个是叫做 several registration bin, 一个呢是叫做 fair registration bin, 那么在 several b 组呢,我们要配置我们登录控制台的一个用户名和密码, 然后在菲儿的病中呢要配置一个过滤的规则,那么这两个配置呢,一般都是比较固定的,所以呢配置完以后呢重启就可以了, 重新之后呢,我们就可以输入一个地址,比如说输入 log house 八零八幺拽的这个地址呢,就可以看到这么一个监控界面,然后呢紧接着我们只需要输入配置好的用户名和密码,然后就可以登录进来, 进来呢就可以看到首页有这样一个记录,那么点击这个记录的数据员呢就可以去查看,我们就发现他的连接的一个打开次数是三百六十八次,然后呢连接的 关闭次数呢也是三百六十八次,然后再看一下他的一个活跃连接数是零,因为呢这是我们系统刚启动之后呢,还没有进行任何操作,所以这些数据呢是正常的。那之后呢,我就继续模拟业务场景,不断的去重复点击那几个业务功能, 这个时候就发现打开的连接次数呢变成了五百八十七次,然后呢关闭的次数呢变成了五百五十九次, 那这个地方呢就产生了一个差值,这个差值呢就正好是活跃连接数二十八,所以说这个数据呢就证明了 二十八个连接呢,在很长一段时间内一直是没有释放的,那么随着时间的推移啊,我们这个数值他超过最大上限的时候呢,我们当然就后置不到新的连接了。那具体是哪一个代码导致连接不释放呢?因为我们程序的代码呢会非常多,所以呢,如果我们一个一个去找,或者一个一个去拆的话, 肯定是不现实的,因此呢,我们只能通过一个权重的设置来强制回收数据功能连接,从而去引发程序爆错。而德罗伊呢,他提供了一个二班的策略,他可以去强制关闭正在活跃的连接,我们只需要增加这么一套配置呢就可以了。然后配置完成以后呢,我们要重启服务, 重启之后呢,我们发现在监控界面上啊,就会多一个 vu 的按钮,那么点开之后呢,就可以显示程序报错的一个对账信息,我们根据这个对账信息呢,就可以定位到具体的一个代码,比如说他可以看到报名呢, set 口语句啊等等这些信息呢都可以看得到的。 当然呢,如果出现同样的报错的话,也不一定就是数据库连接线路的问题,那么德罗伊这个连接时呢,他也是一个比较常见的一个连接时,大家呢可以利用他的监控功能去进行排查,那么未尽之处呢?大家评论区见。

不是哥们还在用百度谷歌搜东西,今天带你揭秘下两款在网安圈闻风丧胆的搜索引擎。第一款树段被称作互联网私家侦探黑暗版,谷歌更像一台互联网显微 镜,输入指令 port 三三八九 ctrl c n, 国内所有开启远程桌面的电脑都会被直接解锁出来。曾有人给智能鱼缸做远程监控,设了绕口令,一二三四五六,被人在树段搜到后半夜把水温调到四十摄氏度, 一缸观赏鱼直接变成了水煮鱼。第二款 fofi 是 资产测绘的照妖镜,功能更直接搜 app a penta tomcat 加 country cn, 全国在用的 tomcat 服务器都会被列出。 不过这两玩意就是双刃剑,你拿着它们研究防御,做资产自查,那是专业大拿。你要是真手痒,想去点点人家的后台,或者黑进人家的鱼缸看看鱼。那警察叔叔的银手镯可不分型号,绝对包邮到家。最后问一句,你平时用啥搜东西?

下一个,嗯,你会部署汤姆凯哥的环境吗?会啊,我经常部署测试环境的。那你说一下汤姆凯哥的默认端口是什么呢?这个我知道,八零八零。 那你启动 tomka 的时候,提示无法启动,端口被占用怎么办?嗯,可以用 nice date 杠二 anp 格外普八零八零这个命令可以查出占用端口号的进程号,然后通过 q 杠九进程号就能把对应的进程杀掉,然后再去启动我的 tomkat 就可以了。 是不是说你想坐我这个位置,发现我已经坐在这了,你就要把我干掉呢?你就不能给长虹泰的挂个末日端口在这启动吗?你非要坐我这个地吗?

有个 size, 系统出大事了,客服接到投诉,用户登录后看到的是别人的订单, a 用户能看到 b 用户的数据,这是数据泄露啊。排查之后发现 tomcat 现成池,两百个现成用户上下文用 threadlocal 存储, filter 里 set 了用户数据,但是没有 remove。 为什么 threadlocal 会导致用户数据串呢? tomcat 现成池在这里扮演了什么 角色?评论区咸菜,这期我们聊 threadlocal 的 底层原理,内存泄露的根源,以及现成池场景下怎么正确使用。把 threadlocal 想象成健身房的储物柜,每个人都有自己的柜子,互不干扰,这就是现成隔离,用完要清空,不清空的话下个人看到的就是你的东西了。关键是健身房的柜子是可附用的, tomcat 的 现成也是可附用的。 red logo 的 核心价值是避免参数层层传递,实现县城内数据共享,但是用完一定要清。很多人以为数据存在 red logo 里,其实不是数据存在 red 的 对象里,每一个 red 持有一个 red local map, redlocal 只有 key, y 六存在县城的 map 里,一个县城可以有多个 threadlocal 变量,最关键的是,县城不死, map 就 不清。看 set 方法的源码,先拿当前县城,再拿现成的 map, 然后用 this, 也就是 threadlocal 自己作为 key 存值,第一次用的话会创建 map get。 同理,从当前县城的 map 里用 threadlocal 作为 key 取 值,所以 threadlocal 本身不存数据,它只是一把钥匙。关键来了,看阴 tree 的 结构, key 是 弱引用, y 六是强引用,这就是问题的根源。泄露链条是这样的, red 的 logo 对 象被回收,若引用嘛, g c 会干掉它。 intre 的 key 变成了 no, 但 intre 还在 y 六被 y 六强引着无法回收。县城不死,比如县城池, y 六就永远留着。 tomcat 的 县城池会放大这个问题, 两百个县城附用等于两百个不清空的储物柜。看这段 filter 代码, set 了用户信息,业务处理完了,但是没有复位,请求结束,县城回到池子,下一个请求附用。这个县城如果没走 set 分 支, 比如说未登录用户 get 拿到的就是上一个用户的数据, tomcat 默认两百现成,最多能串两百个用户的数据,这是严重的安全事故。用代码复现一下,三个现成的现成池跑四个任务,只有 data 为 null 才 set, 否则直接 get 执行任务四可能拿到一二三的某个值。 原因是县城一执行完任务,一回到池子又被分配执行任务四,但 data 里还是任务一的值。阿里规范要求用完必须 remove, 正确的写法是 try finally, try 里面 set 用户信息和业务逻辑, finally 里面 remove。 为什么用 finally 呢?业务代码可能抛异常, finally 能保证一定执行 remove。 第一个坑, 父子县城不共享, thread local 是 县城隔离的,你有 thread, 里面拿不到副县城的值,要传递用 inheritable thread local, 但县城池里也有坑。第二个坑,县城池里加了 inheritable thread local, 县城池的县城只 在创建时继承一次,后续任务拿到的还是第一次的旧址。阿里开源了 transmittable threadlocal, 解决了这个问题。第三个坑, static 修饰更危险,生命周期等于累,加载器比县城还长,但实际项目基本上都是 static 的, 所以更要注意 remove 回到开头的那个数据串的问题 怎么改?加上 try finally, finally 里边 remove 就 这么简单,改完上线之后数据串问题就消失了。系统稳定运行为什么能被县城隔离?数据存在 thread map 里, 每个县城独立为什么会内存泄露? key 若引用被回收, y 六强引用留着为什么会数据串?县城池敷用现成?上个请求的数据还在,怎么避免 try finally 里边 remove 养成习惯?下期聊 summerfall 与 countdown latch 怎么实现?限流和 cyclic barrier 怎么选?实战并行调用多个接口汇总结果。

今天早上普罗米就是监控疯狂告警,有个服务的连接池直接飙到了百分之百,接口全超时。但是我打开官方那一看, 发现数据库的 cpu 使用率不到百分之五,覆盖也非常低,后端的连接池爆了,但是买车库,数据库的资源却非常空闲,这种奇怪的现象你们遇到过吗?我排到了一串字字和代码,发现是一个低级但非常容易忽视的问题。 有个兄弟的代码逻辑,开了一个事务,但在事务内部同步调用了一个发短信的三方接口,早高峰的时候三方服务延时响应非常慢,两秒左右我们的服务并发,一上来连接时瞬间被打慢,后面的请求只能排队,不是数据库慢相当于你的代码逻辑,占着茅坑不拉屎。 道理大家都懂,面试的时候都能背出来,但在实际写业务代码的时候,很多人一顺手就忘了这行代码是在事物里面。这个问题处理起来不难,把耗子的操作从事物里面移走,或者是直接扔给 mq 一 步处理。记住一条铁律,坚决不在事物里面做。网络请求,点赞关注,每天获取一个新知识!

好,我们先看第一部分啊,这个快速去定位到刀客,对吧?就是说当我们控制了一个系统啊,对吧?你怎么去判断他是一个刀客呢?啊?那么其实在昨天的时候给大家讲的很清楚了,就是说刀客是干什么的呢啊?就是说 他是一个独立的虚拟的一个环境啊,就比如说这里有一台系统,一台电脑,对不对?我们想要在这个电脑里面装两个网站啊?那你不可能有的时候不可能在一个电脑同时装两个啊,这样的话数据库啊, 或者说他这个一些配置啊,会有冲突,那么我们就考虑啊,将自己的系统装在独立的 dong 口,对吧?比如在这个另一个系统,我们安装一个 dong 口,对吧?将网站 a 装在这个 啊,这个虚拟的环境中,将网站 b 装在这个系统中啊,那这样的话啊,系统一跟系统二相互独立,互不影响,互不干涉,但是呢啊,这个系统一它是刀口, 系统二它也是刀口,对吧?那如果说啊,我们通过漏洞控制了一个系统,好,你发现这个系统它是处于这个圆形的里面,它是刀口,那其实你控制这个系统没有任何意义,对吧?因为它是虚拟出来的环境,你必须呢,哎,要逃逸出来啊,控,逃逸到哪里?逃逸到这个正方形里面 啊,要控制这个真正的这个系统才可以,那么这个就叫刀客逃逸了啊,那么我们还是回归到昨天啊,昨天我们讲了,对吧?啊?网站这里呢,我们通过这个勾瓣的扫描啊,发现这里有一个 tom ken 的 这个漏洞, 然后大家通过我们昨天讲的反弹 shell 啊,对吧?啊?一些这种方式啊,成功地干嘛呢?啊?成功地谈到了别人的 shell, 好, 那现在再给回顾一下,昨天就是这样的,对吧?啊,这边我们用 n c 去监听啊,用来接收 shell, 然后呢,通过这个 啊,网页的 r c e 的 方式啊,去执行这个啊,反弹 shell 的 命令啊,然后这边那个这个黑色地方就能谈到接收到啊,昨天这个 shell 了,对吧?这个是我们昨天讲的内容啊,如果说昨天你没有来的话,今天可能比较懵一些,对吧?但是这没有关系啊, 我们如果,哎,我,你就接着往下听就可以了,好吧,好,那么大家现在看到了,对吧?这里呢?我是不是通过这边返堂的方式啊,成功的拿到了一个 shell 了啊,那这就等于说已经控制了一个系统了啊,远程控制了,对吧?啊,哎, 好,那么在这里我们大家考考虑一个问题,对吧?哎,把这个切回来, 哎,这大小写怎么失效了? l, 对 啊, 好,没事啊,来,我们再来看啊,首先我们用过这种反弹式的方式控制了一个系统,我们查看一下当前的这个权限,对吧?是不是 root 啊?最高管理员,对不对?好,我们看下这个这个 if config, 看下它的 ip 啊,那你能发现呢?这里的 ip 呢,对吧?啊?很奇怪啊,什么幺七二幺八,对吧?它不像一个正常 ip。 好, 那现在问题来了,第一个问题就是我们现在通过漏洞,你通过这种反南事的方式控制的是现在这个系统一,那么这个系统一,它其实是在这个刀口里面的。好,那么第一个问题,当我们未来啊, 跟李哥这个方式一样,控制了一台电脑之后,你如何判断他是否在刀刻中对不对?怎么去控制素数机呢?别,然后不是正讲的吗?啊,控住素数机的 不就叫刀刻逃逸了吗?对吧?那方式一,就是我们要去判断这个网站根目录下有没有刀刻点 e n v 这个配置文件。好,如果说一个系统对不对? 它是刀科环境,那么在它的这个目录下,一定会有这样一个文件啊,叫做刀科 e n v 文件啊,这个叫刀科的配置文件啊,就是如果是真正的电脑,它是没有这样的一个文件的,只有是刀科系统,它才有这样的文件。好,那所以说我们可以执行 ls 杠 a l 斜杠 点刀客 e n v, 去查看是否有这样的文件,对吧?那大家在这里去执行就可以了啊,很简单,你把这个命令直接复制过来, ok, 来,好,回车,好,回车之后大家去看一下,这里,它就有提示。哎,是不是提示了,你看, 看到了吗? ls 就 查看, al 就 查看,所有查看斜杠目录,也就是根目录下是否有这个点刀刻 e n v, 那 么在这里我们能清楚地看到确实存在一个这个文件,那这个文件是存在的 啊,那所以说通过这种方式,我们就判断出了当前我们控制的这个系统啊,它其实是一个刀刻的环境 啊,他是个虚拟化虚拟出来的环境啊,他并不是真正的宿主机啊,那你控制这个 d 环境呢啊, 这个作用不大,危害就比较小一些,对不对?好,这是方式一啊,也就是判断根目录下是否有这个 dk 的 配置文件啊?如果有,就代表环境是 dk 啊,那第二个方式啊,就查看他的进程 啊,那如果说它是个 dok, 因为 dok 说白了它也是个程序嘛,对吧?就跟你微信 qq 一 样,它也是个程序 啊,那么我们就可以查看一下啊,如果它是 dok 的 话,那在它的进程里面应该会有这个 dok 相关的一些进程或者一些提示。 那大家可以使用这个命令 cat 啊,这个这个 group 啊,去查看啊,是否有刀客的字样啊,这种是方式二,它也能去啊,判断当前环境是否是刀客,来,我们在这里输入啊,回车,那么大家在这里看一下, 好,输入这个指令之后呢?哎,我们把它放大,大家是不是能清楚地看到啊? cat, 我 去查看进程,对不对?能看到这里的明显啊,是有 docker 这样的一些提示的啊。那么通过这种方式,我们也初步能判断 啊,他确实是刀客,对吧?那两种方式呢?其实任选其一就可以了啊,不管是有这个配置文件,还是他进程中有这个刀客的字样,我们都可以判断他是刀客啊。那如果是正常的 啊,他是没有这样的文件的啊,这个文件的,对吧?他是没有这样的文件的啊,那不信呢,我们去拿,打开一个正常的这个系统,我们给大家看一下啊, 来,我们打开什么,我们以个 kelly 为例吧,对吧?比如说我们的 kelly 啊,哎,我们的 kelly, 它不是 ducker, 对 吧?它是真正真实的这个主机啊。好,那我们打开这个 kelly 系统,我们去看 kelly 里面有没有刚才我所我所说的两个文件,它一定是没有的啊, 只有在 ducker 的 环境里,虚拟出来的环境里面,它才有刚才的这种提示。好,我们进入这个 kelly 中啊,当然验证一台 linux 都可以啊。 好,一二三四五六。好,我们登录进来啊,好,我们在这里输入一下啊,比如第一个,好,我们 l s, 对 吧?杠 a l 斜杠啊,点 d o c k e r e n v, 对 不对? 看有没有看到没,没有,是不是看来没有看到没,没有那个文件啊,这个还写错了吧,你说李哥你就不对啊,少写多写个 e 啊,对吧,同样也没有对不对?好,或者说我们去执行刚才的这个指令 啊,这个你看有没有,是不是也没有啊?看到吗?这是只正常系统啊,这是宿主级真正的系统。那么真正的系统中大家能看到啊,它是没有刚才我们说的那些提示的 啊,只有在刀刻环境中他才有这样的提示啊。所以说通过这两种方式,我们可以初步判断,当前我们通过反电磁控制的系统,他是刀刻环境。好,那也就是说你现在把这个啊圆圈里面的这个系统控制了啊,你现在要怎么?是不是要去逃逸, 逃逸到宿主机啊,也就是真正的机器,那怎么逃逸?就从这个圈里面出来逃出来,对不对?啊?考,就跟这个 别人把你囚禁到一个小房子里啊,天天打你啊,天天把你拴起来,那你是不是想方设法得跑呀?啊?跑到外面的世界里啊,那你怎么跑 啊?是破窗呢?还是砸门呢?还是用什么计谋呢?对吧?你得总得有个方法跑出来,对吧?那你现在啊,我们控制的是这个系统音,怎么逃到这个啊?真正的 linux 系统里面来呢?

警告教程耗时一千六百八十小时制作,全面讲解网络安全入门操作核心基础知识,从基础电脑配置到软件安装行 全线进程与日制安全思维,带你沓实网络安全。同时为了保证学习效果,学习网络安全需要的软件工具,文档笔记、视频教程、公房八场面试宝典弹幕六六六即可自取。 最后有什么问题欢迎评论区交流。下面我们正式进入课程,同学们好,本节呢,我们来学习的是 tomcat agp 任意文件提取文件包含漏洞。 好,首先我们来看到这个漏洞的一个详情,它是由 tomcat agp 协议存在缺血而导致的,可以利用该漏洞构造特定的参数 进行文件包含操作,进而读取受影响的,他们看服务器上的微不应用目录下任意键, 无配置文件或源码等。此外,如果目标应用有目文件上传功能, 攻击者还可以利用这个漏洞配合文件包含来进行远程代码执行,从而控制整个系统。它影响的版本呢, tomcat 六, tomcat 七到七点零一, tomcat 八到八点五五一, tomcat 九,九点零三幺之间 好,它这个漏洞原理就是他们 cat 配置了两个监监口,它们分别是 ipad hdp 和这个 agp, hdp 默认端口为八零八零,用于处理我们这个 hdp 请求,而 agp 它默认端口就是八零零九,对于处理 agp 协议请求,而 agp 比 hdp 呢,更加优化,多用于反向集群的。 所以这个漏洞由于这个 app 协议缺陷导致的。可以通过构造特定参数捕取服务器、微博、 app 下任意文件以及可以包含任意文件,如果有某上传的,点上传图片码等,即可以获取相同看的默认 configure server。 点叉喵,中间配置两个 content, 一个为八零八零的对外提供 html html 协议以及 另外一个默认端口,它就是八零零九 html 协议端口,这两个端口呢它经常是默认监听在外网啊, 好,首先我们来到这里,我们可以先看啊,我们使用先开启我们的一个容器环境,首先在这里 我们启动我们的 open compute up 跟 d 构建我们的容器,然后呢查看我们的执行顺序,它这里映射呢端口是 八零八零端口,这个八零零九呢它是映射的是 a g p 协议,这里我们都和一叉一 c 杠 i t, 这里的 d 九五是我们容器它这个前三位, 然后定 d a s h 就是 进入到我们容器里面来,这里我们切到它对应的这个 vivo i n f 这个 服务器木下就是它那个漏洞,它这个能读取任意文件的一个位置,然后这边 l s 它这边就只有一个 vivo。 点叉喵,好,就是我们来到这个位置下就 vivo 叉喵,然后之后我们可以使用我们的卡里 进行一个 mac 的 一个扫描,或者我们这边啊建议就大大家去使用我们的 root 一个行为啊 root 的 这个文件夹,然后打开我们的一个终端, 这里之后呢我们使用 mac, 然后去扫我们的八零幺三零幺六幺二五二二五这个 ip, 好,这里我们可以看到它这里有一个八零零九 a g p 协议以及八零八零 h t t p 协议,那么就说明这个大概率有可能是一个它 cat 的 一个漏洞可能会存在,那么我们这里呢,就使用一个对应的 脚本文件啊,脚本文件就使用我们的 c v 二零一九三八,这个 py 文件就是我们集成好的 python 脚本,我们首先去读它那个 vivo 点 com, 就是 这个去读它的 vivo 点 com 文件啊,我们看一下怎么去读去呢?它就是使用 python 三, 它生成这个文件,然后调用这个 py 脚本,然后指定好一个 ip 杠 f, 就是 你要读取的一个文件,我们要规定好路径,就微博 i n f 下面的微博检查喵,然后点回车之后,它的一个 文件内容呢,能够被我们读取出来,就是任意文件能够被我们读取。假如说我们在我们的服务器上这里生成一个 一点 t s t 文件啊,那么我们是 a 口啊,我们输入给它输入一个 c v 二零二零幺九三八,好,我们 ls 一下,好查看它就是一点 t s t 文件。 然后呢我们 python 三使用我们这个 c v 二零那个,就读取这个一点 t 的 时候,我们就把这个位置呢给它改一下就行了, 就是一点 t o t 文件啊,好,这里就能读出来它是 c v 二零二零幺九三八,也就是把我们刚才写入一点 t o t 文件内容呢,它也就展示出来了,我们还可以是使用 cat 一点 t s t 去读取这个内容啊,这就是造成了我们的一个任意文件取,那么任意文件包含它又是怎么一个写法呢? 其实就是我们在这个呃,这个里面,我们就是输入啊,假如说它这里面有一个生成了 echo 啊, echo 的 这个 g s p 啊, g g s p 代码,然后我们写进这个 text 点 t s t 里面,然后呢我们如果正常去 cat t s t 那 么它这边输出的就是 hello, 但是如果我们去在我们的卡列里面执行, 假设一个 rce 命令执行的时候,那就是在这里指定好路径之后杠杠 rce 一, 就是指定好我们一个命令执行参数,那么它就会解析这里面的,点击 s p 后缀这个文件啊,你就会把里面写入的这个 hello on to 来我们看刻件啊,就是在这里写了百分之二,还要 low。 这边执行到我们一个 t s p 代码,它写进 t s t 正常来说它执行 cat 的 时候,它是只能展示它原原本本的东西,它不会去解析,不会被任何东西解析掉。 只有当这边使用 rce, 使用这个 python 脚本解析的时候,它的 color 呢才会显现出来,这个就是我们所说的 啊,任意文件提取和任意文件包含 logo 啊,它就包含了这个 text 点 t a t 去解析并且提取。


今天我们讲麦 c 口长连接十六种死法,十五 s s l t l s 安全异常死。百分之九十九的人都认为证书过期就等于所有连接瞬间全断,监控立刻报警。但真实线上情况是,证书过期那一刻,监控全绿,业务全正常,反而在十分钟到两小时后,业务才开始断崖式血崩。这个时间差坑过无数运维和架构师。 这个延迟爆发的现象,就是我们所说的死亡潜伏期。证书过期后,连接会分两个阶段死亡。第一阶段,新连接全死,老连接全活,监控看起来一切正常。第二阶段,当存量连接需要重连时,会批量死亡,最终导致业务血崩。 这个潜伏期的长短是多少呢?答案是完全由你配置的连接池最大空闲时间决定。如果你配的是三十分钟,故障会在半小时后开始爆发。如果你配的是两小时,故障会在两小时后准时到来,一分不差。很多人以为这个潜伏期是协议刻意设计的补救窗口,其实并非如此,它是连接生命周期校验机制自然形成的现象。简单来说, sl 证书校验只发生在连接握手的那一刻, 一旦连接建立成功,后续的数据传输就不会再去复合证书状态了。虽然潜伏期不是刻意设计的,但它客观上带来了巨大的业务红利。它避免了业务瞬间血崩,保障了存量业务的连续性,并且给运维人员留出了宝贵的修复窗口, 让故障影响降到最低。总结一下, ssl 协议设计证书有效期是为了强迫定期更新密钥,把泄露风险控制在有限时间内定时死亡是为了更长久的安全而死亡。潜伏期虽然是机制的副产品,却为我们提供了宝贵的缓冲和容错能力。看懂它,利用它,才是一个架构师真正的清醒。

第一步,首先用 nca 啊杠 a p n plus 八零八零,查看一下占用这个八零八零的端口是哪个进程。第二步,再用 ps 杠一 f glap 这个进程号,看一下占用这个端口的进程是不是通开在一万的某一个进程。第三步, 如果这个进程确实是被空空一万的程序占用了,并且这个程序没有用的话呢,我们可以用 q 杠九加上进程号把这个进程杀掉。如果这个进程有用的话呢,我们就可以去修改通过 kit 一个端口号。

面试官问你,接口被打爆了怎么办?如果你脱口而出,赶紧加机器扩容,或者一头扎进去查日期找错。恭喜你,这场面试基本凉了。面试官一看就知道你完全没有线上救火的经验。嗨,大家好,我是小哲,关注点赞加收藏,我们马上开始今天的讲解。 大部分同学之所以害怕场景题,是因为基础不扎实,无法做到融会贯通。如果你也想提高自己的面试能力,我的主页准备了系统的内容,需要自取。 遇到线上接口被打爆,很多同学脑海里的第一反应就是完蛋了。然后像眉头苍蝇一样去翻错误日制,或者直接跟面试官说重启服务加机器。 这种毫无章法的暴力排查,会被面试官极度嫌弃,因为真实的生产环境极其复杂,等你靠翻日志找到原因,公司早就亏了几百万了。 那咱们到底该怎么破局呢?其实现上救火就像急诊室抢救病人一样,重点不在于上来就找病根,而是有一套雷打不动的四步急救法,那就是先确认现象,再分析流量,接着定位瓶颈。最最核心的是一定要同步止血。 只要掌握这套降维打击的拆解法,面试官绝对会对你刮目相看。那咱们现在就在脑海里跑一遍这个抢救流程。 假设你负责一个电商系统的商品详情接口,某天晚上警报疯狂响,客服群全在骂商品点不开了。这时候你上场了。第一步咱们绝对不能慌,先去监控面板看大盘。 你看了一眼,发现接口的每秒请求数也就是 qps 疯涨,响应时间变得巨慢,还出现了一堆超时错误,同时发现数据库的连接池也被打满了。 好现象,确认了系统确实承载不住了。接着咱们走第二步,看看这波滔天巨浪到底是谁打过来的?咱们去查一下网关日记,看看这些请求的来源。如果发现全是同一个网络地址发来的诡异请求,那肯定是被爬虫或者黑客攻击了,直接拉黑名单拦截。 但如果地址分布很均匀,那说明是真的业务大爆发了,比如某个爆款鞋子突然被疯狂抢购。好,既然是真流量,咱们就进入第三步,从上到下找系统瓶颈。 我们顺着流量的走向看,是不是应用的现成池被耗尽了?还是说 radis 缓存被打穿了,导致请求全压到了数据库上?又或者是因为下游的某个外部服务挂了,导致咱们的接口一直在傻傻等待。 在这步推演中,你会发现问题一环扣一环。但是注意了,这里有个超级加分项,面试官就在等你说这句话, 真正的高手绝不会干,等着排查完再处理。咱们必须在排查的同时立刻止血,就像抢救大出血的病人,查血型和按压止血必须同步做。所以我们要立刻开启限流,把多余的请求挡在门外。 对于非核心的服务,直接降级或者熔断,保住主干系统不死,这才是真正的大神操作。这道题的核心思想其实就是四个字,先保命,再治病。也就是流量超过承载能力时,必须快速定位加果断止血。 说到这里,你可能会问,限流和降级听起来差不多,那他们俩到底有什么本质区别呢?欢迎把你的想法打在评论区,大家一起交流。今天的视频就到这里,我们下期见,拜了个拜。