Skip to content

Commit a0eeacc

Browse files
committed
Adjust listener to check header and body
1 parent 9ac63da commit a0eeacc

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

src/main/kotlin/ReflectListener.kt

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import org.parosproxy.paros.network.HttpHeader
66
import org.parosproxy.paros.network.HttpMessage
77
import org.parosproxy.paros.network.HttpSender
88
import org.zaproxy.zap.network.HttpSenderListener
9+
import java.net.URLDecoder
910
import java.time.LocalDateTime
1011
import java.time.format.DateTimeFormatter
1112

@@ -33,16 +34,32 @@ class ReflectListener(private val reflectPanel: ReflectPanel) : HttpSenderListen
3334
val params = mutableSetOf<HtmlParameter>()
3435
params.addAll(req.urlParams)
3536
params.addAll(req.formParams)
36-
val responseHeader = req.requestHeader.toString()
37+
val filteredParams = params.asSequence().filter { it.value.length >= 4 }
38+
val responseHeader = req.responseHeader.toString()
3739
val responseBody = req.responseBody.toString()
38-
val reflected = params.asSequence().filter { it.value.length >= 4 }
40+
val reflectedHeader = filteredParams
41+
.filter {
42+
responseHeader.contains(
43+
it.value,
44+
ignoreCase = true
45+
) || responseHeader.contains(
46+
URLDecoder.decode(it.value, "UTF-8"),
47+
ignoreCase = true
48+
)
49+
}.toSet()
50+
val reflectedBody = filteredParams
3951
.filter {
4052
responseBody.contains(
4153
it.value,
4254
ignoreCase = true
55+
) || responseBody.contains(
56+
URLDecoder.decode(it.value, "UTF-8"),
57+
ignoreCase = true
4358
)
4459
}.toSet()
45-
val reflectedTokens = reflected.map { it.value }.toSet().toList()
60+
val reflectedHeaderTokens = reflectedHeader.map { it.value }.toSet().toList()
61+
val reflectedBodyTokens = reflectedBody.map { it.value }.toSet().toList()
62+
val reflected = (reflectedHeader + reflectedBody).toSet().toList()
4663
if (reflected.isNotEmpty()) {
4764
val now = LocalDateTime.now()
4865
val dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
@@ -66,7 +83,7 @@ class ReflectListener(private val reflectPanel: ReflectPanel) : HttpSenderListen
6683
mimeType = req.responseHeader.getHeaderValues(HttpHeader.CONTENT_TYPE).toString(),
6784
protocol = req.requestHeader.uri.scheme,
6885
parameters = parameters,
69-
highlighter = ReflectHighlight(req, reflectedTokens)
86+
highlighter = ReflectHighlight(req, reflectedHeaderTokens, reflectedBodyTokens)
7087
)
7188
reflectPanel.addReflection(reqRes)
7289
}

0 commit comments

Comments
 (0)