Made naming of issue methods in UI more consistent

This commit is contained in:
VakarisZ 2021-03-31 13:07:19 +03:00
parent a284467a1a
commit 54f1d0e49c
23 changed files with 120 additions and 120 deletions

View File

@ -18,38 +18,38 @@ import {faMinus} from '@fortawesome/free-solid-svg-icons/faMinus';
import guardicoreLogoImage from '../../images/guardicore-logo.png' import guardicoreLogoImage from '../../images/guardicore-logo.png'
import {faExclamationTriangle} from '@fortawesome/free-solid-svg-icons'; import {faExclamationTriangle} from '@fortawesome/free-solid-svg-icons';
import '../../styles/App.css'; import '../../styles/App.css';
import {generateSmbPasswordReport, generateSmbPthReport} from './security/issues/SmbIssue'; import {smbPasswordReport, smbPthReport} from './security/issues/SmbIssue';
import {Struts2IssueOverview, Struts2IssueReport} from './security/issues/Struts2Issue'; import {struts2IssueOverview, struts2IssueReport} from './security/issues/Struts2Issue';
import {WebLogicIssueOverview, WebLogicIssueReport} from './security/issues/WebLogicIssue'; import {webLogicIssueOverview, webLogicIssueReport} from './security/issues/WebLogicIssue';
import {HadoopIssueOverview, HadoopIssueReport} from './security/issues/HadoopIssue'; import {hadoopIssueOverview, hadoopIssueReport} from './security/issues/HadoopIssue';
import {MssqlIssueOverview, MssqlIssueReport} from './security/issues/MssqlIssue'; import {mssqlIssueOverview, mssqlIssueReport} from './security/issues/MssqlIssue';
import {DrupalIssueOverview, DrupalIssueReport} from './security/issues/DrupalIssue'; import {drupalIssueOverview, drupalIssueReport} from './security/issues/DrupalIssue';
import {VsftpdIssueOverview, VsftpdIssueReport} from './security/issues/VsftpdIssue'; import {vsftpdIssueOverview, vsftpdIssueReport} from './security/issues/VsftpdIssue';
import {generateWmiPasswordIssue, generateWmiPthIssue} from './security/issues/WmiIssue'; import {wmiPasswordIssueReport, wmiPthIssueReport} from './security/issues/WmiIssue';
import {generateSshKeysReport, ShhIssueReport, SshIssueOverview} from './security/issues/SshIssue'; import {sshKeysReport, shhIssueReport, sshIssueOverview} from './security/issues/SshIssue';
import {SambacryIssueOverview, SambacryIssueReport} from './security/issues/SambacryIssue'; import {sambacryIssueOverview, sambacryIssueReport} from './security/issues/SambacryIssue';
import {ElasticIssueOverview, ElasticIssueReport} from './security/issues/ElasticIssue'; import {elasticIssueOverview, elasticIssueReport} from './security/issues/ElasticIssue';
import {ShellShockIssueOverview, ShellShockIssueReport} from './security/issues/ShellShockIssue'; import {shellShockIssueOverview, shellShockIssueReport} from './security/issues/ShellShockIssue';
import {MS08_067IssueOverview, MS08_067IssueReport} from './security/issues/MS08_067Issue'; import {ms08_067IssueOverview, ms08_067IssueReport} from './security/issues/MS08_067Issue';
import { import {
crossSegmentIssueOverview, crossSegmentIssueOverview,
generateCrossSegmentIssue, crossSegmentIssueReport,
generateIslandCrossSegmentIssue islandCrossSegmentIssueReport
} from './security/issues/CrossSegmentIssue'; } from './security/issues/CrossSegmentIssue';
import { import {
generateSharedCredsDomainIssue, generateSharedCredsIssue, generateSharedLocalAdminsIssue, sharedCredsDomainIssueReport, sharedCredsIssueReport, sharedLocalAdminsIssueReport,
sharedAdminsDomainIssueOverview, sharedAdminsDomainIssueOverview,
sharedPasswordsIssueOverview sharedPasswordsIssueOverview
} from './security/issues/SharedPasswordsIssue'; } from './security/issues/SharedPasswordsIssue';
import {generateTunnelIssue, generateTunnelIssueOverview} from './security/issues/TunnelIssue'; import {tunnelIssueReport, tunnelIssueOverview} from './security/issues/TunnelIssue';
import {StolenCredsIssueOverview} from './security/issues/StolenCredsIssue'; import {stolenCredsIssueOverview} from './security/issues/StolenCredsIssue';
import {WeakPasswordIssueOverview} from './security/issues/WeakPasswordIssue'; import {weakPasswordIssueOverview} from './security/issues/WeakPasswordIssue';
import {AzurePasswordIssueOverview, AzurePasswordIssueReport} from './security/issues/AzurePasswordIssue'; import {azurePasswordIssueOverview, azurePasswordIssueReport} from './security/issues/AzurePasswordIssue';
import {generateStrongUsersOnCritIssue} from './security/issues/StrongUsersOnCritIssue'; import {strongUsersOnCritIssueReport} from './security/issues/StrongUsersOnCritIssue';
import { import {
ZerologonIssueOverview, zerologonIssueOverview,
ZerologonIssueReport, zerologonIssueReport,
ZerologonOverviewWithFailedPassResetWarning zerologonOverviewWithFailedPassResetWarning
} from './security/issues/ZerologonIssue'; } from './security/issues/ZerologonIssue';
@ -76,123 +76,123 @@ class ReportPageComponent extends AuthComponent {
{ {
'SmbExploiter': { 'SmbExploiter': {
[this.issueContentTypes.REPORT]: { [this.issueContentTypes.REPORT]: {
[this.credentialTypes.PASSWORD]: generateSmbPasswordReport, [this.credentialTypes.PASSWORD]: smbPasswordReport,
[this.credentialTypes.HASH]: generateSmbPthReport [this.credentialTypes.HASH]: smbPthReport
}, },
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'Struts2Exploiter': { 'Struts2Exploiter': {
[this.issueContentTypes.OVERVIEW]: Struts2IssueOverview, [this.issueContentTypes.OVERVIEW]: struts2IssueOverview,
[this.issueContentTypes.REPORT]: Struts2IssueReport, [this.issueContentTypes.REPORT]: struts2IssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'WebLogicExploiter': { 'WebLogicExploiter': {
[this.issueContentTypes.OVERVIEW]: WebLogicIssueOverview, [this.issueContentTypes.OVERVIEW]: webLogicIssueOverview,
[this.issueContentTypes.REPORT]: WebLogicIssueReport, [this.issueContentTypes.REPORT]: webLogicIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'HadoopExploiter': { 'HadoopExploiter': {
[this.issueContentTypes.OVERVIEW]: HadoopIssueOverview, [this.issueContentTypes.OVERVIEW]: hadoopIssueOverview,
[this.issueContentTypes.REPORT]: HadoopIssueReport, [this.issueContentTypes.REPORT]: hadoopIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'MSSQLExploiter': { 'MSSQLExploiter': {
[this.issueContentTypes.OVERVIEW]: MssqlIssueOverview, [this.issueContentTypes.OVERVIEW]: mssqlIssueOverview,
[this.issueContentTypes.REPORT]: MssqlIssueReport, [this.issueContentTypes.REPORT]: mssqlIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'DrupalExploiter': { 'DrupalExploiter': {
[this.issueContentTypes.OVERVIEW]: DrupalIssueOverview, [this.issueContentTypes.OVERVIEW]: drupalIssueOverview,
[this.issueContentTypes.REPORT]: DrupalIssueReport, [this.issueContentTypes.REPORT]: drupalIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'VSFTPDExploiter': { 'VSFTPDExploiter': {
[this.issueContentTypes.OVERVIEW]: VsftpdIssueOverview, [this.issueContentTypes.OVERVIEW]: vsftpdIssueOverview,
[this.issueContentTypes.REPORT]: VsftpdIssueReport, [this.issueContentTypes.REPORT]: vsftpdIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'WmiExploiter': { 'WmiExploiter': {
[this.issueContentTypes.REPORT]: { [this.issueContentTypes.REPORT]: {
[this.credentialTypes.PASSWORD]: generateWmiPasswordIssue, [this.credentialTypes.PASSWORD]: wmiPasswordIssueReport,
[this.credentialTypes.HASH]: generateWmiPthIssue [this.credentialTypes.HASH]: wmiPthIssueReport
}, },
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'SSHExploiter': { 'SSHExploiter': {
[this.issueContentTypes.OVERVIEW]: SshIssueOverview, [this.issueContentTypes.OVERVIEW]: sshIssueOverview,
[this.issueContentTypes.REPORT]: { [this.issueContentTypes.REPORT]: {
[this.credentialTypes.PASSWORD]: ShhIssueReport, [this.credentialTypes.PASSWORD]: shhIssueReport,
[this.credentialTypes.KEY]: generateSshKeysReport [this.credentialTypes.KEY]: sshKeysReport
}, },
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'SambaCryExploiter': { 'SambaCryExploiter': {
[this.issueContentTypes.OVERVIEW]: SambacryIssueOverview, [this.issueContentTypes.OVERVIEW]: sambacryIssueOverview,
[this.issueContentTypes.REPORT]: SambacryIssueReport, [this.issueContentTypes.REPORT]: sambacryIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'ElasticGroovyExploiter': { 'ElasticGroovyExploiter': {
[this.issueContentTypes.OVERVIEW]: ElasticIssueOverview, [this.issueContentTypes.OVERVIEW]: elasticIssueOverview,
[this.issueContentTypes.REPORT]: ElasticIssueReport, [this.issueContentTypes.REPORT]: elasticIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'ShellShockExploiter': { 'ShellShockExploiter': {
[this.issueContentTypes.OVERVIEW]: ShellShockIssueOverview, [this.issueContentTypes.OVERVIEW]: shellShockIssueOverview,
[this.issueContentTypes.REPORT]: ShellShockIssueReport, [this.issueContentTypes.REPORT]: shellShockIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'Ms08_067_Exploiter': { 'Ms08_067_Exploiter': {
[this.issueContentTypes.OVERVIEW]: MS08_067IssueOverview, [this.issueContentTypes.OVERVIEW]: ms08_067IssueOverview,
[this.issueContentTypes.REPORT]: MS08_067IssueReport, [this.issueContentTypes.REPORT]: ms08_067IssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'ZerologonExploiter': { 'ZerologonExploiter': {
[this.issueContentTypes.OVERVIEW]: ZerologonIssueOverview, [this.issueContentTypes.OVERVIEW]: zerologonIssueOverview,
[this.issueContentTypes.REPORT]: ZerologonIssueReport, [this.issueContentTypes.REPORT]: zerologonIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'zerologon_pass_restore_failed': { 'zerologon_pass_restore_failed': {
[this.issueContentTypes.OVERVIEW]: ZerologonOverviewWithFailedPassResetWarning, [this.issueContentTypes.OVERVIEW]: zerologonOverviewWithFailedPassResetWarning,
}, },
'island_cross_segment': { 'island_cross_segment': {
[this.issueContentTypes.OVERVIEW]: crossSegmentIssueOverview, [this.issueContentTypes.OVERVIEW]: crossSegmentIssueOverview,
[this.issueContentTypes.REPORT]: generateIslandCrossSegmentIssue, [this.issueContentTypes.REPORT]: islandCrossSegmentIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.WARNING [this.issueContentTypes.TYPE]: this.issueTypes.WARNING
}, },
'tunnel': { 'tunnel': {
[this.issueContentTypes.OVERVIEW]: generateTunnelIssueOverview, [this.issueContentTypes.OVERVIEW]: tunnelIssueOverview,
[this.issueContentTypes.REPORT]: generateTunnelIssue, [this.issueContentTypes.REPORT]: tunnelIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.WARNING [this.issueContentTypes.TYPE]: this.issueTypes.WARNING
}, },
'shared_passwords': { 'shared_passwords': {
[this.issueContentTypes.OVERVIEW]: sharedPasswordsIssueOverview, [this.issueContentTypes.OVERVIEW]: sharedPasswordsIssueOverview,
[this.issueContentTypes.REPORT]: generateSharedCredsIssue, [this.issueContentTypes.REPORT]: sharedCredsIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.WARNING [this.issueContentTypes.TYPE]: this.issueTypes.WARNING
}, },
'shared_admins_domain': { 'shared_admins_domain': {
[this.issueContentTypes.OVERVIEW]: sharedAdminsDomainIssueOverview, [this.issueContentTypes.OVERVIEW]: sharedAdminsDomainIssueOverview,
[this.issueContentTypes.REPORT]: generateSharedLocalAdminsIssue, [this.issueContentTypes.REPORT]: sharedLocalAdminsIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.WARNING [this.issueContentTypes.TYPE]: this.issueTypes.WARNING
}, },
'shared_passwords_domain': { 'shared_passwords_domain': {
[this.issueContentTypes.REPORT]: generateSharedCredsDomainIssue, [this.issueContentTypes.REPORT]: sharedCredsDomainIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.WARNING [this.issueContentTypes.TYPE]: this.issueTypes.WARNING
}, },
'strong_users_on_crit': { 'strong_users_on_crit': {
[this.issueContentTypes.REPORT]: generateStrongUsersOnCritIssue, [this.issueContentTypes.REPORT]: strongUsersOnCritIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'azure_password': { 'azure_password': {
[this.issueContentTypes.OVERVIEW]: AzurePasswordIssueOverview, [this.issueContentTypes.OVERVIEW]: azurePasswordIssueOverview,
[this.issueContentTypes.REPORT]: AzurePasswordIssueReport, [this.issueContentTypes.REPORT]: azurePasswordIssueReport,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'weak_password': { 'weak_password': {
[this.issueContentTypes.OVERVIEW]: WeakPasswordIssueOverview, [this.issueContentTypes.OVERVIEW]: weakPasswordIssueOverview,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
}, },
'stolen_creds': { 'stolen_creds': {
[this.issueContentTypes.OVERVIEW]: StolenCredsIssueOverview, [this.issueContentTypes.OVERVIEW]: stolenCredsIssueOverview,
[this.issueContentTypes.TYPE]: this.issueTypes.DANGER [this.issueContentTypes.TYPE]: this.issueTypes.DANGER
} }
} }
@ -412,7 +412,7 @@ class ReportPageComponent extends AuthComponent {
<div> <div>
The Monkey uncovered the following set of segmentation issues: The Monkey uncovered the following set of segmentation issues:
<ul> <ul>
{this.state.report.overview.cross_segment_issues.map(x => generateCrossSegmentIssue(x))} {this.state.report.overview.cross_segment_issues.map(x => crossSegmentIssueReport(x))}
</ul> </ul>
</div> </div>
</div> </div>

View File

@ -1,13 +1,13 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function AzurePasswordIssueOverview() { export function azurePasswordIssueOverview() {
return (<li>Azure machines expose plaintext passwords. (<a return (<li>Azure machines expose plaintext passwords. (<a
href="https://www.guardicore.com/2018/03/recovering-plaintext-passwords-azure/" href="https://www.guardicore.com/2018/03/recovering-plaintext-passwords-azure/"
>More info</a>)</li>) >More info</a>)</li>)
} }
export function AzurePasswordIssueReport(issue) { export function azurePasswordIssueReport(issue) {
return ( return (
<> <>
Delete VM Access plugin configuration files. Delete VM Access plugin configuration files.

View File

@ -7,7 +7,7 @@ export function crossSegmentIssueOverview() {
different segments are able to communicate.</li>) different segments are able to communicate.</li>)
} }
export function generateCrossSegmentIssue(crossSegmentIssue) { export function crossSegmentIssueReport(crossSegmentIssue) {
let crossSegmentIssueOverview = 'Communication possible from ' let crossSegmentIssueOverview = 'Communication possible from '
+ `${crossSegmentIssue['source_subnet']} to ${crossSegmentIssue['target_subnet']}`; + `${crossSegmentIssue['source_subnet']} to ${crossSegmentIssue['target_subnet']}`;
@ -17,7 +17,7 @@ export function generateCrossSegmentIssue(crossSegmentIssue) {
<CollapsibleWellComponent> <CollapsibleWellComponent>
<ul className='cross-segment-issues'> <ul className='cross-segment-issues'>
{crossSegmentIssue['issues'].map( {crossSegmentIssue['issues'].map(
issue => generateCrossSegmentIssueListItem(issue) issue => getCrossSegmentIssueListItem(issue)
)} )}
</ul> </ul>
</CollapsibleWellComponent> </CollapsibleWellComponent>
@ -25,15 +25,15 @@ export function generateCrossSegmentIssue(crossSegmentIssue) {
); );
} }
export function generateCrossSegmentIssueListItem(issue) { export function getCrossSegmentIssueListItem(issue) {
if (issue['is_self']) { if (issue['is_self']) {
return generateCrossSegmentSingleHostMessage(issue); return getCrossSegmentSingleHostMessage(issue);
} }
return generateCrossSegmentMultiHostMessage(issue); return getCrossSegmentMultiHostMessage(issue);
} }
export function generateCrossSegmentSingleHostMessage(issue) { export function getCrossSegmentSingleHostMessage(issue) {
return ( return (
<li key={issue['hostname']}> <li key={issue['hostname']}>
{`Machine ${issue['hostname']} has both ips: ${issue['source']} and ${issue['target']}`} {`Machine ${issue['hostname']} has both ips: ${issue['source']} and ${issue['target']}`}
@ -41,20 +41,20 @@ export function generateCrossSegmentSingleHostMessage(issue) {
); );
} }
export function generateCrossSegmentMultiHostMessage(issue) { export function getCrossSegmentMultiHostMessage(issue) {
return ( return (
<li key={issue['source'] + issue['target']}> <li key={issue['source'] + issue['target']}>
IP {issue['source']} ({issue['hostname']}) was able to communicate with IP {issue['source']} ({issue['hostname']}) was able to communicate with
IP {issue['target']} using: IP {issue['target']} using:
<ul> <ul>
{issue['icmp'] && <li key='icmp'>ICMP</li>} {issue['icmp'] && <li key='icmp'>ICMP</li>}
{this.generateCrossSegmentServiceListItems(issue)} {getCrossSegmentServiceListItems(issue)}
</ul> </ul>
</li> </li>
); );
} }
export function generateCrossSegmentServiceListItems(issue) { export function getCrossSegmentServiceListItems(issue) {
let service_list_items = []; let service_list_items = [];
for (const [service, info] of Object.entries(issue['services'])) { for (const [service, info] of Object.entries(issue['services'])) {
@ -68,7 +68,7 @@ export function generateCrossSegmentServiceListItems(issue) {
return service_list_items; return service_list_items;
} }
export function generateIslandCrossSegmentIssue(issue) { export function islandCrossSegmentIssueReport(issue) {
return ( return (
<> <>
Segment your network and make sure there is no communication between machines from different segments. Segment your network and make sure there is no communication between machines from different segments.

View File

@ -1,12 +1,12 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function DrupalIssueOverview() { export function drupalIssueOverview() {
return (<li>Drupal server/s are vulnerable to <a return (<li>Drupal server/s are vulnerable to <a
href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6340">CVE-2019-6340</a>.</li>) href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6340">CVE-2019-6340</a>.</li>)
} }
export function DrupalIssueReport(issue) { export function drupalIssueReport(issue) {
return ( return (
<> <>
Upgrade Drupal server to versions 8.5.11, 8.6.10, or later. Upgrade Drupal server to versions 8.5.11, 8.6.10, or later.

View File

@ -1,13 +1,13 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function ElasticIssueOverview() { export function elasticIssueOverview() {
return (<li>Elasticsearch servers are vulnerable to <a return (<li>Elasticsearch servers are vulnerable to <a
href="https://www.cvedetails.com/cve/cve-2015-1427">CVE-2015-1427</a>. href="https://www.cvedetails.com/cve/cve-2015-1427">CVE-2015-1427</a>.
</li>) </li>)
} }
export function ElasticIssueReport(issue) { export function elasticIssueReport(issue) {
return ( return (
<> <>
Update your Elastic Search server to version 1.4.3 and up. Update your Elastic Search server to version 1.4.3 and up.

View File

@ -1,11 +1,11 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function HadoopIssueOverview() { export function hadoopIssueOverview() {
return (<li>Hadoop/Yarn servers are vulnerable to remote code execution.</li>) return (<li>Hadoop/Yarn servers are vulnerable to remote code execution.</li>)
} }
export function HadoopIssueReport(issue) { export function hadoopIssueReport(issue) {
return ( return (
<> <>
Run Hadoop in secure mode (<a Run Hadoop in secure mode (<a

View File

@ -1,13 +1,13 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function MS08_067IssueOverview() { export function ms08_067IssueOverview() {
return (<li>Machines are vulnerable to Conficker (<a return (<li>Machines are vulnerable to Conficker (<a
href="https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2008/ms08-067" href="https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2008/ms08-067"
>MS08-067</a>). </li>) >MS08-067</a>). </li>)
} }
export function MS08_067IssueReport(issue) { export function ms08_067IssueReport(issue) {
return ( return (
<> <>
Install the latest Windows updates or upgrade to a newer operating system. Install the latest Windows updates or upgrade to a newer operating system.

View File

@ -1,11 +1,11 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function MssqlIssueOverview() { export function mssqlIssueOverview() {
return (<li>MS-SQL servers are vulnerable to remote code execution via xp_cmdshell command.</li>) return (<li>MS-SQL servers are vulnerable to remote code execution via xp_cmdshell command.</li>)
} }
export function MssqlIssueReport(issue) { export function mssqlIssueReport(issue) {
return ( return (
<> <>
Disable the xp_cmdshell option. Disable the xp_cmdshell option.

View File

@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
export function PthCriticalServiceIssueOverview() { export function pthCriticalServiceIssueOverview() {
return (<li>Mimikatz found login credentials of a user who has admin access to a server defined as return (<li>Mimikatz found login credentials of a user who has admin access to a server defined as
critical.</li>) critical.</li>)
} }

View File

@ -1,13 +1,13 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function SambacryIssueOverview() { export function sambacryIssueOverview() {
return (<li>Samba servers are vulnerable to SambaCry (<a return (<li>Samba servers are vulnerable to SambaCry (<a
href="https://www.samba.org/samba/security/CVE-2017-7494.html" href="https://www.samba.org/samba/security/CVE-2017-7494.html"
>CVE-2017-7494</a>).</li>) >CVE-2017-7494</a>).</li>)
} }
export function SambacryIssueReport(issue) { export function sambacryIssueReport(issue) {
return ( return (
<> <>
Change <span className="badge badge-success">{issue.username}</span>'s password to a complex one-use password Change <span className="badge badge-success">{issue.username}</span>'s password to a complex one-use password

View File

@ -11,7 +11,7 @@ export function sharedAdminsDomainIssueOverview() {
administrator.</li>) administrator.</li>)
} }
export function generateSharedCredsDomainIssue(issue) { export function sharedCredsDomainIssueReport(issue) {
return ( return (
<> <>
Some domain users are sharing passwords, this should be fixed by changing passwords. Some domain users are sharing passwords, this should be fixed by changing passwords.
@ -23,7 +23,7 @@ export function generateSharedCredsDomainIssue(issue) {
); );
} }
export function generateSharedCredsIssue(issue) { export function sharedCredsIssueReport(issue) {
return ( return (
<> <>
Some users are sharing passwords, this should be fixed by changing passwords. Some users are sharing passwords, this should be fixed by changing passwords.
@ -35,7 +35,7 @@ export function generateSharedCredsIssue(issue) {
); );
} }
export function generateSharedLocalAdminsIssue(issue) { export function sharedLocalAdminsIssueReport(issue) {
return ( return (
<> <>
Make sure the right administrator accounts are managing the right machines, and that there isnt an Make sure the right administrator accounts are managing the right machines, and that there isnt an

View File

@ -1,18 +1,18 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function ShellShockIssueOverview() { export function shellShockIssueOverview() {
return (<li>Machines are vulnerable to Shellshock (<a return (<li>Machines are vulnerable to Shellshock (<a
href="https://www.cvedetails.com/cve/CVE-2014-6271">CVE-2014-6271</a>). href="https://www.cvedetails.com/cve/CVE-2014-6271">CVE-2014-6271</a>).
</li>) </li>)
} }
function generateShellshockPathListBadges(paths) { function getShellshockPathListBadges(paths) {
return paths.map(path => <span className="badge badge-warning" style={{margin: '2px'}} key={path}>{path}</span>); return paths.map(path => <span className="badge badge-warning" style={{margin: '2px'}} key={path}>{path}</span>);
} }
export function ShellShockIssueReport(issue) { export function shellShockIssueReport(issue) {
return ( return (
<> <>
Update your Bash to a ShellShock-patched version. Update your Bash to a ShellShock-patched version.
@ -23,7 +23,7 @@ export function ShellShockIssueReport(issue) {
<br/> <br/>
The attack was made possible because the HTTP server running on TCP port <span The attack was made possible because the HTTP server running on TCP port <span
className="badge badge-info">{issue.port}</span> was vulnerable to a shell injection attack on the className="badge badge-info">{issue.port}</span> was vulnerable to a shell injection attack on the
paths: {generateShellshockPathListBadges(issue.paths)}. paths: {getShellshockPathListBadges(issue.paths)}.
</CollapsibleWellComponent> </CollapsibleWellComponent>
</> </>
); );

View File

@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function generateSmbPasswordReport(issue) { export function smbPasswordReport(issue) {
return ( return (
<> <>
Change <span className="badge badge-success">{issue.username}</span>'s password to a complex one-use password Change <span className="badge badge-success">{issue.username}</span>'s password to a complex one-use password
@ -18,7 +18,7 @@ export function generateSmbPasswordReport(issue) {
); );
} }
export function generateSmbPthReport(issue) { export function smbPthReport(issue) {
return ( return (
<> <>
Change <span className="badge badge-success">{issue.username}</span>'s password to a complex one-use password Change <span className="badge badge-success">{issue.username}</span>'s password to a complex one-use password

View File

@ -1,11 +1,11 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function SshIssueOverview() { export function sshIssueOverview() {
return (<li>Stolen SSH keys are used to exploit other machines.</li>) return (<li>Stolen SSH keys are used to exploit other machines.</li>)
} }
export function ShhIssueReport(issue) { export function shhIssueReport(issue) {
return ( return (
<> <>
Change <span className="badge badge-success">{issue.username}</span>'s password to a complex one-use password Change <span className="badge badge-success">{issue.username}</span>'s password to a complex one-use password
@ -22,7 +22,7 @@ export function ShhIssueReport(issue) {
); );
} }
export function generateSshKeysReport(issue) { export function sshKeysReport(issue) {
return ( return (
<> <>
Protect <span className="badge badge-success">{issue.ssh_key}</span> private key with a pass phrase. Protect <span className="badge badge-success">{issue.ssh_key}</span> private key with a pass phrase.

View File

@ -1,5 +1,5 @@
import React from 'react'; import React from 'react';
export function StolenCredsIssueOverview() { export function stolenCredsIssueOverview() {
return (<li>Stolen credentials are used to exploit other machines.</li>) return (<li>Stolen credentials are used to exploit other machines.</li>)
} }

View File

@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function generateStrongUsersOnCritIssue(issue) { export function strongUsersOnCritIssueReport(issue) {
return ( return (
<> <>
This critical machine is open to attacks via strong users with access to it. This critical machine is open to attacks via strong users with access to it.

View File

@ -1,13 +1,13 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function Struts2IssueOverview() { export function struts2IssueOverview() {
return (<li>Struts2 servers are vulnerable to remote code execution. (<a return (<li>Struts2 servers are vulnerable to remote code execution. (<a
href="https://cwiki.apache.org/confluence/display/WW/S2-045"> href="https://cwiki.apache.org/confluence/display/WW/S2-045">
CVE-2017-5638</a>)</li>) CVE-2017-5638</a>)</li>)
} }
export function Struts2IssueReport(issue) { export function struts2IssueReport(issue) {
return ( return (
<> <>
Upgrade Struts2 to version 2.3.32 or 2.5.10.1 or any later versions. Upgrade Struts2 to version 2.3.32 or 2.5.10.1 or any later versions.

View File

@ -1,11 +1,11 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function generateTunnelIssueOverview(){ export function tunnelIssueOverview(){
return (<li key="tunnel">Weak segmentation - Machines were able to communicate over unused ports.</li>) return (<li key="tunnel">Weak segmentation - Machines were able to communicate over unused ports.</li>)
} }
export function generateTunnelIssue(issue) { export function tunnelIssueReport(issue) {
return ( return (
<> <>
Use micro-segmentation policies to disable communication other than the required. Use micro-segmentation policies to disable communication other than the required.

View File

@ -1,13 +1,13 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function VsftpdIssueOverview() { export function vsftpdIssueOverview() {
return (<li>VSFTPD is vulnerable to <a return (<li>VSFTPD is vulnerable to <a
href="https://www.rapid7.com/db/modules/exploit/unix/ftp/vsftpd_234_backdoor">CVE-2011-2523</a>. href="https://www.rapid7.com/db/modules/exploit/unix/ftp/vsftpd_234_backdoor">CVE-2011-2523</a>.
</li>) </li>)
} }
export function VsftpdIssueReport(issue) { export function vsftpdIssueReport(issue) {
return ( return (
<> <>
Update your VSFTPD server to the latest version vsftpd-3.0.3. Update your VSFTPD server to the latest version vsftpd-3.0.3.

View File

@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
export function WeakPasswordIssueOverview() { export function weakPasswordIssueOverview() {
return (<li>Machines are accessible using passwords supplied by the user during the Monkeys return (<li>Machines are accessible using passwords supplied by the user during the Monkeys
configuration.</li>) configuration.</li>)
} }

View File

@ -1,11 +1,11 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function WebLogicIssueOverview() { export function webLogicIssueOverview() {
return (<li>Oracle WebLogic servers are susceptible to a remote code execution vulnerability.</li>) return (<li>Oracle WebLogic servers are susceptible to a remote code execution vulnerability.</li>)
} }
export function WebLogicIssueReport(issue) { export function webLogicIssueReport(issue) {
return ( return (
<> <>
Update Oracle WebLogic server to the latest supported version. Update Oracle WebLogic server to the latest supported version.

View File

@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import CollapsibleWellComponent from '../CollapsibleWell'; import CollapsibleWellComponent from '../CollapsibleWell';
export function generateWmiPasswordIssue(issue) { export function wmiPasswordIssueReport(issue) {
return ( return (
<> <>
Change <span className="badge badge-success">{issue.username}</span>'s password to a complex one-use password Change <span className="badge badge-success">{issue.username}</span>'s password to a complex one-use password
@ -18,7 +18,7 @@ export function generateWmiPasswordIssue(issue) {
); );
} }
export function generateWmiPthIssue(issue) { export function wmiPthIssueReport(issue) {
return ( return (
<> <>
Change <span className="badge badge-success">{issue.username}</span>'s password to a complex one-use password Change <span className="badge badge-success">{issue.username}</span>'s password to a complex one-use password

View File

@ -3,7 +3,7 @@ import CollapsibleWellComponent from '../CollapsibleWell';
import WarningIcon from '../../../ui-components/WarningIcon'; import WarningIcon from '../../../ui-components/WarningIcon';
import {Button} from 'react-bootstrap'; import {Button} from 'react-bootstrap';
export function ZerologonIssueOverview() { export function zerologonIssueOverview() {
return ( return (
<li> <li>
Some Windows domain controllers are vulnerable to 'Zerologon' ( Some Windows domain controllers are vulnerable to 'Zerologon' (
@ -17,8 +17,8 @@ export function ZerologonIssueOverview() {
) )
} }
export function ZerologonOverviewWithFailedPassResetWarning() { export function zerologonOverviewWithFailedPassResetWarning() {
let overview = [ZerologonIssueOverview()]; let overview = [zerologonIssueOverview()];
overview.push( overview.push(
<li> <li>
<span className={'zero-logon-overview-pass-restore-failed'}> <span className={'zero-logon-overview-pass-restore-failed'}>
@ -36,7 +36,7 @@ export function ZerologonOverviewWithFailedPassResetWarning() {
return overview; return overview;
} }
export function ZerologonIssueReport(issue) { export function zerologonIssueReport(issue) {
return ( return (
<> <>
Install Windows security updates. Install Windows security updates.