Git Product home page Git Product logo

pwndoc-ng's Introduction

PwnDoc-ng

PwnDoc-ng is a pentest reporting application making it simple and easy to write your findings and generate a customizable Docx report. It is based on original fork of PwnDoc work by yeln4ts. The main goal is to have more time to Pwn and less time to Doc by mutualizing data like vulnerabilities between users.

Example Template Generated document
t1 t2

What's New ?

PwnDoc was originaly manage by its creator. After months of absence, an increase of issues and pending pull requests, we decided to open this maintained fork.

This fork includes pending PR and new feature such as:

  • Fix build error due to Node version
  • Fix LFI/RCE vulnerability
  • Tiptap 2.0 WYSIWYG
  • Collaborative editing
  • Table support
  • New filters
  • Reviewer variable
  • Remediation complexity color by @Syzik
  • Mongo-data volume from @noraj
  • Minor bumps ...

Documentation

Features

  • Multiple Language support
  • Multiple Data support
  • Great Customization
    • Manage reusable Audit and Vulnerability Data
    • Create Custom Sections
    • Add custom fields to Vulnerabilities
  • Vulnerabilities Management
  • Multi-User reporting
  • Docx Report Generation
  • Docx Template customization

Demos

Multi-User reporting

Shared Audit demo gif

Finding edition

Finding edit demo gif

Vulnerability management workflow

Create and update demo gif

Contribute

Developing with docker-compose

docker-compose -f docker-compose-dev.yml up

Feel free to contribute :).

pwndoc-ng's People

Contributors

dependabot[bot] avatar dfktvs2 avatar juliangr avatar klimmykhno avatar noraj avatar owalid avatar r0lh avatar randshell avatar robertdoc avatar serizao avatar shumerez avatar syzik avatar thez3ro avatar xample33 avatar zeecka avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pwndoc-ng's Issues

Markdown support

It would be nice to have alternative Markdown support for findings fields rather than HTML. Using HTML or Markdown could be set up globally in the admin area.

Markdown is meant to be transpilled as HTML and markdown renderers can accepts html tags and forwards them so storing markdown would be backward compatible with vulns storing HTML. Generating the report would be Markdown -> HTML -> OOXML then. So in fact we can keep markdown only while being backward compatible.

As most pentesters use markdown, that github issues/comment are using markdown, HackerOne issue are using markdown, etc. having markdown here would facilitate a lot.

related to pwndoc/pwndoc#105 issued on on Mar 23, 2021

Unable to Login Anymore

This has happened to me a couple times now. Previously, I just rebuilt the entire thing because I didn't have Pwndoc really populated yet. My VM crashed and now I cant get back to a login screen. So far I have tried:

Restarting Docker
docker-compose down
docker-compose up
docker-compose up -d --build

When I go to 127.0.0.1:8443 it just never connects. For a brief moment it said token error in the address bar but only saw it once.

Since I am a noob I am sure I am missing something silly. I did back up the DB but I would like to figure out what the hell I am doing wrong to not be able to login again.

