pwn 0.5.561 → 0.5.562
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +6 -6
- data/README.md +3 -3
- data/documentation/vulnerability_report_template.md +37 -0
- data/lib/pwn/ai/agent/vuln_gen.rb +28 -8
- data/lib/pwn/version.rb +1 -1
- metadata +15 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fcfdf05e72d9c3c650d02dfb875519d3a4d95591e1b32227355b316e6fc1a8a6
|
|
4
|
+
data.tar.gz: 1af1dc3a3a01390e7b1ee57a5168ed42f58534b2565ebb94da9df120cd5dc21c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a7344c5b670d5fa5b93e1f93c3a0a79830a7d1f790b8276ebfe9e7de730ab6f06bfccbc8d43ed47827de7d0b5a2df295dde687ee8e4cc5f009e10935f83be4a9
|
|
7
|
+
data.tar.gz: 84d8a15f6eedf53563a3c0261c3c34544afefb195778f70bdfbf9a2db360b8e31e69ae6b747f243e6410715a50d816250655832386f01fa254d824dc9163cbee
|
data/Gemfile
CHANGED
|
@@ -20,7 +20,7 @@ gem 'base32', '0.3.4'
|
|
|
20
20
|
gem 'bitcoin-ruby', '0.0.20'
|
|
21
21
|
gem 'brakeman', '8.0.4'
|
|
22
22
|
gem 'bson', '5.2.0'
|
|
23
|
-
gem 'bundler', '>=4.0.
|
|
23
|
+
gem 'bundler', '>=4.0.11'
|
|
24
24
|
gem 'bundler-audit', '>=0.9.3'
|
|
25
25
|
gem 'bunny', '3.1.0'
|
|
26
26
|
gem 'colorize', '1.1.0'
|
|
@@ -49,17 +49,17 @@ gem 'jwt', '3.1.2'
|
|
|
49
49
|
gem 'libusb', '0.7.2'
|
|
50
50
|
gem 'luhn', '3.0.0'
|
|
51
51
|
gem 'mail', '2.9.0'
|
|
52
|
-
gem 'mcp', '0.
|
|
52
|
+
gem 'mcp', '0.14.0'
|
|
53
53
|
gem 'meshtastic', '0.0.160'
|
|
54
54
|
gem 'metasm', '1.0.5'
|
|
55
|
-
gem 'mongo', '2.
|
|
55
|
+
gem 'mongo', '2.24.0'
|
|
56
56
|
gem 'msfrpc-client', '1.1.2'
|
|
57
57
|
gem 'netaddr', '2.0.6'
|
|
58
58
|
gem 'net-ldap', '0.20.0'
|
|
59
59
|
gem 'net-openvpn', '0.8.7'
|
|
60
60
|
gem 'net-smtp', '0.5.1'
|
|
61
61
|
gem 'nexpose', '7.3.0'
|
|
62
|
-
gem 'nokogiri', '1.19.
|
|
62
|
+
gem 'nokogiri', '1.19.3'
|
|
63
63
|
gem 'nokogiri-diff', '0.3.0'
|
|
64
64
|
gem 'oily_png', '1.2.1'
|
|
65
65
|
gem 'open3', '0.2.1'
|
|
@@ -73,7 +73,7 @@ gem 'pry', '0.16.0'
|
|
|
73
73
|
gem 'pry-doc', '1.7.0'
|
|
74
74
|
gem 'rake', '13.4.2'
|
|
75
75
|
gem 'rb-readline', '0.5.5'
|
|
76
|
-
gem 'rbvmomi2', '3.
|
|
76
|
+
gem 'rbvmomi2', '3.10.0'
|
|
77
77
|
gem 'rdoc', '7.0.3'
|
|
78
78
|
gem 'rest-client', '2.1.0'
|
|
79
79
|
gem 'rex', '2.0.13'
|
|
@@ -93,7 +93,7 @@ gem 'selenium-devtools', '0.147.0'
|
|
|
93
93
|
gem 'selenium-webdriver', '4.43.0'
|
|
94
94
|
gem 'slack-ruby-client', '3.1.0'
|
|
95
95
|
gem 'socksify', '1.8.1'
|
|
96
|
-
gem 'spreadsheet', '1.3.
|
|
96
|
+
gem 'spreadsheet', '1.3.5'
|
|
97
97
|
gem 'sqlite3', '2.9.3'
|
|
98
98
|
gem 'thin', '2.0.1'
|
|
99
99
|
gem 'tty-prompt', '0.23.1'
|
data/README.md
CHANGED
|
@@ -37,7 +37,7 @@ $ cd /opt/pwn
|
|
|
37
37
|
$ ./install.sh
|
|
38
38
|
$ ./install.sh ruby-gem
|
|
39
39
|
$ pwn
|
|
40
|
-
pwn[v0.5.
|
|
40
|
+
pwn[v0.5.562]:001 >>> PWN.help
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
[](https://youtu.be/G7iLUY4FzsI)
|
|
@@ -52,7 +52,7 @@ $ rvm use ruby-4.0.1@pwn
|
|
|
52
52
|
$ gem uninstall --all --executables pwn
|
|
53
53
|
$ gem install --verbose pwn
|
|
54
54
|
$ pwn
|
|
55
|
-
pwn[v0.5.
|
|
55
|
+
pwn[v0.5.562]:001 >>> PWN.help
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
If you're using a multi-user install of RVM do:
|
|
@@ -62,7 +62,7 @@ $ rvm use ruby-4.0.1@pwn
|
|
|
62
62
|
$ rvmsudo gem uninstall --all --executables pwn
|
|
63
63
|
$ rvmsudo gem install --verbose pwn
|
|
64
64
|
$ pwn
|
|
65
|
-
pwn[v0.5.
|
|
65
|
+
pwn[v0.5.562]:001 >>> PWN.help
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
PWN periodically upgrades to the latest version of Ruby which is reflected in `/opt/pwn/.ruby-version`. The easiest way to upgrade to the latest version of Ruby from a previous PWN installation is to run the following script:
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Vulnerability Report Template
|
|
2
|
+
|
|
3
|
+
**Program:** [HackerOne Program Name]
|
|
4
|
+
**Report Date:** [YYYY-MM-DD]
|
|
5
|
+
**Severity:** [Critical/High/Medium/Low]
|
|
6
|
+
|
|
7
|
+
## 1. Detailed finding description with technical depth and PoC when possible
|
|
8
|
+
|
|
9
|
+
[Insert deep technical analysis, affected endpoints, steps to reproduce, PoC code/requests here.]
|
|
10
|
+
|
|
11
|
+
## 2. Business impact
|
|
12
|
+
|
|
13
|
+
[Business/reputational/financial consequences.]
|
|
14
|
+
|
|
15
|
+
## 3. Remediation recommendations, including compensating controls / stop gaps
|
|
16
|
+
|
|
17
|
+
[Fix recommendations, WAF rules, logging, etc.]
|
|
18
|
+
|
|
19
|
+
## 4. CVSS score, vector string, and first.org calculator URI
|
|
20
|
+
|
|
21
|
+
**CVSS v3.1 Score:** X.X (High)
|
|
22
|
+
**Vector:** AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
|
|
23
|
+
**Calculator:** https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
|
|
24
|
+
|
|
25
|
+
## 5. CWE category, brief description, and CWE URI
|
|
26
|
+
|
|
27
|
+
**CWE-XXX:** [Name] - [Brief desc]
|
|
28
|
+
https://cwe.mitre.org/data/definitions/XXX.html
|
|
29
|
+
|
|
30
|
+
## 6. Relevant NIST 800-53 control
|
|
31
|
+
|
|
32
|
+
**Control:** [e.g. SI-10, AC-6]
|
|
33
|
+
[Description and how it maps.]
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
*Generated with PWN::AI::Agent::VulnGen*
|
|
@@ -1,18 +1,29 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'fileutils'
|
|
4
|
+
|
|
3
5
|
module PWN
|
|
4
6
|
module AI
|
|
5
7
|
module Agent
|
|
6
|
-
# This module is an AI agent designed to analyze generic vulnerability descriptions and generate detailed security findings
|
|
8
|
+
# This module is an AI agent designed to analyze generic vulnerability descriptions and generate detailed security findings following the exact bug bounty writeup structure:
|
|
9
|
+
# 1. Detailed finding description with technical depth and PoC when possible
|
|
10
|
+
# 2. Business impact
|
|
11
|
+
# 3. Remediation recommendations, including compensating controls / stop gaps
|
|
12
|
+
# 4. CVSS score, vector string, and first.org calculator URI
|
|
13
|
+
# 5. CWE category, brief description, and CWE URI
|
|
14
|
+
# 6. Relevant NIST 800-53 control
|
|
15
|
+
# It leverages the PWN::AI::Introspection.reflect_on method. Defaults to Jira for existing workflow compatibility.
|
|
7
16
|
module VulnGen
|
|
8
17
|
# Supported Method Parameters::
|
|
9
18
|
# ai_analysis = PWN::AI::Agent::VulnGen.analyze(
|
|
10
19
|
# request: 'required - high level description of vulnerability discovered (e.g. "Discovered a SQLi vulnerability in /login"',
|
|
11
|
-
# markup_type: 'optional - specify the type of markup to generate :jira|:markdown|:html|:confluence|:xml (default: :jira)'
|
|
20
|
+
# markup_type: 'optional - specify the type of markup to generate :jira|:markdown|:html|:confluence|:xml (default: :jira)',
|
|
21
|
+
# output_path: 'optional - path to save the generated markdown report'
|
|
12
22
|
# )
|
|
13
23
|
|
|
14
24
|
public_class_method def self.analyze(opts = {})
|
|
15
25
|
request = opts[:request]
|
|
26
|
+
output_path = opts[:output_path]
|
|
16
27
|
raise 'ERROR: request parameter is required' if request.nil? || request.empty?
|
|
17
28
|
|
|
18
29
|
markup_type = opts[:markup_type] ||= :jira
|
|
@@ -34,28 +45,36 @@ module PWN
|
|
|
34
45
|
end
|
|
35
46
|
|
|
36
47
|
system_role_content = "
|
|
37
|
-
_ALWAYS_ Generate #{markup} security findings for the message provided
|
|
48
|
+
_ALWAYS_ Generate #{markup} security findings for the message provided using **EXACTLY** this structure and section headers:
|
|
38
49
|
|
|
39
|
-
1. Detailed Finding Description: This should be a deep, detailed technical description that should include exploit proof-of-concepts when possible.
|
|
50
|
+
1. Detailed Finding Description: This should be a deep, detailed technical description that should include exploit proof-of-concepts when possible. The description should be technical in nature and provide enough information for a security engineer to understand the vulnerability and how it can be exploited. Code snippets should be included where applicable to demonstrate the vulnerability and potential exploit paths.
|
|
40
51
|
|
|
41
52
|
2. Business Impact: This should describe, in business terms, the importance of fixing the issue. Reputational and/or financial impact should be considered for this section.
|
|
42
53
|
|
|
43
54
|
3. Remediation Recommendations: Targeted towards technical engineers that can ascertain a reasonable approach to fix the vulnerability based upon common security remediation patterns. Be sure to consider compensating controls / stop gaps that can be implemented (e.g. WAF, additional logging, etc.) until such time the vulnerability can be fixed. Provide examples in cases where code fixes may be required.
|
|
44
55
|
|
|
45
|
-
4. CVSS Score (Severity), Base CVSS Vector string as /AV:`N|L|A|P`/AC:`L|H`/PR:`N|L|H`/UI:`N|R`/S:`U|C`/C:`N|L|H`/I:`N|L|H`/A:`N|L|H`, and first.org CVSS calculator URI as https://www.first.org/cvss/calculator/3-1#CVSS:3.1/AV:`N|L|A|P`/AC:`L|H`/PR:`N|L|H`/UI:`N|R`/S:`U|C`/C:`N|L|H`/I:`N|L|H`/A:`N|L|H`. The Vector string must be formatted like: `/AV:%s/AC:%s/PR:%s/UI:%s/S:%s/C:%s/I:%s/A:%s`.
|
|
56
|
+
4. CVSS Score (Severity), Base CVSS Vector string as /AV:`N|L|A|P`/AC:`L|H`/PR:`N|L|H`/UI:`N|R`/S:`U|C`/C:`N|L|H`/I:`N|L|H`/A:`N|L|H`, and first.org CVSS calculator URI as https://www.first.org/cvss/calculator/3-1#CVSS:3.1/AV:`N|L|A|P`/AC:`L|H`/PR:`N|L|H`/UI:`N|R`/S:`U|C`/C:`N|L|H`/I:`N|L|H`/A:`N|L|H`. The Vector string must be formatted like: `/AV:%s/AC:%s/PR:%s/UI:%s/S:%s/C:%s/I:%s/A:%s`. _Ensure the CVSS score and severity aligns with the vector string calculation._
|
|
46
57
|
|
|
47
58
|
5. CWE Category, Brief CWE description, and CWE URI
|
|
48
59
|
|
|
49
60
|
6. NIST 800-53 Security Control that is impacted by this vulnerability.
|
|
50
61
|
"
|
|
51
62
|
|
|
52
|
-
PWN::AI::Introspection.reflect_on(
|
|
63
|
+
analysis = PWN::AI::Introspection.reflect_on(
|
|
53
64
|
system_role_content: system_role_content,
|
|
54
65
|
request: request,
|
|
55
66
|
suppress_pii_warning: true
|
|
56
67
|
)
|
|
68
|
+
|
|
69
|
+
if output_path
|
|
70
|
+
FileUtils.mkdir_p(File.dirname(output_path))
|
|
71
|
+
File.write(output_path, analysis.to_s)
|
|
72
|
+
puts "\nVulnerability report written to: #{output_path}"
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
analysis
|
|
57
76
|
rescue StandardError => e
|
|
58
|
-
raise e
|
|
77
|
+
raise e
|
|
59
78
|
end
|
|
60
79
|
|
|
61
80
|
# Author(s):: 0day Inc. <support@0dayinc.com>
|
|
@@ -72,7 +91,8 @@ module PWN
|
|
|
72
91
|
puts "USAGE:
|
|
73
92
|
ai_analysis = #{self}.analyze(
|
|
74
93
|
request: 'required - high level description of vulnerability discovered (e.g. \"Discovered a SQLi vulnerability in /login\"',
|
|
75
|
-
markup_type: 'optional - specify the type of markup to generate :jira|:markdown|:html|:confluence|:xml (default: :jira)'
|
|
94
|
+
markup_type: 'optional - specify the type of markup to generate :jira|:markdown|:html|:confluence|:xml (default: :jira)',
|
|
95
|
+
output_path: 'optional - full path to save the generated report as .md (e.g. /home/claw/reports/sqli-finding.md)'
|
|
76
96
|
)
|
|
77
97
|
|
|
78
98
|
#{self}.authors
|
data/lib/pwn/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pwn
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.562
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- 0day Inc.
|
|
@@ -141,14 +141,14 @@ dependencies:
|
|
|
141
141
|
requirements:
|
|
142
142
|
- - ">="
|
|
143
143
|
- !ruby/object:Gem::Version
|
|
144
|
-
version: 4.0.
|
|
144
|
+
version: 4.0.11
|
|
145
145
|
type: :development
|
|
146
146
|
prerelease: false
|
|
147
147
|
version_requirements: !ruby/object:Gem::Requirement
|
|
148
148
|
requirements:
|
|
149
149
|
- - ">="
|
|
150
150
|
- !ruby/object:Gem::Version
|
|
151
|
-
version: 4.0.
|
|
151
|
+
version: 4.0.11
|
|
152
152
|
- !ruby/object:Gem::Dependency
|
|
153
153
|
name: bundler-audit
|
|
154
154
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -533,14 +533,14 @@ dependencies:
|
|
|
533
533
|
requirements:
|
|
534
534
|
- - '='
|
|
535
535
|
- !ruby/object:Gem::Version
|
|
536
|
-
version: 0.
|
|
536
|
+
version: 0.14.0
|
|
537
537
|
type: :runtime
|
|
538
538
|
prerelease: false
|
|
539
539
|
version_requirements: !ruby/object:Gem::Requirement
|
|
540
540
|
requirements:
|
|
541
541
|
- - '='
|
|
542
542
|
- !ruby/object:Gem::Version
|
|
543
|
-
version: 0.
|
|
543
|
+
version: 0.14.0
|
|
544
544
|
- !ruby/object:Gem::Dependency
|
|
545
545
|
name: meshtastic
|
|
546
546
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -575,14 +575,14 @@ dependencies:
|
|
|
575
575
|
requirements:
|
|
576
576
|
- - '='
|
|
577
577
|
- !ruby/object:Gem::Version
|
|
578
|
-
version: 2.
|
|
578
|
+
version: 2.24.0
|
|
579
579
|
type: :runtime
|
|
580
580
|
prerelease: false
|
|
581
581
|
version_requirements: !ruby/object:Gem::Requirement
|
|
582
582
|
requirements:
|
|
583
583
|
- - '='
|
|
584
584
|
- !ruby/object:Gem::Version
|
|
585
|
-
version: 2.
|
|
585
|
+
version: 2.24.0
|
|
586
586
|
- !ruby/object:Gem::Dependency
|
|
587
587
|
name: msfrpc-client
|
|
588
588
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -673,14 +673,14 @@ dependencies:
|
|
|
673
673
|
requirements:
|
|
674
674
|
- - '='
|
|
675
675
|
- !ruby/object:Gem::Version
|
|
676
|
-
version: 1.19.
|
|
676
|
+
version: 1.19.3
|
|
677
677
|
type: :runtime
|
|
678
678
|
prerelease: false
|
|
679
679
|
version_requirements: !ruby/object:Gem::Requirement
|
|
680
680
|
requirements:
|
|
681
681
|
- - '='
|
|
682
682
|
- !ruby/object:Gem::Version
|
|
683
|
-
version: 1.19.
|
|
683
|
+
version: 1.19.3
|
|
684
684
|
- !ruby/object:Gem::Dependency
|
|
685
685
|
name: nokogiri-diff
|
|
686
686
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -869,14 +869,14 @@ dependencies:
|
|
|
869
869
|
requirements:
|
|
870
870
|
- - '='
|
|
871
871
|
- !ruby/object:Gem::Version
|
|
872
|
-
version: 3.
|
|
872
|
+
version: 3.10.0
|
|
873
873
|
type: :runtime
|
|
874
874
|
prerelease: false
|
|
875
875
|
version_requirements: !ruby/object:Gem::Requirement
|
|
876
876
|
requirements:
|
|
877
877
|
- - '='
|
|
878
878
|
- !ruby/object:Gem::Version
|
|
879
|
-
version: 3.
|
|
879
|
+
version: 3.10.0
|
|
880
880
|
- !ruby/object:Gem::Dependency
|
|
881
881
|
name: rdoc
|
|
882
882
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -1149,14 +1149,14 @@ dependencies:
|
|
|
1149
1149
|
requirements:
|
|
1150
1150
|
- - '='
|
|
1151
1151
|
- !ruby/object:Gem::Version
|
|
1152
|
-
version: 1.3.
|
|
1152
|
+
version: 1.3.5
|
|
1153
1153
|
type: :runtime
|
|
1154
1154
|
prerelease: false
|
|
1155
1155
|
version_requirements: !ruby/object:Gem::Requirement
|
|
1156
1156
|
requirements:
|
|
1157
1157
|
- - '='
|
|
1158
1158
|
- !ruby/object:Gem::Version
|
|
1159
|
-
version: 1.3.
|
|
1159
|
+
version: 1.3.5
|
|
1160
1160
|
- !ruby/object:Gem::Dependency
|
|
1161
1161
|
name: sqlite3
|
|
1162
1162
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -1463,6 +1463,7 @@ files:
|
|
|
1463
1463
|
- documentation/pwn_wallpaper.jpg
|
|
1464
1464
|
- documentation/ringing-spectrogram.png
|
|
1465
1465
|
- documentation/ringing-waveform.png
|
|
1466
|
+
- documentation/vulnerability_report_template.md
|
|
1466
1467
|
- etc/systemd/msfrpcd.service
|
|
1467
1468
|
- etc/systemd/openvas.service
|
|
1468
1469
|
- etc/userland/aws/apache2/jenkins_443.conf
|
|
@@ -2483,7 +2484,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
2483
2484
|
- !ruby/object:Gem::Version
|
|
2484
2485
|
version: '0'
|
|
2485
2486
|
requirements: []
|
|
2486
|
-
rubygems_version: 4.0.
|
|
2487
|
+
rubygems_version: 4.0.11
|
|
2487
2488
|
specification_version: 4
|
|
2488
2489
|
summary: Automated Security Testing for CI/CD Pipelines & Beyond
|
|
2489
2490
|
test_files: []
|