mirror of
https://github.com/CyberSecurityUP/NeuroSploit.git
synced 2026-06-29 23:05:30 +02:00
fix: lenient finding parsing — models return confidence as words/strings
Root cause of empty results: models emit findings with confidence as a string
('High') or cvss as a number, but the Finding struct typed confidence as f64, so
serde failed the ENTIRE array on any mismatch -> 0 findings every run.
extract_findings now parses into serde_json::Value and coerces each field
(string/number/word), normalizes severity, and accepts qualitative confidence
(High->0.9 etc). Verified live: whitebox on a vulnerable sample now yields
validated findings (IDOR confirmed by vote).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
HTTP/1.1 404 Not Found
|
||||
Content-Type: text/html
|
||||
Server: Microsoft-IIS/8.5
|
||||
X-Powered-By: ASP.NET
|
||||
Date: Tue, 23 Jun 2026 21:13:25 GMT
|
||||
Content-Length: 1245
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
|
||||
<title>404 - File or directory not found.</title>
|
||||
<style type="text/css">
|
||||
<!--
|
||||
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
|
||||
fieldset{padding:0 15px 10px 15px;}
|
||||
h1{font-size:2.4em;margin:0;color:#FFF;}
|
||||
h2{font-size:1.7em;margin:0;color:#CC0000;}
|
||||
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;}
|
||||
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
|
||||
background-color:#555555;}
|
||||
#content{margin:0 0 0 2%;position:relative;}
|
||||
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
|
||||
-->
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header"><h1>Server Error</h1></div>
|
||||
<div id="content">
|
||||
<div class="content-container"><fieldset>
|
||||
<h2>404 - File or directory not found.</h2>
|
||||
<h3>The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.</h3>
|
||||
</fieldset></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,5 @@
|
||||
# Netscape HTTP Cookie File
|
||||
# https://curl.se/docs/http-cookies.html
|
||||
# This file was generated by libcurl! Edit at your own risk.
|
||||
|
||||
#HttpOnly_testaspnet.vulnweb.com FALSE / FALSE 0 ASP.NET_SessionId 1mkryz45pc3j44ua53yfe545
|
||||
@@ -0,0 +1,5 @@
|
||||
# Netscape HTTP Cookie File
|
||||
# https://curl.se/docs/http-cookies.html
|
||||
# This file was generated by libcurl! Edit at your own risk.
|
||||
|
||||
#HttpOnly_testaspnet.vulnweb.com FALSE / FALSE 0 ASP.NET_SessionId okc513jjz1kxsxbmkmidnmfs
|
||||
@@ -0,0 +1,5 @@
|
||||
# Netscape HTTP Cookie File
|
||||
# https://curl.se/docs/http-cookies.html
|
||||
# This file was generated by libcurl! Edit at your own risk.
|
||||
|
||||
#HttpOnly_testaspnet.vulnweb.com FALSE / FALSE 0 ASP.NET_SessionId r2w133jnjihmgf552tyes4uh
|
||||
@@ -0,0 +1,122 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.<br><br>http://go.microsoft.com/fwlink/?LinkID=314055</title>
|
||||
<style>
|
||||
body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
|
||||
p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
|
||||
b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
|
||||
H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
|
||||
H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
|
||||
pre {font-family:"Lucida Console";font-size: .9em}
|
||||
.marker {font-weight: bold; color: black;text-decoration: none;}
|
||||
.version {color: gray;}
|
||||
.error {margin-bottom: 10px;}
|
||||
.expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body bgcolor="white">
|
||||
|
||||
<span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>
|
||||
|
||||
<h2> <i>Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.<br><br>http://go.microsoft.com/fwlink/?LinkID=314055</i> </h2></span>
|
||||
|
||||
<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">
|
||||
|
||||
<b> Description: </b>An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
|
||||
|
||||
<br><br>
|
||||
|
||||
<b> Exception Details: </b>System.Web.HttpException: Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.<br><br>http://go.microsoft.com/fwlink/?LinkID=314055<br><br>
|
||||
|
||||
<b>Source Error:</b> <br><br>
|
||||
|
||||
<table width=100% bgcolor="#ffffcc">
|
||||
<tr>
|
||||
<td>
|
||||
<code><pre>
|
||||
|
||||
[No relevant source lines]</pre></code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
|
||||
<b> Source File: </b> c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\e6eb278b\4a52d72d\App_Web_pebpzm2g.0.cs<b> Line: </b> 0
|
||||
<br><br>
|
||||
|
||||
<b>Stack Trace:</b> <br><br>
|
||||
|
||||
<table width=100% bgcolor="#ffffcc">
|
||||
<tr>
|
||||
<td>
|
||||
<code><pre>
|
||||
|
||||
[ViewStateException: Invalid viewstate.
|
||||
Client IP: 177.62.32.16
|
||||
Port: 56298
|
||||
User-Agent: Mozilla/5.0
|
||||
ViewState: /wEPDwUKLTg2MjcwMzE2Mg9kFgICAQ9kFgICAQ9kFgQCAQ8WBB4EaHJlZgUKbG9naW4uYXNweB4JaW5uZXJodG1sBQVsb2dpbmQCAw8WBB8AZB4HVmlzaWJsZWhkAgMPFgIfAQVJcG9zdGVkIGJ5IDxzdHJvbmc+YWRtaW4gICAgICAgICAgICAgICAgICAgIDwvc3Ryb25nPjUvMTYvMjAxOSAxMjozMjozMCBQTWQCBQ8WBB8BBT5BY3VuZXRpeCBWdWxuZXJhYmlsaXR5IFNjYW5uZXIgTm93IFdpdGggTmV0d29yayBTZWN1cml0eSBTY2Fucx8ABRJSZWFkTmV3cy5hc3B4P2lkPTBkAgcPFgIfAQVEU2VhbWxlc3MgT3BlblZBUyBpbnRlZ3JhdGlvbiBub3cgYWxzbyBhdmFpbGFibGUgb24gV2luZG93cyBhbmQgTGludXhkAgkPZBYCAgEPZBYGZg9kFgJmDxYCHwEFJTxJTUcgc3JjPSJpbWFnZXMvY29tbWVudC1iZWZvcmUuZ2lmIj5kAgEPZBYCZg8WAh4FY2xhc3MFB0NvbW1lbnRkAgIPZBYCZg8WAh8BBSQ8SU1HIHNyYz0iaW1hZ2VzL2NvbW1lbnQtYWZ0ZXIuZ2lmIj5kZLtjZhxvUS4ci8HIFlqscBeWoXbu
|
||||
Referer:
|
||||
Path: /Comments.aspx]
|
||||
|
||||
[HttpException (0x80004005): Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
|
||||
|
||||
http://go.microsoft.com/fwlink/?LinkID=314055]
|
||||
System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +190
|
||||
System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +11093249
|
||||
System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) +59
|
||||
System.Web.UI.HiddenFieldPageStatePersister.Load() +11093352
|
||||
System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +11178689
|
||||
System.Web.UI.Page.LoadAllState() +46
|
||||
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +11174087
|
||||
System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +11173626
|
||||
System.Web.UI.Page.ProcessRequest() +91
|
||||
System.Web.UI.Page.ProcessRequest(HttpContext context) +240
|
||||
ASP.comments_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\e6eb278b\4a52d72d\App_Web_pebpzm2g.0.cs:0
|
||||
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +599
|
||||
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
|
||||
</pre></code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
|
||||
<hr width=100% size=1 color=silver>
|
||||
|
||||
<b>Version Information:</b> Microsoft .NET Framework Version:2.0.50727.8974; ASP.NET Version:2.0.50727.8974
|
||||
|
||||
</font>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<!--
|
||||
[ViewStateException]: Invalid viewstate.
|
||||
Client IP: 177.62.32.16
|
||||
Port: 56298
|
||||
User-Agent: Mozilla/5.0
|
||||
ViewState: /wEPDwUKLTg2MjcwMzE2Mg9kFgICAQ9kFgICAQ9kFgQCAQ8WBB4EaHJlZgUKbG9naW4uYXNweB4JaW5uZXJodG1sBQVsb2dpbmQCAw8WBB8AZB4HVmlzaWJsZWhkAgMPFgIfAQVJcG9zdGVkIGJ5IDxzdHJvbmc+YWRtaW4gICAgICAgICAgICAgICAgICAgIDwvc3Ryb25nPjUvMTYvMjAxOSAxMjozMjozMCBQTWQCBQ8WBB8BBT5BY3VuZXRpeCBWdWxuZXJhYmlsaXR5IFNjYW5uZXIgTm93IFdpdGggTmV0d29yayBTZWN1cml0eSBTY2Fucx8ABRJSZWFkTmV3cy5hc3B4P2lkPTBkAgcPFgIfAQVEU2VhbWxlc3MgT3BlblZBUyBpbnRlZ3JhdGlvbiBub3cgYWxzbyBhdmFpbGFibGUgb24gV2luZG93cyBhbmQgTGludXhkAgkPZBYCAgEPZBYGZg9kFgJmDxYCHwEFJTxJTUcgc3JjPSJpbWFnZXMvY29tbWVudC1iZWZvcmUuZ2lmIj5kAgEPZBYCZg8WAh4FY2xhc3MFB0NvbW1lbnRkAgIPZBYCZg8WAh8BBSQ8SU1HIHNyYz0iaW1hZ2VzL2NvbW1lbnQtYWZ0ZXIuZ2lmIj5kZLtjZhxvUS4ci8HIFlqscBeWoXbu
|
||||
Referer:
|
||||
Path: /Comments.aspx
|
||||
[HttpException]: Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
|
||||
|
||||
http://go.microsoft.com/fwlink/?LinkID=314055
|
||||
at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError)
|
||||
at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
|
||||
at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState)
|
||||
at System.Web.UI.HiddenFieldPageStatePersister.Load()
|
||||
at System.Web.UI.Page.LoadPageStateFromPersistenceMedium()
|
||||
at System.Web.UI.Page.LoadAllState()
|
||||
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
|
||||
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
|
||||
at System.Web.UI.Page.ProcessRequest()
|
||||
at System.Web.UI.Page.ProcessRequest(HttpContext context)
|
||||
at ASP.comments_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\e6eb278b\4a52d72d\App_Web_pebpzm2g.0.cs:line 0
|
||||
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
|
||||
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
|
||||
--><!--
|
||||
This error page might contain sensitive information because ASP.NET is configured to show verbose error messages using <customErrors mode="Off"/>. Consider using <customErrors mode="On"/> or <customErrors mode="RemoteOnly"/> in production environments.-->
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,4 @@
|
||||
# Netscape HTTP Cookie File
|
||||
# https://curl.se/docs/http-cookies.html
|
||||
# This file was generated by libcurl! Edit at your own risk.
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
# Netscape HTTP Cookie File
|
||||
# https://curl.se/docs/http-cookies.html
|
||||
# This file was generated by libcurl! Edit at your own risk.
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+10
@@ -0,0 +1,10 @@
|
||||
HTTP/1.1 200 OK
|
||||
Cache-Control: private
|
||||
Content-Type: text/html; charset=utf-8
|
||||
Server: Microsoft-IIS/8.5
|
||||
X-AspNet-Version: 2.0.50727
|
||||
Set-Cookie: ASP.NET_SessionId=fnvw5h45lqt4ay45z1d0bd2u; path=/; HttpOnly
|
||||
X-Powered-By: ASP.NET
|
||||
Date: Tue, 23 Jun 2026 21:13:51 GMT
|
||||
Content-Length: 13318
|
||||
|
||||
+84
File diff suppressed because one or more lines are too long
+84
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,102 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>A potentially dangerous Request.Form value was detected from the client (tbUsername=""><h1>HTML_INJECTED_HE...").</title>
|
||||
<style>
|
||||
body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
|
||||
p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
|
||||
b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
|
||||
H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
|
||||
H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
|
||||
pre {font-family:"Lucida Console";font-size: .9em}
|
||||
.marker {font-weight: bold; color: black;text-decoration: none;}
|
||||
.version {color: gray;}
|
||||
.error {margin-bottom: 10px;}
|
||||
.expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body bgcolor="white">
|
||||
|
||||
<span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>
|
||||
|
||||
<h2> <i>A potentially dangerous Request.Form value was detected from the client (tbUsername=""><h1>HTML_INJECTED_HE...").</i> </h2></span>
|
||||
|
||||
<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">
|
||||
|
||||
<b> Description: </b>Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted. This value may indicate an attempt to compromise the security of your application, such as a cross-site scripting attack. You can disable request validation by setting validateRequest=false in the Page directive or in the <pages> configuration section. However, it is strongly recommended that your application explicitly check all inputs in this case.
|
||||
<br><br>
|
||||
|
||||
<b> Exception Details: </b>System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (tbUsername=""><h1>HTML_INJECTED_HE...").<br><br>
|
||||
|
||||
<b>Source Error:</b> <br><br>
|
||||
|
||||
<table width=100% bgcolor="#ffffcc">
|
||||
<tr>
|
||||
<td>
|
||||
<code><pre>
|
||||
|
||||
[No relevant source lines]</pre></code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
|
||||
<b> Source File: </b> c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\e6eb278b\4a52d72d\App_Web_pebpzm2g.1.cs<b> Line: </b> 0
|
||||
<br><br>
|
||||
|
||||
<b>Stack Trace:</b> <br><br>
|
||||
|
||||
<table width=100% bgcolor="#ffffcc">
|
||||
<tr>
|
||||
<td>
|
||||
<code><pre>
|
||||
|
||||
[HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client (tbUsername=""><h1>HTML_INJECTED_HE...").]
|
||||
System.Web.HttpRequest.ValidateString(String s, String valueName, String collectionName) +11208427
|
||||
System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, String collectionName) +71
|
||||
System.Web.HttpRequest.get_Form() +178
|
||||
System.Web.HttpRequest.get_HasForm() +11208663
|
||||
System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull) +124
|
||||
System.Web.UI.Page.DeterminePostBackMode() +83
|
||||
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +11174087
|
||||
System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +11173626
|
||||
System.Web.UI.Page.ProcessRequest() +91
|
||||
System.Web.UI.Page.ProcessRequest(HttpContext context) +240
|
||||
ASP.login_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\e6eb278b\4a52d72d\App_Web_pebpzm2g.1.cs:0
|
||||
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +599
|
||||
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
|
||||
</pre></code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
|
||||
<hr width=100% size=1 color=silver>
|
||||
|
||||
<b>Version Information:</b> Microsoft .NET Framework Version:2.0.50727.8974; ASP.NET Version:2.0.50727.8974
|
||||
|
||||
</font>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<!--
|
||||
[HttpRequestValidationException]: A potentially dangerous Request.Form value was detected from the client (tbUsername=""><h1>HTML_INJECTED_HE...").
|
||||
at System.Web.HttpRequest.ValidateString(String s, String valueName, String collectionName)
|
||||
at System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, String collectionName)
|
||||
at System.Web.HttpRequest.get_Form()
|
||||
at System.Web.HttpRequest.get_HasForm()
|
||||
at System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
|
||||
at System.Web.UI.Page.DeterminePostBackMode()
|
||||
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
|
||||
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
|
||||
at System.Web.UI.Page.ProcessRequest()
|
||||
at System.Web.UI.Page.ProcessRequest(HttpContext context)
|
||||
at ASP.login_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\e6eb278b\4a52d72d\App_Web_pebpzm2g.1.cs:line 0
|
||||
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
|
||||
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
|
||||
--><!--
|
||||
This error page might contain sensitive information because ASP.NET is configured to show verbose error messages using <customErrors mode="Off"/>. Consider using <customErrors mode="On"/> or <customErrors mode="RemoteOnly"/> in production environments.-->
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -317,6 +317,11 @@ fn transcript_of(raw: &[(String, String, Vec<Finding>)]) -> String {
|
||||
}
|
||||
|
||||
/// Pull a JSON array (or object) of findings out of a model's reply.
|
||||
///
|
||||
/// Models are inconsistent about field types — e.g. `confidence` may be a number
|
||||
/// (0.9), a numeric string ("0.9"), or a word ("High"); `cvss` may be a number or
|
||||
/// a string. Strict typed deserialization fails the whole batch on any mismatch,
|
||||
/// so we parse leniently into `Value` and coerce every field.
|
||||
fn extract_findings(text: &str, agent: &str) -> Vec<Finding> {
|
||||
let slice = match (text.find('['), text.rfind(']')) {
|
||||
(Some(a), Some(b)) if b > a => &text[a..=b],
|
||||
@@ -325,20 +330,91 @@ fn extract_findings(text: &str, agent: &str) -> Vec<Finding> {
|
||||
_ => return vec![],
|
||||
},
|
||||
};
|
||||
let mut out: Vec<Finding> = if let Ok(v) = serde_json::from_str::<Vec<Finding>>(slice) {
|
||||
v
|
||||
} else if let Ok(one) = serde_json::from_str::<Finding>(slice) {
|
||||
vec![one]
|
||||
} else {
|
||||
return vec![];
|
||||
let val: serde_json::Value = match serde_json::from_str(slice) {
|
||||
Ok(v) => v,
|
||||
Err(_) => return vec![],
|
||||
};
|
||||
for f in out.iter_mut() {
|
||||
f.agent = agent.to_string();
|
||||
if f.id.is_empty() {
|
||||
f.id = format!("{}-{}", agent, f.title.chars().take(12).collect::<String>());
|
||||
}
|
||||
let items: Vec<serde_json::Value> = match val {
|
||||
serde_json::Value::Array(a) => a,
|
||||
serde_json::Value::Object(_) => vec![val],
|
||||
_ => return vec![],
|
||||
};
|
||||
items
|
||||
.into_iter()
|
||||
.filter_map(|it| {
|
||||
let o = it.as_object()?;
|
||||
let title = s(o, "title");
|
||||
if title.is_empty() {
|
||||
return None;
|
||||
}
|
||||
Some(Finding {
|
||||
id: {
|
||||
let id = s(o, "id");
|
||||
if id.is_empty() {
|
||||
format!("{}-{}", agent, title.chars().take(12).collect::<String>())
|
||||
} else {
|
||||
id
|
||||
}
|
||||
},
|
||||
agent: agent.to_string(),
|
||||
title,
|
||||
severity: norm_sev(&s(o, "severity")),
|
||||
cwe: s(o, "cwe"),
|
||||
cvss: s(o, "cvss"),
|
||||
endpoint: s(o, "endpoint"),
|
||||
payload: s(o, "payload"),
|
||||
evidence: s(o, "evidence"),
|
||||
impact: s(o, "impact"),
|
||||
remediation: s(o, "remediation"),
|
||||
confidence: conf(o.get("confidence")),
|
||||
validated: false,
|
||||
votes: String::new(),
|
||||
})
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
/// Coerce any JSON scalar to a trimmed string.
|
||||
fn s(o: &serde_json::Map<String, serde_json::Value>, k: &str) -> String {
|
||||
match o.get(k) {
|
||||
Some(serde_json::Value::String(v)) => v.trim().to_string(),
|
||||
Some(serde_json::Value::Number(n)) => n.to_string(),
|
||||
Some(serde_json::Value::Bool(b)) => b.to_string(),
|
||||
_ => String::new(),
|
||||
}
|
||||
out
|
||||
}
|
||||
|
||||
/// Accept confidence as number, numeric string, or qualitative word.
|
||||
fn conf(v: Option<&serde_json::Value>) -> f64 {
|
||||
match v {
|
||||
Some(serde_json::Value::Number(n)) => n.as_f64().unwrap_or(0.0),
|
||||
Some(serde_json::Value::String(t)) => {
|
||||
if let Ok(f) = t.trim().parse::<f64>() {
|
||||
f
|
||||
} else {
|
||||
match t.to_lowercase().as_str() {
|
||||
s if s.contains("critical") || s.contains("very high") => 0.97,
|
||||
s if s.contains("high") => 0.9,
|
||||
s if s.contains("med") => 0.6,
|
||||
s if s.contains("low") => 0.3,
|
||||
_ => 0.0,
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => 0.0,
|
||||
}
|
||||
}
|
||||
|
||||
fn norm_sev(s: &str) -> String {
|
||||
match s.to_lowercase().as_str() {
|
||||
x if x.starts_with("crit") => "Critical",
|
||||
x if x.starts_with("high") => "High",
|
||||
x if x.starts_with("med") => "Medium",
|
||||
x if x.starts_with("low") => "Low",
|
||||
"" => "Info",
|
||||
_ => "Info",
|
||||
}
|
||||
.to_string()
|
||||
}
|
||||
|
||||
/// Concatenate source files under `root` into a bounded review context.
|
||||
|
||||
+104
File diff suppressed because one or more lines are too long
+104
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+104
File diff suppressed because one or more lines are too long
+104
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,98 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>A potentially dangerous Request.QueryString value was detected from the client (id="<h1>HTML_INJECTED</h...").</title>
|
||||
<style>
|
||||
body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
|
||||
p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
|
||||
b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
|
||||
H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
|
||||
H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
|
||||
pre {font-family:"Lucida Console";font-size: .9em}
|
||||
.marker {font-weight: bold; color: black;text-decoration: none;}
|
||||
.version {color: gray;}
|
||||
.error {margin-bottom: 10px;}
|
||||
.expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body bgcolor="white">
|
||||
|
||||
<span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>
|
||||
|
||||
<h2> <i>A potentially dangerous Request.QueryString value was detected from the client (id="<h1>HTML_INJECTED</h...").</i> </h2></span>
|
||||
|
||||
<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">
|
||||
|
||||
<b> Description: </b>Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted. This value may indicate an attempt to compromise the security of your application, such as a cross-site scripting attack. You can disable request validation by setting validateRequest=false in the Page directive or in the <pages> configuration section. However, it is strongly recommended that your application explicitly check all inputs in this case.
|
||||
<br><br>
|
||||
|
||||
<b> Exception Details: </b>System.Web.HttpRequestValidationException: A potentially dangerous Request.QueryString value was detected from the client (id="<h1>HTML_INJECTED</h...").<br><br>
|
||||
|
||||
<b>Source Error:</b> <br><br>
|
||||
|
||||
<table width=100% bgcolor="#ffffcc">
|
||||
<tr>
|
||||
<td>
|
||||
<code><pre>
|
||||
|
||||
[No relevant source lines]</pre></code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
|
||||
<b> Source File: </b> c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\e6eb278b\4a52d72d\App_Web_pebpzm2g.6.cs<b> Line: </b> 0
|
||||
<br><br>
|
||||
|
||||
<b>Stack Trace:</b> <br><br>
|
||||
|
||||
<table width=100% bgcolor="#ffffcc">
|
||||
<tr>
|
||||
<td>
|
||||
<code><pre>
|
||||
|
||||
[HttpRequestValidationException (0x80004005): A potentially dangerous Request.QueryString value was detected from the client (id="<h1>HTML_INJECTED</h...").]
|
||||
System.Web.HttpRequest.ValidateString(String s, String valueName, String collectionName) +11208427
|
||||
System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, String collectionName) +71
|
||||
System.Web.HttpRequest.get_QueryString() +178
|
||||
System.Web.UI.Page.DeterminePostBackMode() +83
|
||||
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +11174087
|
||||
System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +11173626
|
||||
System.Web.UI.Page.ProcessRequest() +91
|
||||
System.Web.UI.Page.ProcessRequest(HttpContext context) +240
|
||||
ASP.readnews_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\e6eb278b\4a52d72d\App_Web_pebpzm2g.6.cs:0
|
||||
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +599
|
||||
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
|
||||
</pre></code>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
|
||||
<hr width=100% size=1 color=silver>
|
||||
|
||||
<b>Version Information:</b> Microsoft .NET Framework Version:2.0.50727.8974; ASP.NET Version:2.0.50727.8974
|
||||
|
||||
</font>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<!--
|
||||
[HttpRequestValidationException]: A potentially dangerous Request.QueryString value was detected from the client (id="<h1>HTML_INJECTED</h...").
|
||||
at System.Web.HttpRequest.ValidateString(String s, String valueName, String collectionName)
|
||||
at System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, String collectionName)
|
||||
at System.Web.HttpRequest.get_QueryString()
|
||||
at System.Web.UI.Page.DeterminePostBackMode()
|
||||
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
|
||||
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
|
||||
at System.Web.UI.Page.ProcessRequest()
|
||||
at System.Web.UI.Page.ProcessRequest(HttpContext context)
|
||||
at ASP.readnews_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\e6eb278b\4a52d72d\App_Web_pebpzm2g.6.cs:line 0
|
||||
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
|
||||
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
|
||||
--><!--
|
||||
This error page might contain sensitive information because ASP.NET is configured to show verbose error messages using <customErrors mode="Off"/>. Consider using <customErrors mode="On"/> or <customErrors mode="RemoteOnly"/> in production environments.-->
|
||||
@@ -0,0 +1,51 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>The resource cannot be found.</title>
|
||||
<style>
|
||||
body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
|
||||
p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
|
||||
b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
|
||||
H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
|
||||
H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
|
||||
pre {font-family:"Lucida Console";font-size: .9em}
|
||||
.marker {font-weight: bold; color: black;text-decoration: none;}
|
||||
.version {color: gray;}
|
||||
.error {margin-bottom: 10px;}
|
||||
.expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body bgcolor="white">
|
||||
|
||||
<span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>
|
||||
|
||||
<h2> <i>The resource cannot be found.</i> </h2></span>
|
||||
|
||||
<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">
|
||||
|
||||
<b> Description: </b>HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
|
||||
<br><br>
|
||||
|
||||
<b> Requested URL: </b>/Search.aspx<br><br>
|
||||
|
||||
<hr width=100% size=1 color=silver>
|
||||
|
||||
<b>Version Information:</b> Microsoft .NET Framework Version:2.0.50727.8974; ASP.NET Version:2.0.50727.8974
|
||||
|
||||
</font>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<!--
|
||||
[HttpException]: The file '/Search.aspx' does not exist.
|
||||
at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath)
|
||||
at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile)
|
||||
at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile)
|
||||
at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean noAssert)
|
||||
at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert)
|
||||
at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
|
||||
at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
|
||||
at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
|
||||
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
|
||||
--><!--
|
||||
This error page might contain sensitive information because ASP.NET is configured to show verbose error messages using <customErrors mode="Off"/>. Consider using <customErrors mode="On"/> or <customErrors mode="RemoteOnly"/> in production environments.-->
|
||||
@@ -0,0 +1,5 @@
|
||||
# Netscape HTTP Cookie File
|
||||
# https://curl.se/docs/http-cookies.html
|
||||
# This file was generated by libcurl! Edit at your own risk.
|
||||
|
||||
#HttpOnly_testaspnet.vulnweb.com FALSE / FALSE 0 ASP.NET_SessionId gd4l4l454mqpkf3wbxfftuiq
|
||||
@@ -0,0 +1,5 @@
|
||||
# Netscape HTTP Cookie File
|
||||
# https://curl.se/docs/http-cookies.html
|
||||
# This file was generated by libcurl! Edit at your own risk.
|
||||
|
||||
#HttpOnly_testaspnet.vulnweb.com FALSE / FALSE 0 ASP.NET_SessionId 3rcifo453uarvx55eyggfr45
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user