I have found this pwndoc-backend error:
servers: Map(1) {
pwndoc-backend | 'mongo-pwndoc:27017' => ServerDescription {
pwndoc-backend | address: 'mongo-pwndoc:27017',
pwndoc-backend | error: Error: connect ECONNREFUSED 172.20.0.2:27017
pwndoc-backend | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16) {
pwndoc-backend | name: 'MongoNetworkError',
pwndoc-backend | [Symbol(mongoErrorContextSymbol)]: {}
2023-03-29_17-08-12 pdoc

Batch import for vulnerability categories (custom data)

Vulnerability categories (custom data) could be mass imported from already existing categorization systems.

So it would be nice to allow import from a basic list (either file with one per line or separated by comas).

For example, one could download VRT JSON file create a little script to extract VRT category then craft the expected file format and import it rather than having to create them all manually or playing with mongodb.

An admin account cannot self-approve their own audit.

Sometimes the Leader (admin role) needs to create an audit after his own Pentest process. With the current version, admin
A's audit can only be approved by another admin, but cannot approve his/her own audit.

Hope you can help me fix the code so that Admin A can approve admin A's own audit.

image
image

Audit templates and Default report templates

When define a new Audit Template, I can choose a default template for the languages I have set up:
image

But when creating a new report, the template field is not predefined with the chosen template:
image
and:
image

Breaking the table

Erm, so I found a way of breaking tables (unintendedly).

I added a table, but I can't recall the order (I may say rows when I mean columns and vis versa).

I added a table, deleted a row or two and added a column or two.

How things look in pwndoc-ng:

image

How they look in the Word doc:

image

*** EDIT ***

It isn't nothing to do with deleting or adding things. It is the fact the data in the tables included <>.

Example:

image

Result:

image

condition on existing vulnerability severity

Hi everyone,

I am looking for a way to check if vulnerabilities of a certain severity exist and only execute/print a line once, if true.
So the idea is to have a title i.e. 'Vulnerabilities with risk level High' and list the vulns itself in a subheadings afterwards. So if I don't have vulns of a particular risk level, the title should not be printed.
I tried it with

{#findings}
{#cvss.baseSeverity == 'High'}
4.2. Vulnerabilities with Risk Level {cvss.baseSeverity}
{/cvss.baseSeverity == 'High'}
{/findings}

but it printed the title multiple times (as often as vulns with a particular severity exists.

The 'uniqFindings' filter from the Issue 413 also didn't work as it only checks for unique names..

Is there any build in function which is doing the job?
Am I missing something?

cross-category sorting

Hi everyone,

I am trying to sort the vulnerabilities only by the CVSS Score (cross-category).

For example:
I have two categories for vulnerabilities, 'General' and 'Web Application'.
Sometimes I need both categories in a report, as some vulns can be applied to both, web apps and network.
My problem is, if I have for example two vulns of 'Web Application' (high and medium) and one of 'General' (medium), but the medium vuln of the last one is higher rated regarding the CVSS Score as the medium vuln of the 'Web Application', it won't be sorted right in the final report.
In PwnDoc:
image

Thats how it looks like in the report:
image

It seems like PwnDoc sorts the vulns based on the audit type and afterward by the CVSS Score.
Is there a way to sort all the vulns only by the CVSS Score?

Scope table not listing items

Describe the bug
When reloading audit, scope items shows as [Object object].

To Reproduce
Steps to reproduce the behavior:

  1. Create an audit
  2. Add data in "scope" field
  3. Reload page
  4. See error

Expected behavior
Items filled in "scope" field should display their name instead of [Object object].

Screenshots
image

Environment (please complete the following information):

  • Tested on Firefox / Chrome

Additional context
Scope name display well in network view. It use to work well in previous version of pwndoc-ng.

References missing when merging

TL;DR: When merging 2 vulnerabilities from different languages, in one of the languages, the references disappear:

1.- The vulnerability in spanish:
image

2.- The vulnerability in english:

image

AFTER MERGING the two vulnerabilities...
image

1.- The vulnerability in spanish still has the references:
image

2.- but the vulnerability in english has no longer references (!):

image

Nested formatting

With the recent changes allowing for tables and highlighting. I was thinking, the ability to use nested formatting could be helpful.

An example, you may use a code block to show an HTTP response, within that response you may want to highlight a section.

Empty tables bug

When creating tables in the report, an empty table will result into a corrupted word file.
Moreover, cell merging works on the frontend only.

image

image

cc @RobertDoc & @nitek29

Breaking the template

Bit of an odd one, I have found having the following within the PROOFS section of a vulnerability with both instances of https://example.com/ set to be a hyperlink, causes the generated Word document to fail to open.

-H $'Sec-Fetch-Dest: empty' -H $'Referer: https://example.com/'
$'https://example.com/'

Looking at the logs for the backend I see the following:

pwndoc-ng-backend | <w:p><w:r><w:t xml:space="preserve">-H $&apos;Sec-Fetch-Dest: empty&apos; -H $&apos;Referer: </w:t></w:r><w:r><w:rPr><w:rStyle w:val="Hyperlink"/></w:rPr><w:t xml:space="preserve"><w:r><w:fldChar w:fldCharType="begin"/></w:r><w:r><w:instrText xml:space="preserve"> HYPERLINK https://example.com </w:instrText></w:r><w:r><w:fldChar w:fldCharType="separate"/></w:r><w:r><w:rPr><w:rStyle w:val="Hyperlink"/></w:rPr><w:t> https://example.com|-|https://example.com}_|link|_}</w:t></w:r><w:r><w:t xml:space="preserve">&apos;</w:t></w:r></w:p><w:p><w:r><w:t xml:space="preserve">$&apos;</w:t></w:r><w:r><w:rPr><w:rStyle w:val="Hyperlink"/></w:rPr><w:t xml:space="preserve">{_|link|_{https://example.com </w:t> </w:r><w:r><w:fldChar w:fldCharType="end"/></w:r></w:t></w:r><w:r><w:t xml:space="preserve">&apos;</w:t></w:r></w:p>

Tested with multiple templates.

Crash during Report Generation (large amount of findings)

Hello,

When I try to generate a big report ( 158 findings), the generating process begin and run but didn't finish.
No error appear on the webpage but this in the log :

pwndoc-frontend | 2023/02/16 09:36:37 [error] 29#29: *21 upstream timed out (110: Operation timed out) while reading response header from upstream, client: 10.11.0.254, server: localhost, request: "GET /api/audits/63eb9bec56689f0011a2117e/generate HTTP/1.1", upstream: "https://172.19.0.3:4242/api/audits/63eb9bec56689f0011a2117e/generate", host: "10.11.0.10:8443", referrer: "https://10.11.0.10:8443/audits/63eb9bec56689f0011a2117e/general"

I don't know what happen, other reports work fine.

Moreover, I think the application work only on 1 cpu.

Best,
Alexis

Pwndoc-ng docs

Hello,

Since there are changed in the pwndoc-ng docs and the project doesn't have the docs online, I think it would be nice if you can create a GitHub pages with the docs, just like original pwndoc repo has.

Problem with the backend and default docker-compose build

Hi I trying to build but I have a problem with the backend


pwndoc-backend     | Error: Cannot find module './config/swagger-output.json'
pwndoc-backend     | Require stack:
pwndoc-backend     | - /app/src/app.js
pwndoc-backend     |     at Module._resolveFilename (node:internal/modules/cjs/loader:1090:15)
pwndoc-backend     |     at Module._load (node:internal/modules/cjs/loader:934:27)
pwndoc-backend     |     at Module.require (node:internal/modules/cjs/loader:1157:19)
pwndoc-backend     |     at require (node:internal/modules/helpers:119:18)
pwndoc-backend     |     at Object.<anonymous> (/app/src/app.js:18:25)
pwndoc-backend     |     at Module._compile (node:internal/modules/cjs/loader:1275:14)
pwndoc-backend     |     at Module._extensions..js (node:internal/modules/cjs/loader:1329:10)
pwndoc-backend     |     at Module.load (node:internal/modules/cjs/loader:1133:32)
pwndoc-backend     |     at Module._load (node:internal/modules/cjs/loader:972:12)
pwndoc-backend     |     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:83:12) {
pwndoc-backend     |   code: 'MODULE_NOT_FOUND',
pwndoc-backend     |   requireStack: [ '/app/src/app.js' ]
pwndoc-backend     | }
pwndoc-backend     | 

I try with node:lts-alpine alpine 18.12-alpine and try to copy the file swagger-output.json in diferents places
But I could not start the backend

sorry if it's my mistake

migrating data

Hi,

I have a LOT of reports and data to migrate to this version. The doc says move over the backend/mongo-data folder, which i've done but this version doesn't appear to have that folder. I can only seem to migrate vulnerabilities, but would like to move all the users/customers/custom fields etc.
what's the best way to approach this pls?

thanks

Ease installation process by uploading pre-built docker images to registries

Is your feature request related to a problem? Please describe.
Right now, to install pwndoc you need to download the repository and build all the docker images in order to start the containers.
In a modern deployment, Pwndoc images should be pre-built and uploaded inside docker registry (like the dockerhub one, or github itself via actions).
In this way installation is only a matter of downloading the pre-built image instead of re-building the images for every version.

Describe the solution you'd like
Create a Github workflow/action that build pwndoc images and uploads them on a registry.

Additional context
https://github.blog/2020-09-01-introducing-github-container-registry/
https://docs.github.com/en/actions/publishing-packages/publishing-docker-images

Upstream feature request pwndoc/pwndoc#456

[Question] Install on Synology NAS?

Hello folks

During my search for a pentest reporting tool, I stumbled over PwnDoc-NG. Would love to install it on my Synology NAS, but due to lack of deeper knowledge concerning docker, I am not able to.

Did anyone achieve to install it on a Syno NAS? If yes, how?

Got other dockers running on it, installed either via docker command or docker-compose through portainer (stack). But with this, it seems a bit different.

Thanks a lot!

Vulnerability search view custom columns

On the Vulnerabilities view, some default columns including the title are displayed.
It would be nice to be able to customize columns (add or remove)? eg add a column with one of the custom fields from the category.

image

For example if you have a custom Vuln ID or Internal reference, you would like to display the corresponding custom column to the /vulnerabilities page in order to be able to sort by this column, search / filter in this column, etc.

issued on Oct 9, 2020 pwndoc/pwndoc#28

Sizing of table once it is generated

Being able to add a table is an awesome feature but is there a way to set the size of the table in the doc? The table comes out small and I have to resize it for each finding.
image

[Bug] Missing modules

Hello,

it seems that some dependencies have been changed. Some modules are missing now. I am no longer able to build pwndoc:

ubuntu:~/Desktop/pwndoc-ng$ sudo docker-compose up -d --build
Creating network "pwndoc-ng_backend" with driver "bridge"
Building pwndoc-backend
[+] Building 46.5s (12/12) FINISHED                                                                                 
 => [internal] load build definition from Dockerfile                                                           0.0s
 => => transferring dockerfile: 305B                                                                           0.0s
 => [internal] load .dockerignore                                                                              0.0s
 => => transferring context: 63B                                                                               0.0s
 => [internal] load metadata for docker.io/library/node:lts-alpine                                             0.4s
 => [1/7] FROM docker.io/library/node:lts-alpine@sha256:ffc770cdc09c9e83cccd99d663bb6ed56cfaa1bab94baf1b12b62  0.0s
 => [internal] load build context                                                                              0.0s
 => => transferring context: 1.57MB                                                                            0.0s
 => CACHED [2/7] RUN mkdir -p /app                                                                             0.0s
 => CACHED [3/7] WORKDIR /app                                                                                  0.0s
 => [4/7] COPY package*.json ./                                                                                0.1s
 => [5/7] RUN apk --no-cache add --virtual builds-deps build-base python3 git                                 10.4s
 => [6/7] RUN npm install                                                                                     32.5s 
 => [7/7] COPY . .                                                                                             0.2s 
 => exporting to image                                                                                         2.9s 
 => => exporting layers                                                                                        2.9s 
 => => writing image sha256:e9699ec4e1613e37f63507d089a1ed6844e52dd49a2e0918965a4dbbd87dad62                   0.0s 
 => => naming to docker.io/yeln4ts/pwndoc:backend                                                              0.0s 
Building pwndoc-frontend                                                                                            
[+] Building 194.3s (15/16)                                                                                         
 => [internal] load build definition from Dockerfile                                                           0.0s
 => => transferring dockerfile: 430B                                                                           0.0s
 => [internal] load .dockerignore                                                                              0.0s
 => => transferring context: 65B                                                                               0.0s
 => [internal] load metadata for docker.io/library/nginx:stable-alpine                                         0.4s
 => [internal] load metadata for docker.io/library/node:lts-alpine                                             0.4s
 => [build 1/6] FROM docker.io/library/node:lts-alpine@sha256:ffc770cdc09c9e83cccd99d663bb6ed56cfaa1bab94baf1  0.0s
 => [internal] load build context                                                                              0.0s
 => => transferring context: 2.34MB                                                                            0.0s
 => CACHED [stage-1 1/5] FROM docker.io/library/nginx:stable-alpine@sha256:a9e4fce28ad7cc7de45772686a22dbeaee  0.0s
 => CACHED [build 2/6] WORKDIR /app                                                                            0.0s
 => [build 3/6] COPY package.json ./                                                                           0.1s
 => [stage-1 2/5] COPY .docker/nginx.conf /etc/nginx/conf.d/default.conf                                       0.1s
 => [stage-1 3/5] RUN mkdir -p /etc/nginx/ssl                                                                  1.4s
 => [build 4/6] RUN npm install                                                                              120.4s
 => [stage-1 4/5] COPY ssl/server* /etc/nginx/ssl/                                                             0.1s
 => [build 5/6] COPY . .                                                                                       0.3s 
 => ERROR [build 6/6] RUN npm run build                                                                       73.0s 
------                                                                                                              
 > [build 6/6] RUN npm run build:                                                                                   
#0 1.958                                                                                                            
#0 1.958 > [email protected] build                                                                              
#0 1.958 > export NODE_OPTIONS=--openssl-legacy-provider && quasar build                                            
#0 1.958                                                                                                            
#0 2.619 
#0 2.619  Build mode........ spa
#0 2.619  Pkg quasar........ v1.22.8
#0 2.619  Pkg @quasar/app... v2.4.3
#0 2.619  Debugging......... no
#0 2.619  Publishing........ no
#0 2.619 
#0 2.630  Configured browser support (at least 87.07% of global marketshare):
#0 2.630  · Chrome for Android >= 111
#0 2.630  · Firefox for Android >= 110
#0 2.630  · QQ for Android >= 13.1
#0 2.630  · UC for Android >= 13.4
#0 2.630  · Android >= 111
#0 2.630  · Baidu >= 13.18
#0 2.630  · Bb >= 7
#0 2.630  · Chrome >= 109
#0 2.630  · Edge >= 109
#0 2.630  · Firefox >= 109
#0 2.630  · IE >= 11
#0 2.630  · IE Mobile >= 10
#0 2.630  · iOS >= 15.6
#0 2.630  · Kaios >= 2.5
#0 2.630  · Opera Mini >= all
#0 2.630  · Opera Mobile >= 12.1
#0 2.630  · Opera >= 94
#0 2.630  · Safari >= 16.2
#0 2.630  · Samsung >= 19.0
#0 2.630 
#0 3.288  App · Reading quasar.conf.js
#0 3.302  App · Transpiling JS (Babel active) - includes IE11 support
#0 5.725  App · Extending SPA Webpack config
#0 5.778  App · Cleaned build artifact: "/app/dist/spa"
#0 5.779  App · Generating Webpack entry point
#0 5.792  App · Compiling with Webpack...
#0 6.710  App · Compiling SPA...
#0 72.57  App · Compiled SPA done in 65862 ms
#0 72.57  App · Added build artifact "/app/dist/spa"
#0 72.81 
#0 72.81  App · ⚠️  2 errors encountered:
#0 72.81 
#0 72.81 ./node_modules/yjs/dist/yjs.mjs
#0 72.81 Module not found: Error: Can't resolve 'lib0/logging' in '/app/node_modules/yjs/dist'
#0 72.81 resolve 'lib0/logging' in '/app/node_modules/yjs/dist'
#0 72.81   Parsed request is a module
#0 72.81   using description file: /app/node_modules/yjs/package.json (relative path: ./dist)
#0 72.81     Field 'browser' doesn't contain a valid alias configuration
#0 72.81     resolve as module
#0 72.81       /app/node_modules/yjs/dist/node_modules doesn't exist or is not a directory
#0 72.81       /app/node_modules/yjs/node_modules doesn't exist or is not a directory
#0 72.81       /app/node_modules/node_modules doesn't exist or is not a directory
#0 72.81       /node_modules doesn't exist or is not a directory
#0 72.81       looking for modules in /app/node_modules
#0 72.81         using description file: /app/package.json (relative path: ./node_modules)
#0 72.81           Field 'browser' doesn't contain a valid alias configuration
#0 72.81           using description file: /app/node_modules/lib0/package.json (relative path: ./logging)
#0 72.81             no extension
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/logging doesn't exist
#0 72.81             .mjs
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/logging.mjs doesn't exist
#0 72.81             .js
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/logging.js doesn't exist
#0 72.81             .vue
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/logging.vue doesn't exist
#0 72.81             .json
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/logging.json doesn't exist
#0 72.81             .wasm
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/logging.wasm doesn't exist
#0 72.81             as directory
#0 72.81               /app/node_modules/lib0/logging doesn't exist
#0 72.81       looking for modules in /app/node_modules
#0 72.81         using description file: /app/package.json (relative path: ./node_modules)
#0 72.81           Field 'browser' doesn't contain a valid alias configuration
#0 72.81           using description file: /app/node_modules/lib0/package.json (relative path: ./logging)
#0 72.81             no extension
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/logging doesn't exist
#0 72.81             .mjs
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/logging.mjs doesn't exist
#0 72.81             .js
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/logging.js doesn't exist
#0 72.81             .vue
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/logging.vue doesn't exist
#0 72.81             .json
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/logging.json doesn't exist
#0 72.81             .wasm
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/logging.wasm doesn't exist
#0 72.81             as directory
#0 72.81               /app/node_modules/lib0/logging doesn't exist
#0 72.81       looking for modules in /app/node_modules/@quasar/app/node_modules
#0 72.81         using description file: /app/node_modules/@quasar/app/package.json (relative path: ./node_modules)
#0 72.81           Field 'browser' doesn't contain a valid alias configuration
#0 72.81           using description file: /app/node_modules/@quasar/app/package.json (relative path: ./node_modules/lib0/logging)
#0 72.81             no extension
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/@quasar/app/node_modules/lib0/logging doesn't exist
#0 72.81             .mjs
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/@quasar/app/node_modules/lib0/logging.mjs doesn't exist
#0 72.81             .js
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/@quasar/app/node_modules/lib0/logging.js doesn't exist
#0 72.81             .vue
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/@quasar/app/node_modules/lib0/logging.vue doesn't exist
#0 72.81             .json
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/@quasar/app/node_modules/lib0/logging.json doesn't exist
#0 72.81             .wasm
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/@quasar/app/node_modules/lib0/logging.wasm doesn't exist
#0 72.81             as directory
#0 72.81               /app/node_modules/@quasar/app/node_modules/lib0/logging doesn't exist
#0 72.81 [/app/node_modules/yjs/dist/node_modules]
#0 72.81 [/app/node_modules/yjs/node_modules]
#0 72.81 [/app/node_modules/node_modules]
#0 72.81 [/node_modules]
#0 72.81 [/app/node_modules/lib0/logging]
#0 72.81 [/app/node_modules/lib0/logging.mjs]
#0 72.81 [/app/node_modules/lib0/logging.js]
#0 72.81 [/app/node_modules/lib0/logging.vue]
#0 72.81 [/app/node_modules/lib0/logging.json]
#0 72.81 [/app/node_modules/lib0/logging.wasm]
#0 72.81 [/app/node_modules/@quasar/app/node_modules/lib0/logging]
#0 72.81 [/app/node_modules/@quasar/app/node_modules/lib0/logging.mjs]
#0 72.81 [/app/node_modules/@quasar/app/node_modules/lib0/logging.js]
#0 72.81 [/app/node_modules/@quasar/app/node_modules/lib0/logging.vue]
#0 72.81 [/app/node_modules/@quasar/app/node_modules/lib0/logging.json]
#0 72.81 [/app/node_modules/@quasar/app/node_modules/lib0/logging.wasm]
#0 72.81  @ ./node_modules/yjs/dist/yjs.mjs 15:0-40 3212:8-21 3212:22-36 3212:38-50 3212:62-76 3212:78-89 3756:2-15 3758:2-15
#0 72.81  @ ./node_modules/@quasar/app/lib/webpack/loader.transform-quasar-imports.js!./node_modules/babel-loader/lib??ref--2-0!./node_modules/@quasar/app/lib/webpack/loader.auto-import-client.js?kebab!./node_modules/vue-loader/lib??vue-loader-options!./src/components/editor.vue?vue&type=script&lang=js&
#0 72.81  @ ./src/components/editor.vue?vue&type=script&lang=js&
#0 72.81  @ ./src/components/editor.vue
#0 72.81  @ ./node_modules/@quasar/app/lib/webpack/loader.transform-quasar-imports.js!./node_modules/babel-loader/lib??ref--2-0!./src/pages/audits/edit/findings/edit/edit.js?vue&type=script&lang=js&
#0 72.81  @ ./src/pages/audits/edit/findings/edit/edit.js?vue&type=script&lang=js&
#0 72.81  @ ./src/pages/audits/edit/findings/edit/index.vue
#0 72.81  @ ./src/router/routes.js
#0 72.81  @ ./src/router/index.js
#0 72.81  @ ./.quasar/app.js
#0 72.81  @ ./.quasar/client-entry.js
#0 72.81  @ multi ./.quasar/client-entry.js
#0 72.81 ./node_modules/lib0/random.js
#0 72.81 Module not found: Error: Can't resolve 'lib0/webcrypto' in '/app/node_modules/lib0'
#0 72.81 resolve 'lib0/webcrypto' in '/app/node_modules/lib0'
#0 72.81   Parsed request is a module
#0 72.81   using description file: /app/node_modules/lib0/package.json (relative path: .)
#0 72.81     Field 'browser' doesn't contain a valid alias configuration
#0 72.81     resolve as module
#0 72.81       /app/node_modules/lib0/node_modules doesn't exist or is not a directory
#0 72.81       /app/node_modules/node_modules doesn't exist or is not a directory
#0 72.81       /node_modules doesn't exist or is not a directory
#0 72.81       looking for modules in /app/node_modules
#0 72.81         using description file: /app/package.json (relative path: ./node_modules)
#0 72.81           Field 'browser' doesn't contain a valid alias configuration
#0 72.81           using description file: /app/node_modules/lib0/package.json (relative path: ./webcrypto)
#0 72.81             no extension
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/webcrypto doesn't exist
#0 72.81             .mjs
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/webcrypto.mjs doesn't exist
#0 72.81             .js
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/webcrypto.js doesn't exist
#0 72.81             .vue
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/webcrypto.vue doesn't exist
#0 72.81             .json
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/webcrypto.json doesn't exist
#0 72.81             .wasm
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/webcrypto.wasm doesn't exist
#0 72.81             as directory
#0 72.81               /app/node_modules/lib0/webcrypto doesn't exist
#0 72.81       looking for modules in /app/node_modules
#0 72.81         using description file: /app/package.json (relative path: ./node_modules)
#0 72.81           Field 'browser' doesn't contain a valid alias configuration
#0 72.81           using description file: /app/node_modules/lib0/package.json (relative path: ./webcrypto)
#0 72.81             no extension
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/webcrypto doesn't exist
#0 72.81             .mjs
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/webcrypto.mjs doesn't exist
#0 72.81             .js
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/webcrypto.js doesn't exist
#0 72.81             .vue
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/webcrypto.vue doesn't exist
#0 72.81             .json
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/webcrypto.json doesn't exist
#0 72.81             .wasm
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/lib0/webcrypto.wasm doesn't exist
#0 72.81             as directory
#0 72.81               /app/node_modules/lib0/webcrypto doesn't exist
#0 72.81       looking for modules in /app/node_modules/@quasar/app/node_modules
#0 72.81         using description file: /app/node_modules/@quasar/app/package.json (relative path: ./node_modules)
#0 72.81           Field 'browser' doesn't contain a valid alias configuration
#0 72.81           using description file: /app/node_modules/@quasar/app/package.json (relative path: ./node_modules/lib0/webcrypto)
#0 72.81             no extension
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/@quasar/app/node_modules/lib0/webcrypto doesn't exist
#0 72.81             .mjs
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/@quasar/app/node_modules/lib0/webcrypto.mjs doesn't exist
#0 72.81             .js
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/@quasar/app/node_modules/lib0/webcrypto.js doesn't exist
#0 72.81             .vue
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/@quasar/app/node_modules/lib0/webcrypto.vue doesn't exist
#0 72.81             .json
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/@quasar/app/node_modules/lib0/webcrypto.json doesn't exist
#0 72.81             .wasm
#0 72.81               Field 'browser' doesn't contain a valid alias configuration
#0 72.81               /app/node_modules/@quasar/app/node_modules/lib0/webcrypto.wasm doesn't exist
#0 72.81             as directory
#0 72.81               /app/node_modules/@quasar/app/node_modules/lib0/webcrypto doesn't exist
#0 72.81 [/app/node_modules/lib0/node_modules]
#0 72.81 [/app/node_modules/node_modules]
#0 72.81 [/node_modules]
#0 72.81 [/app/node_modules/lib0/webcrypto]
#0 72.81 [/app/node_modules/lib0/webcrypto.mjs]
#0 72.81 [/app/node_modules/lib0/webcrypto.js]
#0 72.81 [/app/node_modules/lib0/webcrypto.vue]
#0 72.81 [/app/node_modules/lib0/webcrypto.json]
#0 72.81 [/app/node_modules/lib0/webcrypto.wasm]
#0 72.81 [/app/node_modules/@quasar/app/node_modules/lib0/webcrypto]
#0 72.81 [/app/node_modules/@quasar/app/node_modules/lib0/webcrypto.mjs]
#0 72.81 [/app/node_modules/@quasar/app/node_modules/lib0/webcrypto.js]
#0 72.81 [/app/node_modules/@quasar/app/node_modules/lib0/webcrypto.vue]
#0 72.81 [/app/node_modules/@quasar/app/node_modules/lib0/webcrypto.json]
#0 72.81 [/app/node_modules/@quasar/app/node_modules/lib0/webcrypto.wasm]
#0 72.81  @ ./node_modules/lib0/random.js 12:0-48 16:28-43 19:14-29
#0 72.81  @ ./node_modules/yjs/dist/yjs.mjs
#0 72.81  @ ./node_modules/@quasar/app/lib/webpack/loader.transform-quasar-imports.js!./node_modules/babel-loader/lib??ref--2-0!./node_modules/@quasar/app/lib/webpack/loader.auto-import-client.js?kebab!./node_modules/vue-loader/lib??vue-loader-options!./src/components/editor.vue?vue&type=script&lang=js&
#0 72.81  @ ./src/components/editor.vue?vue&type=script&lang=js&
#0 72.81  @ ./src/components/editor.vue
#0 72.81  @ ./node_modules/@quasar/app/lib/webpack/loader.transform-quasar-imports.js!./node_modules/babel-loader/lib??ref--2-0!./src/pages/audits/edit/findings/edit/edit.js?vue&type=script&lang=js&
#0 72.81  @ ./src/pages/audits/edit/findings/edit/edit.js?vue&type=script&lang=js&
#0 72.81  @ ./src/pages/audits/edit/findings/edit/index.vue
#0 72.81  @ ./src/router/routes.js
#0 72.81  @ ./src/router/index.js
#0 72.81  @ ./.quasar/app.js
#0 72.81  @ ./.quasar/client-entry.js
#0 72.81  @ multi ./.quasar/client-entry.js
#0 72.81 
#0 72.81  App · ⚠️  [FAIL] Build failed with 2 errors. Check log above.
#0 72.81 
------
Dockerfile:7
--------------------
   5 |     RUN npm install
   6 |     COPY . .
   7 | >>> RUN npm run build
   8 |     
   9 |     ### STAGE 2: Run ###
--------------------
ERROR: failed to solve: process "/bin/sh -c npm run build" did not complete successfully: exit code: 1
ERROR: Service 'pwndoc-frontend' failed to build : Build failed

Multiple Findings Sections Per Report

Often projects have one report but need multiple phases so the ability to add more than one findings section to a report would be handy, we then assign vulnerabilities to each different findings section as needed

Allow an admin to change user properties without password

Right now it is not possible for an admin to change user's properties without changing its password too.
In some cases, as an admin, I'd like to just disable/enable an account or change its role without having to change its password.

Editor field bugs and delays

I encounter a few problems with the editor fields in the vulnerabilities section.
I added two custom editor fields to my vulnerabilities.
The first issue is, when creating a new vulnerability, those editor fields are not editable. Also the cursor does not change from arrow to that "text insert marker" when hovering over that editor text field. It takes some time (like a minute) until the editor field becomes responsive and editable - it shouldn't be an issue by computing power.

The second issue is, once I created some vulnerability templates, the custom fields shows the data of previous opened vulnerability templates.
Like 'editor_textfield_1' in 'vuln_1' contains the text "sample text". After finishing editing that field I open 'vuln_2' and the 'editor_textfield_1' shows the data of 'vuln_1'. It also takes some time, until it gets refreshed with the appropriate data.

It seems to be a similar issue as mentioned in #84 .

Any ideas on that one?

Table Styles

I am not sure if I have missed it, but the ability to have the table use a set table style or have more than one option for this would be amazing.

[BUG] Default text of custom sections disappears

After adding some text as default and saving it in the custom section, upon page reload this default text disappears. When creating a new Audit, however, the text is there so it appears to be a visual bug. After testing, it looks to have been introduced by the collab patches of #57

image

[Improvement] API specification

Currently PwnDoc-ng offers a very useful api at /api, however no specification or documentation for this is available. As mentioned in the Pwndoc repository issue #183, could it be possible to implement this for PwnDoc-NG?

There are solutions available that should be able to automatically generate and offer a swagger interface for testing it, though I'm not sure about how viable these solutions/libraries are.

Tables In Scopes

Seeing the following got me thinking.

Now we have tables, should the scope input box be set the same, allowing people to add tables for their scope etc?

[Bug] Deleted ticked checkboxes will appear in docxtemplate/are not deleted

Hello,

I created checkbox for a custom section in the audit section

grafik

If a checkbox entry is ticked, custom field modification is saved, then the entry is deleted and modification is saved, after that the deleted checkbox entry will still appear in the report.

grafik

Here is the snippet for the word document:

{-w:p summaryofrecommendations.recom}{@text|convertHTML}
•	{.}{/summaryofrecommendations.recom}

[Bug] Sort Array over Integer

Hello,

when I try to sort over an Integer (e.g. {#services | sortArrayByField: 'port'}), I get en error:

pwndoc-backend | Explanation: The scope parser for the tag services | sortArrayByField: 'port' failed to execute
pwndoc-backend | tag: "services | sortArrayByField: 'port'",
pwndoc-backend | rootError: TypeError: _.get(...).localeCompare is not a function
pwndoc-backend | at /app/src/lib/report-generator.js:177:32
pwndoc-backend | at Array.sort ()
pwndoc-backend | at expressions.filters.sortArrayByField (/app/src/lib/report-generator.js:175:26)
pwndoc-backend | at fn (eval at compile (/app/node_modules/angular-expressions/lib/parse.js:3119:12), :4:271)
pwndoc-backend | at Object.get (/app/src/lib/report-generator.js:247:20)
pwndoc-backend | at ScopeManager._getValue (/app/node_modules/docxtemplater/js/scope-manager.js:81:21)
pwndoc-backend | at ScopeManager.getValue (/app/node_modules/docxtemplater/js/scope-manager.js:199:38)
pwndoc-backend | at ScopeManager.loopOver (/app/node_modules/docxtemplater/js/scope-manager.js:153:38)
pwndoc-backend | at LoopModule.render (/app/node_modules/docxtemplater/js/modules/loop.js:334:39)
pwndoc-backend | at moduleRender (/app/node_modules/docxtemplater/js/render.js:14:30)
pwndoc-backend | at /app/node_modules/docxtemplater/js/render.js:44:26
pwndoc-backend | at Array.map ()
pwndoc-backend | at Object.render (/app/node_modules/docxtemplater/js/render.js:42:24)
pwndoc-backend | at loopOver (/app/node_modules/docxtemplater/js/modules/loop.js:305:35)
pwndoc-backend | at ScopeManager.functorIfInverted (/app/node_modules/docxtemplater/js/scope-manager.js:159:9)
pwndoc-backend | at ScopeManager.loopOverValue (/app/node_modules/docxtemplater/js/scope-manager.js:184:16),
pwndoc-backend | file: 'word/document.xml'
pwndoc-backend | }
pwndoc-backend | }

Original from backend/src/lib/report-generator.js:

// Sort array by supplied field: {#findings | sortArrayByField: 'identifier':1}{/}
// order: 1 = ascending, -1 = descending
expressions.filters.sortArrayByField = function (input, field, order) {
//invalid order sort ascending
if(order != 1 && order != -1) order = 1;

const sorted = input.sort((a,b) => {
    //multiply by order so that if is descending (-1) will reverse the values
    return _.get(a, field).localeCompare(_.get(b, field)., undefined, {numeric: true}) * order
})    
return sorted;

}

Fix with toString():

// Sort array by supplied field: {#findings | sortArrayByField: 'identifier':1}{/}
// order: 1 = ascending, -1 = descending
expressions.filters.sortArrayByField = function (input, field, order) {
//invalid order sort ascending
if(order != 1 && order != -1) order = 1;

const sorted = input.sort((a,b) => {
    //multiply by order so that if is descending (-1) will reverse the values
    return _.get(a, field).toString().localeCompare(_.get(b, field).toString(), undefined, {numeric: true}) * order
})    
return sorted;

}

Import / export enchantement

Some data can be imported / exported but not all of it:

  • Vulnerabilities
  • User settings
  • Collaborators (users)
  • Companies
  • Clients
  • Templates
  • Audits
  • Custom data (languages, audit types, vulnerability types, vulnerability categories, custom fields, custom sections)

That would ease backup and re-deployment a lot.

related to pwndoc/pwndoc#190 issued on Oct 2, 2021

Failed build after upgrade

Hi,

Just went to update pwndoc-ng as I normally would running the following:

docker compose down
git pull
docker compose up -d --build

During the build I am getting a few errors, which can be seen below, any advice:

#0 60.68  App · ⚠️  2 errors encountered:
#0 60.68
#0 60.68 ./node_modules/yjs/dist/yjs.mjs
#0 60.68 Module not found: Error: Can't resolve 'lib0/logging' in '/app/node_modules/yjs/dist'
#0 60.68 resolve 'lib0/logging' in '/app/node_modules/yjs/dist'
#0 60.68   Parsed request is a module
#0 60.68   using description file: /app/node_modules/yjs/package.json (relative path: ./dist)
#0 60.68     Field 'browser' doesn't contain a valid alias configuration
#0 60.68     resolve as module
#0 60.68       /app/node_modules/yjs/dist/node_modules doesn't exist or is not a directory
#0 60.68       /app/node_modules/yjs/node_modules doesn't exist or is not a directory
#0 60.68       /app/node_modules/node_modules doesn't exist or is not a directory
#0 60.68       /node_modules doesn't exist or is not a directory
#0 60.68       looking for modules in /app/node_modules
#0 60.68         using description file: /app/package.json (relative path: ./node_modules)
#0 60.68           Field 'browser' doesn't contain a valid alias configuration
#0 60.68           using description file: /app/node_modules/lib0/package.json (relative path: ./logging)
#0 60.68             no extension
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/logging doesn't exist
#0 60.68             .mjs
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/logging.mjs doesn't exist
#0 60.68             .js
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/logging.js doesn't exist
#0 60.68             .vue
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/logging.vue doesn't exist
#0 60.68             .json
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/logging.json doesn't exist
#0 60.68             .wasm
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/logging.wasm doesn't exist
#0 60.68             as directory
#0 60.68               /app/node_modules/lib0/logging doesn't exist
#0 60.68       looking for modules in /app/node_modules
#0 60.68         using description file: /app/package.json (relative path: ./node_modules)
#0 60.68           Field 'browser' doesn't contain a valid alias configuration
#0 60.68           using description file: /app/node_modules/lib0/package.json (relative path: ./logging)
#0 60.68             no extension
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/logging doesn't exist
#0 60.68             .mjs
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/logging.mjs doesn't exist
#0 60.68             .js
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/logging.js doesn't exist
#0 60.68             .vue
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/logging.vue doesn't exist
#0 60.68             .json
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/logging.json doesn't exist
#0 60.68             .wasm
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/logging.wasm doesn't exist
#0 60.68             as directory
#0 60.68               /app/node_modules/lib0/logging doesn't exist
#0 60.68       looking for modules in /app/node_modules/@quasar/app/node_modules
#0 60.68         using description file: /app/node_modules/@quasar/app/package.json (relative path: ./node_modules)
#0 60.68           Field 'browser' doesn't contain a valid alias configuration
#0 60.68           using description file: /app/node_modules/@quasar/app/package.json (relative path: ./node_modules/lib0/logging)
#0 60.68             no extension
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/@quasar/app/node_modules/lib0/logging doesn't exist
#0 60.68             .mjs
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/@quasar/app/node_modules/lib0/logging.mjs doesn't exist
#0 60.68             .js
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/@quasar/app/node_modules/lib0/logging.js doesn't exist
#0 60.68             .vue
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/@quasar/app/node_modules/lib0/logging.vue doesn't exist
#0 60.68             .json
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/@quasar/app/node_modules/lib0/logging.json doesn't exist
#0 60.68             .wasm
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/@quasar/app/node_modules/lib0/logging.wasm doesn't exist
#0 60.68             as directory
#0 60.68               /app/node_modules/@quasar/app/node_modules/lib0/logging doesn't exist
#0 60.68 [/app/node_modules/yjs/dist/node_modules]
#0 60.68 [/app/node_modules/yjs/node_modules]
#0 60.68 [/app/node_modules/node_modules]
#0 60.68 [/node_modules]
#0 60.68 [/app/node_modules/lib0/logging]
#0 60.68 [/app/node_modules/lib0/logging.mjs]
#0 60.68 [/app/node_modules/lib0/logging.js]
#0 60.68 [/app/node_modules/lib0/logging.vue]
#0 60.68 [/app/node_modules/lib0/logging.json]
#0 60.68 [/app/node_modules/lib0/logging.wasm]
#0 60.68 [/app/node_modules/@quasar/app/node_modules/lib0/logging]
#0 60.68 [/app/node_modules/@quasar/app/node_modules/lib0/logging.mjs]
#0 60.68 [/app/node_modules/@quasar/app/node_modules/lib0/logging.js]
#0 60.68 [/app/node_modules/@quasar/app/node_modules/lib0/logging.vue]
#0 60.68 [/app/node_modules/@quasar/app/node_modules/lib0/logging.json]
#0 60.68 [/app/node_modules/@quasar/app/node_modules/lib0/logging.wasm]
#0 60.68  @ ./node_modules/yjs/dist/yjs.mjs 15:0-40 3212:8-21 3212:22-36 3212:38-50 3212:62-76 3212:78-89 3756:2-15 3758:2-15
#0 60.68  @ ./node_modules/@quasar/app/lib/webpack/loader.transform-quasar-imports.js!./node_modules/babel-loader/lib??ref--2-0!./node_modules/@quasar/app/lib/webpack/loader.auto-import-client.js?kebab!./node_modules/vue-loader/lib??vue-loader-options!./src/components/editor.vue?vue&type=script&lang=js&
#0 60.68  @ ./src/components/editor.vue?vue&type=script&lang=js&
#0 60.68  @ ./src/components/editor.vue
#0 60.68  @ ./node_modules/@quasar/app/lib/webpack/loader.transform-quasar-imports.js!./node_modules/babel-loader/lib??ref--2-0!./src/pages/audits/edit/findings/edit/edit.js?vue&type=script&lang=js&
#0 60.68  @ ./src/pages/audits/edit/findings/edit/edit.js?vue&type=script&lang=js&
#0 60.68  @ ./src/pages/audits/edit/findings/edit/index.vue
#0 60.68  @ ./src/router/routes.js
#0 60.68  @ ./src/router/index.js
#0 60.68  @ ./.quasar/app.js
#0 60.68  @ ./.quasar/client-entry.js
#0 60.68  @ multi ./.quasar/client-entry.js
#0 60.68 ./node_modules/lib0/random.js
#0 60.68 Module not found: Error: Can't resolve 'lib0/webcrypto' in '/app/node_modules/lib0'
#0 60.68 resolve 'lib0/webcrypto' in '/app/node_modules/lib0'
#0 60.68   Parsed request is a module
#0 60.68   using description file: /app/node_modules/lib0/package.json (relative path: .)
#0 60.68     Field 'browser' doesn't contain a valid alias configuration
#0 60.68     resolve as module
#0 60.68       /app/node_modules/lib0/node_modules doesn't exist or is not a directory
#0 60.68       /app/node_modules/node_modules doesn't exist or is not a directory
#0 60.68       /node_modules doesn't exist or is not a directory
#0 60.68       looking for modules in /app/node_modules
#0 60.68         using description file: /app/package.json (relative path: ./node_modules)
#0 60.68           Field 'browser' doesn't contain a valid alias configuration
#0 60.68           using description file: /app/node_modules/lib0/package.json (relative path: ./webcrypto)
#0 60.68             no extension
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/webcrypto doesn't exist
#0 60.68             .mjs
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/webcrypto.mjs doesn't exist
#0 60.68             .js
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/webcrypto.js doesn't exist
#0 60.68             .vue
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/webcrypto.vue doesn't exist
#0 60.68             .json
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/webcrypto.json doesn't exist
#0 60.68             .wasm
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/webcrypto.wasm doesn't exist
#0 60.68             as directory
#0 60.68               /app/node_modules/lib0/webcrypto doesn't exist
#0 60.68       looking for modules in /app/node_modules
#0 60.68         using description file: /app/package.json (relative path: ./node_modules)
#0 60.68           Field 'browser' doesn't contain a valid alias configuration
#0 60.68           using description file: /app/node_modules/lib0/package.json (relative path: ./webcrypto)
#0 60.68             no extension
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/webcrypto doesn't exist
#0 60.68             .mjs
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/webcrypto.mjs doesn't exist
#0 60.68             .js
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/webcrypto.js doesn't exist
#0 60.68             .vue
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/webcrypto.vue doesn't exist
#0 60.68             .json
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/webcrypto.json doesn't exist
#0 60.68             .wasm
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/lib0/webcrypto.wasm doesn't exist
#0 60.68             as directory
#0 60.68               /app/node_modules/lib0/webcrypto doesn't exist
#0 60.68       looking for modules in /app/node_modules/@quasar/app/node_modules
#0 60.68         using description file: /app/node_modules/@quasar/app/package.json (relative path: ./node_modules)
#0 60.68           Field 'browser' doesn't contain a valid alias configuration
#0 60.68           using description file: /app/node_modules/@quasar/app/package.json (relative path: ./node_modules/lib0/webcrypto)
#0 60.68             no extension
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/@quasar/app/node_modules/lib0/webcrypto doesn't exist
#0 60.68             .mjs
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/@quasar/app/node_modules/lib0/webcrypto.mjs doesn't exist
#0 60.68             .js
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/@quasar/app/node_modules/lib0/webcrypto.js doesn't exist
#0 60.68             .vue
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/@quasar/app/node_modules/lib0/webcrypto.vue doesn't exist
#0 60.68             .json
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/@quasar/app/node_modules/lib0/webcrypto.json doesn't exist
#0 60.68             .wasm
#0 60.68               Field 'browser' doesn't contain a valid alias configuration
#0 60.68               /app/node_modules/@quasar/app/node_modules/lib0/webcrypto.wasm doesn't exist
#0 60.68             as directory
#0 60.68               /app/node_modules/@quasar/app/node_modules/lib0/webcrypto doesn't exist
#0 60.68 [/app/node_modules/lib0/node_modules]
#0 60.68 [/app/node_modules/node_modules]
#0 60.68 [/node_modules]
#0 60.68 [/app/node_modules/lib0/webcrypto]
#0 60.68 [/app/node_modules/lib0/webcrypto.mjs]
#0 60.68 [/app/node_modules/lib0/webcrypto.js]
#0 60.68 [/app/node_modules/lib0/webcrypto.vue]
#0 60.68 [/app/node_modules/lib0/webcrypto.json]
#0 60.68 [/app/node_modules/lib0/webcrypto.wasm]
#0 60.68 [/app/node_modules/@quasar/app/node_modules/lib0/webcrypto]
#0 60.68 [/app/node_modules/@quasar/app/node_modules/lib0/webcrypto.mjs]
#0 60.68 [/app/node_modules/@quasar/app/node_modules/lib0/webcrypto.js]
#0 60.68 [/app/node_modules/@quasar/app/node_modules/lib0/webcrypto.vue]
#0 60.68 [/app/node_modules/@quasar/app/node_modules/lib0/webcrypto.json]
#0 60.68 [/app/node_modules/@quasar/app/node_modules/lib0/webcrypto.wasm]
#0 60.68  @ ./node_modules/lib0/random.js 12:0-48 16:28-43 19:14-29
#0 60.68  @ ./node_modules/yjs/dist/yjs.mjs
#0 60.68  @ ./node_modules/@quasar/app/lib/webpack/loader.transform-quasar-imports.js!./node_modules/babel-loader/lib??ref--2-0!./node_modules/@quasar/app/lib/webpack/loader.auto-import-client.js?kebab!./node_modules/vue-loader/lib??vue-loader-options!./src/components/editor.vue?vue&type=script&lang=js&
#0 60.68  @ ./src/components/editor.vue?vue&type=script&lang=js&
#0 60.68  @ ./src/components/editor.vue
#0 60.68  @ ./node_modules/@quasar/app/lib/webpack/loader.transform-quasar-imports.js!./node_modules/babel-loader/lib??ref--2-0!./src/pages/audits/edit/findings/edit/edit.js?vue&type=script&lang=js&
#0 60.68  @ ./src/pages/audits/edit/findings/edit/edit.js?vue&type=script&lang=js&
#0 60.68  @ ./src/pages/audits/edit/findings/edit/index.vue
#0 60.68  @ ./src/router/routes.js
#0 60.68  @ ./src/router/index.js
#0 60.68  @ ./.quasar/app.js
#0 60.68  @ ./.quasar/client-entry.js
#0 60.68  @ multi ./.quasar/client-entry.js
#0 60.68
#0 60.68  App · ⚠️  [FAIL] Build failed with 2 errors. Check log above.
#0 60.68
------
failed to solve: process "/bin/sh -c npm run build" did not complete successfully: exit code: 1

Custom Fields - Select Options broken when changing the language

Hi,

I observed an issue regarding the select fields which I have created in the custom fields.
For example I have created a few select boxes (I know, radio's would fit better because only one choice is valid):
image

In the default 'English' language they are select boxes, but when switching to another language, they become empty fields.
image

Another issue is, once I have started a non english report, the custom fields select boxes are empty (which i kind of expect because the prior problem):
image

But once I change in the same report to the english language (which does have fine working custom field tempaltes), they behave strange:
image

Now, I only can choose all of them (per section) at once - like clicking one, all others will also be un-/selected at the same time.
I only clicked 'Internet' once:
image
Same happens when I unselect one of them, the other one also gets unselected.

PS: where is the difference between 'select' and 'multiple select', because I am also able to check multiple fields with both?

Numbered lists become headings in the docx template

Numbered lists in the pwndoc-ng editor are correct, however upon generating the docx, these become headings in the document. This makes so that the table of contents won't be ordered properly because of it. Also, the numbered lists don't start from the right number as they appear in the editor as they follow the numbering of the headings.

pwndoc-ng editor
image

generated document
image

headings
image

Note the jump from 3 to 5 in the headings and the numbered list continuing from the headings number.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.