在AWS上怀疑loadByUsername调用

时间:2019-05-06 10:58:23

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

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

  1. 有人怎么可能猜出我的网址(域或CloudFront网址)? pople是否使用机器人通过蛮力方法扫描CloudFront网址?
  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进行身份验证,而是调用任何受保护的URL和基本身份验证,Spring省略了身份验证处理程序。这就是为什么没有其他日志的原因。 在nginx日志中,我发现来自此User-Agent的呼叫:https://github.com/robertdavidgraham/masscan。因此,现在唯一的问题是一些随机人士如何了解我的网站?是否有新创建的Cloudfront网址的注册表?

1 个答案:

答案 0 :(得分:1)

  

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

否,但是亚马逊使用的地址范围是众所周知的,如果您进入了用户代理标识的GitHub项目,则会看到以下内容:

  

TCP端口扫描程序,异步发送SYN数据包,在5分钟内扫描整个Internet。

换句话说,某个脚本小子正在探测您的网站。

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

但是,还有一件事:

  

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

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