Spring MVC

Exploit

Télécharger bugged.tgz

Ce site est un exemple de site vulnérable aux injections JPQL. Après avoir lancé le site, vous pouvez y accéder sur localhost:8080/directory.

La vulnérabilité se trouve dans la classe UserService:

@Service
public class UserService {

    @PersistenceContext
    EntityManager em;

    @Transactional
    public List<User> searchByLastName(String lastName) {
        var q = "SELECT s FROM User s WHERE s.lastName = '"+lastName+"'";
        return em.createQuery(q,User.class).getResultList();
    }
}    

Cette classe est appelée dans le controlleur:

@Controller
public class DirectoryController {

        @Autowired
        UserService userService;

        @GetMapping("/directory")
        public String rectangleForm(){
            return "form";
        }

        @PostMapping("/directoryAction")
        public String rectangleFormProcess(@ModelAttribute("search") Search search, Model model){
            var answers = userService.searchByLastName(search.getLastName());
            model.addAttribute("answers", answers );
            return "results";
        }


        private static class Search {
            private String lastName;
            ...
        }
}    

Lancez le site. Votre but est de trouver le numéro de téléphone d'Arnaud Carayol dans ce site (sans regarder dans la base ou dans le fichier Application.java).