Skip to content

Commit a2e426e

Browse files
committed
Merge branch '2857-markdown-plugin-descriptions' into develop
Issue #2857 PR #2905
2 parents a48c6d1 + 6d00688 commit a2e426e

File tree

6 files changed

+34
-7
lines changed

6 files changed

+34
-7
lines changed

monkey/agent_plugins/exploiters/hadoop/config-schema.json

-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
{
2-
"title": "Hadoop/Yarn Exploiter",
3-
"description": "Remote code execution on a Hadoop server with YARN and default settings. Logic based on https://github.com/vulhub/vulhub/tree/master/hadoop/unauthorized-yarn.",
42
"required": [
53
"target_ports",
64
"request_timeout",

monkey/agent_plugins/exploiters/hadoop/manifest.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ target_operating_systems:
99
title: Hadoop/YARN Exploiter
1010
description: >-
1111
Remote code execution on Hadoop server with YARN and default settings.
12-
Logic based on https://github.com/vulhub/vulhub/tree/master/hadoop/unauthorized-yarn.
12+
13+
Logic based on [POC in vulnhub](https://github.com/vulhub/vulhub/tree/master/hadoop/unauthorized-yarn).
1314
safe: true
1415
remediation_suggestion: >-
1516
Run Hadoop in secure mode ([add Kerberos authentication](
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import {DescriptionFieldProps} from '@rjsf/utils';
2+
import React from 'react';
3+
import remarkBreaks from 'remark-breaks';
4+
import ReactMarkdown from 'react-markdown';
5+
6+
7+
function MarkdownDescriptionTemplate(props: DescriptionFieldProps) {
8+
const {description, id} = props;
9+
return (
10+
<ReactMarkdown plugins={[remarkBreaks]}
11+
linkTarget={'_blank'}
12+
className={'markdown'}
13+
children={description}/>
14+
);
15+
}
16+
17+
export default MarkdownDescriptionTemplate;

monkey/monkey_island/cc/ui/src/components/configuration-components/PluginSelectorTemplate.tsx

+4-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {AdvancedMultiSelectHeader} from '../ui-components/AdvancedMultiSelect';
66
import {MasterCheckboxState} from '../ui-components/MasterCheckbox';
77
import {InfoPane, WarningType} from '../ui-components/InfoPane';
88
import {EXPLOITERS_PATH_PROPAGATION} from './PropagationConfig';
9+
import MarkdownDescriptionTemplate from './MarkdownDescriptionTemplate';
910

1011

1112
export default function PluginSelectorTemplate(props: ObjectFieldTemplateProps) {
@@ -53,9 +54,10 @@ export default function PluginSelectorTemplate(props: ObjectFieldTemplateProps)
5354
let uiSchema = _.cloneDeep(props.uiSchema);
5455
for(let pluginName of Object.keys(generateDefaultConfig())) {
5556
if(!props.formContext.selectedExploiters.has(pluginName)){
56-
uiSchema[pluginName] = {"ui:readonly": true};
57+
uiSchema[pluginName] = {"ui:readonly": true,
58+
'ui:DescriptionFieldTemplate': MarkdownDescriptionTemplate};
5759
} else {
58-
uiSchema[pluginName] = {};
60+
uiSchema[pluginName] = {'ui:DescriptionFieldTemplate': MarkdownDescriptionTemplate};
5961
}
6062
}
6163
props.formContext.setUiSchema(uiSchema, EXPLOITERS_PATH_PROPAGATION);

monkey/monkey_island/cc/ui/src/components/pages/ConfigurePage.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,16 @@ class ConfigurePageComponent extends AuthComponent {
102102
}
103103

104104
injectManifestIntoSchema = (manifest, schema) => {
105+
let pluginName = manifest['name'];
105106
let safe = manifest['safe'];
106107
let link = manifest['link_to_documentation'];
108+
let description = manifest['description'];
109+
let title = manifest['title'];
107110
let injectedSchema = _.cloneDeep(schema);
108-
_.set(injectedSchema, `${EXPLOITERS_SCHEMA_PATH_NEW}.properties.${manifest['name']}.safe`, safe);
109-
_.set(injectedSchema, `${EXPLOITERS_SCHEMA_PATH_NEW}.properties.${manifest['name']}.link`, link);
111+
_.set(injectedSchema, `${EXPLOITERS_SCHEMA_PATH_NEW}.properties.${pluginName}.safe`, safe);
112+
_.set(injectedSchema, `${EXPLOITERS_SCHEMA_PATH_NEW}.properties.${pluginName}.link`, link);
113+
_.set(injectedSchema, `${EXPLOITERS_SCHEMA_PATH_NEW}.properties.${pluginName}.description`, description);
114+
_.set(injectedSchema, `${EXPLOITERS_SCHEMA_PATH_NEW}.properties.${pluginName}.title`, title);
110115
return injectedSchema;
111116
}
112117

monkey/monkey_island/cc/ui/src/styles/pages/ConfigurationPage.scss

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
.markdown p {
2+
white-space: pre-wrap;
3+
}
4+
15
.config-nav .nav-item>a {
26
color: $black;
37
padding: 15px 10px 15px 10px;

0 commit comments

Comments
 (0)