Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -94,11 +94,16 @@ class SSRFAnalyser {
fun apply(): Solution<RestIndividual> {
LoggingUtil.getInfoLogger().info("Applying {}", SSRFAnalyser::class.simpleName)

individualsInSolution = getIndividualsWithStatus2XX()
val individualsWith2XX = getIndividualsWithStatus2XX()

// Note: In some cases with black-box, we may not be able to get HTTP 200
// while, there is a possibility for a SSRF. As a temporary fix, we are
// selecting individuals with HTTP 400 and 422 status codes.
val individualsWith4XX = getIndividualsWithStatus4XX()

individualsInSolution = individualsWith2XX + individualsWith4XX

if (individualsInSolution.isEmpty()) {
// FIXME: If the [individualsInSolution] is empty, we need to look for individuals
// with 400 and 422
return archive.extractSolution()
}

Expand All @@ -119,10 +124,6 @@ class SSRFAnalyser {
// execute
analyse()

// TODO: This is for development, remove it later
val individualsAfterExecution = getIndividualsWithStatus2XX()
log.debug("Total individuals after vulnerability analysis: {}", individualsAfterExecution.size)

return archive.extractSolution()
}

Expand Down Expand Up @@ -342,4 +343,10 @@ class SSRFAnalyser {
statusGroup = StatusGroup.G_2xx
)
}
private fun getIndividualsWithStatus4XX(): List<EvaluatedIndividual<RestIndividual>> {
return RestIndividualSelectorUtils.findIndividuals(
this.archive.extractSolution().individuals,
statusCodes = listOf(400, 422)
)
}
}