freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

记一次域内渗透实战之Cragty
2025-03-10 15:10:41
所属地 北京

信息收集

端口扫描

使用nmap扫描发现存在80和25565端口开放

1741590079_67ce8e3fb9c5dfde51f74.png!small?1741590080427

接着探测其具体协议

1741590089_67ce8e49253f147658074.png!small?1741590089818

目录扫描

使用工具对其进行目录扫描

1741590098_67ce8e527f70f96e220cf.png!small?1741590099414

web页面

发现80端口存在一个静态页面

1741590110_67ce8e5e51030b95af13c.png!small?1741590112689

使用curl测试25565端口,发现不能利用。

手动枚举

1741590117_67ce8e65f2eee9a4c73a3.png!small?1741590118899

漏洞利用

Log4Shell漏洞

漏洞原理

Log4Shell 的问题在于 Log4J 日志模块不能很好地处理该模式${[stuff]}。通过在该模式中放置 JNDI/LDAP URL,它将导致记录器从任意服务器获取数据,如果该数据是序列化的 Java,则会导致执行。

漏洞分析

项目中的关键代码(MainController.java):

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@RestController
public class MainController {
    private static final Logger logger = LogManager.getLogger("HelloWorld");
    @GetMapping("/")
    public String index(@RequestHeader("X-Api-Version") String apiVersion) {
        logger.info("Received a request for API version " + apiVersion);
        return "Hello, world!";
    }
}

代码分析

首先,这是一个简单的REST控制器,使用@RestController注解,处理根路径的GET请求。方法index接收一个请求头X-Api-Version,然后记录一条信息到日志,最后返回"Hello, world!"。

漏洞修复:

修复代码如下:

import org.springframework.web.bind.annotation.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import javax.validation.constraints.Pattern;

@RestController
public class MainController {
    private static final Logger logger = LogManager.getLogger(MainController.class);

    @GetMapping("/")
    public String index(
        @RequestHeader(value = "X-Api-Version", defaultValue = "1.0")
        @Pattern(regexp = "^[0-9]+\\.[0-9]+$") String apiVersion) {
        
        logger.info("Received request for API version {}", apiVersion);
        
        if (!isSupportedVersion(apiVersion)) {
            logger.warn("Unsupported API version attempted: {}", apiVe
# 渗透测试 # 数据安全 # 内网渗透 # 企业安全 # 网络安全技术
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录