[security] fix resources not properly returning an error when they don't match the server in the URL
Prior to this fix certain resources were accessible even when their assigned server was not the same as the server in the URL. This causes the resource server relationship to not match the server variable present on the request. Due to this failed logic it was possible for users to access resources they should not have been able to access otherwise for some areas of the panel.
This commit is contained in:
parent
eecd550c48
commit
e8dcd30e0c
4 changed files with 96 additions and 72 deletions
|
@ -3,6 +3,7 @@
|
|||
use Illuminate\Support\Facades\Route;
|
||||
use Pterodactyl\Http\Middleware\RequireTwoFactorAuthentication;
|
||||
use Pterodactyl\Http\Middleware\Api\Client\Server\SubuserBelongsToServer;
|
||||
use Pterodactyl\Http\Middleware\Api\Client\Server\ResourceBelongsToServer;
|
||||
use Pterodactyl\Http\Middleware\Api\Client\Server\AuthenticateServerAccess;
|
||||
use Pterodactyl\Http\Middleware\Api\Client\Server\AllocationBelongsToServer;
|
||||
|
||||
|
@ -39,7 +40,7 @@ Route::group(['prefix' => '/account'], function () {
|
|||
| Endpoint: /api/client/servers/{server}
|
||||
|
|
||||
*/
|
||||
Route::group(['prefix' => '/servers/{server}', 'middleware' => [AuthenticateServerAccess::class]], function () {
|
||||
Route::group(['prefix' => '/servers/{server}', 'middleware' => [AuthenticateServerAccess::class, ResourceBelongsToServer::class]], function () {
|
||||
Route::get('/', 'Servers\ServerController@index')->name('api:client:server.view');
|
||||
Route::get('/websocket', 'Servers\WebsocketController')->name('api:client:server.ws');
|
||||
Route::get('/resources', 'Servers\ResourceUtilizationController')->name('api:client:server.resources');
|
||||
|
@ -83,7 +84,7 @@ Route::group(['prefix' => '/servers/{server}', 'middleware' => [AuthenticateServ
|
|||
Route::delete('/{schedule}/tasks/{task}', 'Servers\ScheduleTaskController@delete');
|
||||
});
|
||||
|
||||
Route::group(['prefix' => '/network', 'middleware' => [AllocationBelongsToServer::class]], function () {
|
||||
Route::group(['prefix' => '/network'], function () {
|
||||
Route::get('/allocations', 'Servers\NetworkAllocationController@index');
|
||||
Route::post('/allocations', 'Servers\NetworkAllocationController@store');
|
||||
Route::post('/allocations/{allocation}', 'Servers\NetworkAllocationController@update');
|
||||
|
@ -91,7 +92,7 @@ Route::group(['prefix' => '/servers/{server}', 'middleware' => [AuthenticateServ
|
|||
Route::delete('/allocations/{allocation}', 'Servers\NetworkAllocationController@delete');
|
||||
});
|
||||
|
||||
Route::group(['prefix' => '/users', 'middleware' => [SubuserBelongsToServer::class]], function () {
|
||||
Route::group(['prefix' => '/users'], function () {
|
||||
Route::get('/', 'Servers\SubuserController@index');
|
||||
Route::post('/', 'Servers\SubuserController@store');
|
||||
Route::get('/{user}', 'Servers\SubuserController@view');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue