У меня приложение Spring Boot, развернутое на ElasticBeanstalk. Я собираюсь начать бета-тестирование, поэтому пока еще не так много людей, которые знают URL приложения. Вчера я обнаружил в файле журнала, что кто-то вызвал метод loadByUsername
из моей реализации UserDetailsService
. Дело в том, что в это время нет другого журнала. Если этот пользователь попытается войти в систему, я найду информацию о вызове метода входа и Authentication Success/Fail Handler
. Поэтому я предполагаю, что этот пользователь использовал какую-то уязвимость Spring или Tomcat. Итак, есть 2 вопроса:
- как это возможно, что кто-то угадал мой URL (URL-адрес домена или CloudFront)? Люди используют ботов для сканирования URL CloudFront методом грубой силы?
- как этот человек вызвал метод 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 / enpoint входа для аутентификации, но вызывает любой защищенный URL с базовой аутентификацией, Spring пропускает обработчики аутентификации. Вот почему не было никаких других журналов.
В логах nginx я нашел звонок с этого User-Agent
: https://github.com/robertdavidgraham/masscan
. Итак, теперь единственный вопрос, как некоторые случайные люди знают о моем сайте? Есть ли реестр недавно созданных URL-адресов Cloudfront?