-
-
Notifications
You must be signed in to change notification settings - Fork 727
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ascanrules: Path Traversal add details for dir match Alerts & reduce FPs #5824
base: main
Are you sure you want to change the base?
Conversation
This does not seem to address the FP reported in the referenced issue. |
addOns/ascanrules/src/main/java/org/zaproxy/zap/extension/ascanrules/PathTraversalScanRule.java
Outdated
Show resolved
Hide resolved
addOns/ascanrules/src/main/java/org/zaproxy/zap/extension/ascanrules/PathTraversalScanRule.java
Outdated
Show resolved
Hide resolved
...nrules/src/main/resources/org/zaproxy/zap/extension/ascanrules/resources/Messages.properties
Outdated
Show resolved
Hide resolved
No it simply provides further context. IMHO it will be rare for all 5 of the nix matches to happen. Do you want me to also exclude JS/CSS/Binary'ish because that's an option too which I could add to this PR. |
Not sure how rare is since JS chunks/libs tend to have lot of data, but we should not close the issue if it does not address it. That would be better to address the issue (though the evidence match done beforehand should have caught the reported case, if actually static content). |
Okay I'll make further changes. |
This rule doesn't seem to pre-check the response. I'll tackle that as well. |
851c5c1
to
21096ab
Compare
Addressed review, further pre-checks as discussed still coming 😁 |
6cdb014
to
a9c8485
Compare
Now w/ pre-checks. |
addOns/ascanrules/src/main/java/org/zaproxy/zap/extension/ascanrules/PathTraversalScanRule.java
Outdated
Show resolved
Hide resolved
a9c8485
to
aa5816d
Compare
aa5816d
to
a6d3a94
Compare
Great job, no security vulnerabilities found in this Pull Request |
I've rebased this to current. I believe all the previous feedback has been addressed. Please correct me if I'm wrong. |
a6d3a94
to
81216b4
Compare
Rebased current, and reviewed previous comments. As far as I see they're all addressed. |
9a8eaa0
to
81216b4
Compare
|
||
return false; | ||
} | ||
return DirNamesContentsMatcher.matchNixDirectories(msg.getResponseBody().toString()) == null |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be better if this was done separately for the OS that's being checked, there's no reason to skip because of Nix occurrences if we are checking Win.
addOns/ascanrules/src/main/java/org/zaproxy/zap/extension/ascanrules/PathTraversalScanRule.java
Outdated
Show resolved
Hide resolved
addOns/ascanrules/src/main/java/org/zaproxy/zap/extension/ascanrules/PathTraversalScanRule.java
Outdated
Show resolved
Hide resolved
Probably better to update the help to mention the resources that will be skipped. Although on second thought, maybe we should go with the precheck to start with. |
Do you mean split up the changes, or do the pre-check before the resource checks? |
Split up, not skip resources for now. |
Thanks for the review. It's good to get this moving again. |
81216b4
to
88554d8
Compare
Tweaked. Resource Checking that was trimmed# Note this was a diff after removal, so these actually need to be added if deemed necessary in the future
diff --git a/addOns/ascanrules/src/main/java/org/zaproxy/zap/extension/ascanrules/PathTraversalScanRule.java b/addOns/ascanrules/src/main/java/org/zaproxy/zap/extension/ascanrules/PathTraversalScanRule.java
index 32e85e330b..2392b1a806 100644
--- a/addOns/ascanrules/src/main/java/org/zaproxy/zap/extension/ascanrules/PathTraversalScanRule.java
+++ b/addOns/ascanrules/src/main/java/org/zaproxy/zap/extension/ascanrules/PathTraversalScanRule.java
@@ -579,13 +579,6 @@ public class PathTraversalScanRule extends AbstractAppParamPlugin
}
private static boolean isGoodCandidate(HttpMessage msg, Tech targetTech) {
- if (ResourceIdentificationUtils.isJavaScript(msg)
- || ResourceIdentificationUtils.isCss(msg)
- || ResourceIdentificationUtils.responseContainsControlChars(msg)) {
-
- return false;
- }
-
if (targetTech == Tech.Windows) {
return DirNamesContentsMatcher.matchWinDirectories(msg.getResponseBody().toString())
== null;
diff --git a/addOns/ascanrules/src/test/java/org/zaproxy/zap/extension/ascanrules/PathTraversalScanRuleUnitTest.java b/addOns/ascanrules/src/test/java/org/zaproxy/zap/extension/ascanrules/PathTraversalScanRuleUnitTest.java
index 51a7b7e2d5..a7e4a91766 100644
--- a/addOns/ascanrules/src/test/java/org/zaproxy/zap/extension/ascanrules/PathTraversalScanRuleUnitTest.java
+++ b/addOns/ascanrules/src/test/java/org/zaproxy/zap/extension/ascanrules/PathTraversalScanRuleUnitTest.java
@@ -389,30 +389,6 @@ class PathTraversalScanRuleUnitTest extends ActiveScannerTest<PathTraversalScanR
assertThat(alertsRaised, hasSize(0));
}
- @ParameterizedTest
- @ValueSource(strings = {"/styles.css", "/code.js"})
- void shouldSkipIfReqPathIsCssOrJs(String path) throws Exception {
- // Given
- rule.init(getHttpMessage(path + "?p=v"), parent);
- // When
- rule.scan();
- // Then
- assertThat(httpMessagesSent, hasSize(equalTo(0)));
- }
-
- @ParameterizedTest
- @CsvSource({"/styles/, text/css", "/code, text/javascript"})
- void shouldSkipIfResponseIsCssOfJs(String path, String contentType) throws Exception {
- // Given
- HttpMessage msg = getHttpMessage(path + "?p=v");
- msg.getResponseHeader().setHeader(HttpResponseHeader.CONTENT_TYPE, contentType);
- rule.init(msg, parent);
- // When
- rule.scan();
- // Then
- assertThat(httpMessagesSent, hasSize(equalTo(0)));
- }
-
@ParameterizedTest
@CsvSource({
// Windows will always happen before ignoring Linux, if only Linux pre-check matches
|
88554d8
to
f81ca84
Compare
fb7073e
to
4697d52
Compare
- CHANGELOG > Added change note. - Message.properties > Added key/value pair supporting the new Alert details. - PathTraversalScanRule > Updated to include Other Info on Alerts when applicable, and pre-check the original message response to reduce false positives. - PathTraversalScanRuleUnitTest > Updated to assert Other Info or lack thereof where applicable, also assure appropriate skipping due to pre-conditions. Signed-off-by: kingthorin <kingthorin@users.noreply.github.com>
4697d52
to
3567772
Compare
Overview
Related Issues
Checklist
./gradlew spotlessApply
for code formatting