【问题标题】:Suspect loadByUsername call on AWS怀疑 AWS 上的 loadByUsername 调用
【发布时间】:2019-09-24 00:10:13
【问题描述】:

我在 ElasticBeanstalk 上部署了 Spring Boot 应用程序。我即将开始beta测试,所以还没有那么多人知道应用程序的url。昨天我在日志文件中发现有人从我的UserDetailsService 实现中调用了loadByUsername 方法。关键是此时没有任何其他日志。如果该用户尝试登录,我会找到有关登录方法调用和Authentication Success/Fail Handler 的信息。所以我假设这个用户使用了一些 Spring 或 Tomcat 漏洞。所以有2个问题:

  1. 怎么可能有人猜到了我的 url(域或 CloudFront url)? pople 是否使用机器人通过蛮力方法扫描 CloudFront url?
  2. 这个人如何在不调用身份验证处理程序的情况下调用 loadByUsername 方法? Spring 中是否存在已知漏洞?或者有人注入了一些恶意软件?如何保护它?

我使用 Spring Boot 1.5.8。我认为值得一提的是,几天前我在日志中发现有人试图调用一些通用名称,如 phpMyAdmin、/api/admin、wp-admin 等。在所有情况下,服务器都返回 404。

public class UserDetailsManager implements UserDetailsService  {

    @Autowired
    private static final Logger LOG;

    @Autowired
    private UserDao userDao;

    @Override
    public UserDetails loadUserByUsername(String login) throws UsernameNotFoundException {
        LOG.debug("Load by username: {}", login);
        return userDao.getByLogin(login).map(user -> new CustomUser(user.getUsername(), user.getPassword()))
                .orElseThrow(() -> new UsernameNotFoundException("User not found for login " + login));
    }

}

编辑: 我发现如果用户不使用 Spring Security /login enpoint 进行身份验证,而是使用基本身份验证调用任何受保护的 url,Spring 会忽略身份验证处理程序。这就是为什么没有任何其他日志的原因。 在 nginx 日志中,我发现来自此 User-Agent:https://github.com/robertdavidgraham/masscan 的调用。所以现在唯一的问题是一些随机的人是如何知道我的网站的?是否有新创建的 Cloudfront url 的注册表?

【问题讨论】:

  • “我假设这个用户使用了一些 Spring 或 Tomcat 漏洞”:可能,但是太小了,你应该先看看你自己的代码。
  • 如果您有访问日志,您应该能够将对该服务方法的调用与发出调用的用户的 IP 地址相关联。
  • 我发现了这个应用程序行为的原因(在后期编辑中)。我从日志中知道该用户的 IP。但是我能用这些知识做什么呢?

标签: amazon-web-services spring-boot security amazon-cloudfront amazon-elastic-beanstalk


【解决方案1】:

所以现在唯一的问题是一些随机的人是如何知道我的网站的?是否有新创建的 Cloudfront url 的注册表?

没有,但是亚马逊使用的地址范围是众所周知的,如果你去过用户代理识别的 GitHub 项目,你会看到:

TCP 端口扫描器,异步发送 SYN 数据包,在 5 分钟内扫描整个互联网。

也就是说,某个脚本小子正在探索您的网站。

您的真正问题应该是“我网站上的哪个控制器调用了此服务方法,以及哪个 URL 触发了该控制器?”但这是只有您才能回答的问题,因为只有您知道您网站的结构。

但是,还有一件事:

我发现如果用户不使用 Spring Security /login enpoint 进行身份验证,而是使用基本身份验证调用任何受保护的 url,Spring 会忽略身份验证处理程序。

身份验证只是保护您网站的第一步。 授权是第二个也是更重要的部分,看起来你还没有实现它。

【讨论】:

  • “身份验证只是保护您网站的第一步。授权是第二个也是更重要的部分,看起来您还没有实现。” 我有两者都已经。问题是在配置中我允许调用 http 基本身份验证。所以当我关闭它时,问题就解决了。 “不,但是亚马逊使用的地址范围是众所周知的” 好的,所以有人正在通过ip随机扫描所有网站。我以为有人想破坏我的应用程序。谢谢你的回答。
猜你喜欢
  • 2023-03-17
  • 2018-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-18
  • 2011-06-15
相关资源
最近更新 更多