Basic Exploitation of SSO Access Tokens
Musings on basic access token exploitation & security checks on incorrectly/custom implemented SSO
Access & Bearer Tokens
Testing Security Functionality
function Get-Bearer
{
Param
(
[Parameter(Position = 0,
Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[String]
$TokenUri,
[Parameter(Position = 1)]
[String]
$Body = "",
[Parameter(Position = 2)]
[ValidateNotNullOrEmpty()]
[String]
$ContentType = "application/x-www-form-urlencoded"
)
try
{
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$method = [Microsoft.PowerShell.Commands.WebRequestMethod]::"POST"
$URI = [System.Uri]::new($TokenUri)
$hostName = ($URI.Host) -replace '^www\.'
$maximumRedirection = [System.Int32] 0
$headers = [System.Collections.Generic.Dictionary[string,string]]::new()
$headers.Add("Host", $hostName)
$headers.Add("Accept", "application/json")
$Body += "
"
$response = (Invoke-WebRequest -Method $method -Uri $URI -MaximumRedirection $maximumRedirection -Headers $headers -ContentType $contentType -Body $Body)
}
catch [System.SystemException]
{
Write-Error $_ -ErrorAction Stop
}
$bearerToken = ($response.Content | ConvertFrom-Json).access_token
return $bearerToken
}
function Get-AuthenticatedResource
{
Param
(
[Parameter(Position = 0,
Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[String]
$TargetUri,
[Parameter(Position = 1,
Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[String]
$Token,
[Parameter(Position = 3)]
[ValidateNotNullOrEmpty()]
[String]
$ContentType = "application/x-www-form-urlencoded"
)
try
{
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$method = [Microsoft.PowerShell.Commands.WebRequestMethod]::"GET"
$URI = [System.Uri]::new($TargetUri)
$maximumRedirection = [System.Int32] 1
$hostName = ($URI.Host) -replace '^www\.'
$headers = [System.Collections.Generic.Dictionary[string,string]]::new()
$headers.Add("Host", $hostName)
$headers.Add("Authorization", "Bearer " + $Token)
$response = (Invoke-WebRequest -Method $method -Uri $URI -MaximumRedirection $maximumRedirection -Headers $headers -ContentType $ContentType)
}
catch [System.SystemException]
{
Write-Error $_ -ErrorAction Stop
}
return $response
}Cache Overflows
Exploitation
Session Replay
Exploitation
IDOR
Exploitation
Conclusions & Defense
References
Last updated
