hackerone-client 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c7f8ebc4db13ee0c4e72453bbe928046adf079e0
4
- data.tar.gz: b7155b4ce06a7cc0dbfaf748eb7c8dad175d4455
3
+ metadata.gz: 19b5c8045568698cffb058a287be354b48252d72
4
+ data.tar.gz: 1a839adb7d84c5c61ac7f019f31a752425c9c3fc
5
5
  SHA512:
6
- metadata.gz: fa218423cbde7a7d0b96e752fe409c7b28b853abedd3b98cd07ee9f2671e3ccbd82ebfa2e143c87410fc7ef22621ffd0e716c714960e46a21f420f32b3816c06
7
- data.tar.gz: 66e707d5630b0d77edc6de393352cd03cf20d9cbd7b3f30decf7c2b63ef1d769d95034652eac723df214b65b768a874c09a7b4336b769d5ecd933dddea9b290d
6
+ metadata.gz: eddbaa770af39b40503c29ced0b963b40c673fff48312114f806c040d13fddfd6f24d1cfac1c06f74c6b45ddf3561c9d1228e087ec41d0b2a4144821b0d83350
7
+ data.tar.gz: 0ddc584b516d072e2c8e32f216be16d4e16dc38d39ee99b0e52bf89737a79ec948ccd044c8ef4bf5b1a919c35ffda3a795695955ef46151279af744d88c5b4a0
@@ -1,3 +1,7 @@
1
+ ## [0.7.0] - 2017-08-28
2
+
3
+ - Feature: retrieve common responses (@esjee)
4
+
1
5
  ## [0.6.0] - 2017-07-24
2
6
 
3
7
  - Feature: comments (internal or not) can be added to reports
@@ -7,14 +11,14 @@
7
11
  - Bugfix: structured scopes were not being populated correctly resulting in nil results for all attributes
8
12
 
9
13
  ## [0.5.1] - 2017-06-26
10
- ### Added
14
+
11
15
  - [Structure scope](https://api.hackerone.com/docs/v1#structured-scope) data added to report object
12
16
 
13
17
  ## [0.5.0] - 2017-06-23
14
- ### Added
18
+
15
19
  - `report.assign_to_user` and `report.assign_to_group` (@esjee)
16
20
 
17
21
  ## [0.4.0] - 2017-04-21
18
- ### Added
22
+
19
23
  - `client.reporters` to return all reporters for a given project (@esjee)
20
24
  - `HackerOne::Client::Program.find(program_name)` to return information about a given program (@esjee)
data/README.md CHANGED
@@ -31,6 +31,11 @@ client.triage(id, reference)
31
31
 
32
32
  # GET `/{program}/reporters` returns a list of unique reporters that have reported to your program
33
33
  client.reporters
34
+
35
+ program = HackerOne::Client::Program.find("insert-program-name-here")
36
+
37
+ # returns all common responses
38
+ program.common_responses
34
39
  ```
35
40
 
36
41
  ## Usage
@@ -0,0 +1,167 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.hackerone.com/v1/programs/18969/common_responses?page%5Bnumber%5D=1&page%5Bsize%5D=100
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Authorization:
11
+ - Basic NOPE
12
+ User-Agent:
13
+ - Faraday v0.13.0
14
+ Content-Type:
15
+ - application/json
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ Accept:
19
+ - "*/*"
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Date:
26
+ - Mon, 28 Aug 2017 11:20:40 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Connection:
32
+ - keep-alive
33
+ Set-Cookie:
34
+ - __cfduid=dafee7223f650cd1e244d455e37ea169f1503919239; expires=Tue, 28-Aug-18
35
+ 11:20:39 GMT; path=/; Domain=api.hackerone.com; HttpOnly
36
+ X-Request-Id:
37
+ - 21d28136-7750-4557-83fb-e359b93a941b
38
+ Etag:
39
+ - W/"9b1e2aa1721b777df242b64b310c51bb"
40
+ Cache-Control:
41
+ - max-age=0, private, must-revalidate
42
+ Strict-Transport-Security:
43
+ - max-age=31536000; includeSubDomains; preload
44
+ Content-Security-Policy:
45
+ - 'default-src ''none''; base-uri ''self''; block-all-mixed-content; child-src
46
+ www.youtube-nocookie.com; connect-src ''self'' www.google-analytics.com errors.hackerone.net;
47
+ font-src ''self''; form-action ''self''; frame-ancestors ''none''; img-src
48
+ ''self'' data: cover-photos.hackerone-user-content.com hackathon-photos.hackerone-user-content.com
49
+ profile-photos.hackerone-user-content.com hackerone-attachments.s3.amazonaws.com;
50
+ media-src ''self'' hackerone-attachments.s3.amazonaws.com; script-src ''self''
51
+ www.google-analytics.com; style-src ''self'' ''unsafe-inline''; report-uri
52
+ https://errors.hackerone.net/api/30/csp-report/?sentry_key=61c1e2f50d21487c97a071737701f598'
53
+ Referrer-Policy:
54
+ - origin-when-cross-origin
55
+ X-Content-Type-Options:
56
+ - nosniff
57
+ X-Download-Options:
58
+ - noopen
59
+ X-Frame-Options:
60
+ - DENY
61
+ X-Permitted-Cross-Domain-Policies:
62
+ - none
63
+ X-Xss-Protection:
64
+ - 1; mode=block
65
+ Public-Key-Pins-Report-Only:
66
+ - pin-sha256="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; pin-sha256="r/mIkG3eEpVdm+u/ko/cwxzOMo1bk4TyHIlByibiA5E=";
67
+ pin-sha256="K87oWBWM9UZfyddvDfoxL+8lpNyoUB2ptGtn0fv6G2Q="; pin-sha256="iie1VXtL7HzAMF+/PVPR9xzT80kQxdZeJ+zduCB3uj0=";
68
+ pin-sha256="cGuxAXyFXFkWm61cF4HPWX8S0srS9j0aSqN0k4AP+4A="; pin-sha256="bIlWcjiKq1mftH/xd7Hw1JO77Cr+Gv+XYcGUQWwO+A4=";
69
+ pin-sha256="tXD+dGAP8rGY4PW1be90cOYEwg7pZ4G+yPZmIZWPTSg="; max-age=600; includeSubDomains;
70
+ report-uri="https://hackerone.report-uri.io/r/default/hpkp/reportOnly"
71
+ Server:
72
+ - cloudflare-nginx
73
+ Cf-Ray:
74
+ - 3956e1efab7972f5-AMS
75
+ body:
76
+ encoding: ASCII-8BIT
77
+ string: '{"data":[{"id":"108878","attributes":{"title":"Vulnerability Scanner
78
+ False Positive","message":"Automated vulnerability scanners commonly have
79
+ low priority issues and/or false positives. Before submitting the results
80
+ from a scanner, please take a moment to confirm that the reported issues are
81
+ actually valid and exploitable. Please reply if you have a working proof-of-concept
82
+ or reason to believe that this issue is exploitable.\n"}},{"id":"108879","attributes":{"title":"No
83
+ Security Implications","message":"Based on your initial description, there
84
+ do not appear to be any security implications as a direct result of this behavior.
85
+ If you disagree, please reply with additional information describing your
86
+ reasoning. Including a working proof-of-concept can be incredibly helpful
87
+ in our assessment of these claims.\n"}},{"id":"108880","attributes":{"title":"Language
88
+ Barrier","message":"Sorry, I''m having a difficult time understanding this
89
+ report. Please reply with a proof of concept and more technical details about
90
+ the vulnerability, the impact of this vulnerability and any suggested fixes
91
+ for this vulnerability. Including screenshots or a short video can be worth
92
+ a thousand words. If you don''t speak English, feel free to leave your report
93
+ in your own language, and we''ll try our best to find someone who can help
94
+ translate.\n"}},{"id":"108881","attributes":{"title":"Logout cross-site request
95
+ forgery","message":"For better or worse, the design of HTTP cookies means
96
+ that no single website can prevent its users from being logged out; consequently,
97
+ application-specific ways of achieving this goal will likely not qualify.
98
+ You may be interested in personal blog posts from Chris Evans (https://scarybeastsecurity.blogspot.com/2010/01/logout-xsrf-significant-web-app-bug.html)
99
+ and Michal Zalewski (https://lcamtuf.blogspot.com/2010/10/http-cookies-or-how-not-to-design.html)
100
+ for more background.\n"}},{"id":"108882","attributes":{"title":"Open Redirect","message":"We
101
+ recognize that the address bar is the only reliable security indicator in
102
+ modern browsers. As a result, we typically do not treat arbitrary URL redirection
103
+ behavior (\"Open Redirects\") as a security vulnerability unless you are able
104
+ to demonstrate risks that do not depend upon social engineering.\n"}},{"id":"108883","attributes":{"title":"Strict-Transport-Security
105
+ Not Necessary On This Domain","message":"Automated vulnerability scanners
106
+ commonly have low priority issues and/or false positives. Before submitting
107
+ the results from a scanner, please take a moment to confirm that the reported
108
+ issues are actually valid and exploitable. In this specific case, the `Strict-Transport-Security`
109
+ header is not suitable for the domain in question because it is intentionally
110
+ accessible over both HTTP and HTTPS. If we ever migrate to 100% HTTPS on this
111
+ domain, we''ll consider enabling the header at that time.\n"}},{"id":"108884","attributes":{"title":"Cookie
112
+ Missing HttpOnly","message":"Automated vulnerability scanners commonly have
113
+ low priority issues and/or false positives. Before submitting the results
114
+ from a scanner, please take a moment to confirm that the reported issues are
115
+ actually valid and exploitable. In this specific case, many cookies intentionally
116
+ lack the `HttpOnly` flag so that they can be accessed from JavaScript. This
117
+ only introduces a potential risk if the cookie in question contains session
118
+ data or other sensitive information.\n"}},{"id":"108885","attributes":{"title":"Cookie
119
+ Missing Secure","message":"Automated vulnerability scanners commonly have
120
+ low priority issues and/or false positives. Before submitting the results
121
+ from a scanner, please take a moment to confirm that the reported issues are
122
+ actually valid and exploitable. In this specific case, many cookies intentionally
123
+ lack the `secure` flag so that they can be accessed from HTTP pages. This
124
+ only introduces a potential risk if the cookie in question contains sensitive
125
+ information that must be served over HTTPS.\n"}},{"id":"108886","attributes":{"title":"X-XSS-Protection","message":"Automated
126
+ vulnerability scanners commonly have low priority issues and/or false positives.
127
+ Before submitting the results from a scanner, please take a moment to confirm
128
+ that the reported issues are actually valid and exploitable. In this specific
129
+ case, we believe that the default state of the `X-XSS-Protection` header is
130
+ sufficient for our purposes. Please reply if you have a working proof-of-concept
131
+ that could be mitigated by an adjustment to our header.\n"}},{"id":"108887","attributes":{"title":"X-Content-Type-Options:
132
+ nosniff","message":"Automated vulnerability scanners commonly have low priority
133
+ issues and/or false positives. Before submitting the results from a scanner,
134
+ please take a moment to confirm that the reported issues are actually valid
135
+ and exploitable. In this specific case, the `X-Content-Type-Options: nosniff`
136
+ header is only necessary on endpoints that serve untrusted user content. Please
137
+ reply if you have a working proof-of-concept or reason to believe that this
138
+ issue is exploitable.\n"}},{"id":"108888","attributes":{"title":"X-Frame-Options
139
+ / Clickjacking","message":"The lack of X-Frame-Options does not always indicate
140
+ that a security vulnerability is present. This is an optional header that
141
+ is only necessary on endpoints where there UI is rendered to invoke state
142
+ changing actions. We recommend reading this informative post by David Ross:
143
+ https://plus.google.com/u/0/+DavidRossX/posts/jVrtTRd5yKP\n"}},{"id":"108889","attributes":{"title":"Autocomplete","message":"We
144
+ intentionally leave autocomplete enabled as we believe that all modern browsers
145
+ now handle local form completion in a reasonably sane manner. Autocomplete
146
+ enables individuals to use stronger passwords and makes them less susceptible
147
+ to phishing attacks. These benefits greatly outweigh the minor risk here.
148
+ If you disagree, we encourage you to also read this post: https://blog.0xbadc0de.be/archives/124\n"}},{"id":"108890","attributes":{"title":"SSL
149
+ - RC4 / BEAST Information","message":"Automated vulnerability scanners commonly
150
+ have low priority issues and/or false positives. Before submitting the results
151
+ from a scanner, please take a moment to confirm that the reported issues are
152
+ actually valid and exploitable. In this instance, we intentionally use RC4
153
+ when the client is connecting with TLS 1.0 and earlier as an effective mitigation
154
+ against the \"BEAST\" attack. For clients that support TLS 1.1 and higher,
155
+ we prioritize non-RC4 ciphers. We believe that this is consistent with current
156
+ industry best practices. For more information, please review this post: https://blog.cloudflare.com/killing-rc4\nThis
157
+ combination most effectively balances the competing risks associated with
158
+ weaker RC4 ciphers and the BEAST attack scenario.\n"}},{"id":"108891","attributes":{"title":"Video
159
+ Without Content","message":"Using a video to demonstrate a potential issue
160
+ should only be necessary in rare situations and should always be accompanied
161
+ with a text description of the issue as well. Please update this report with
162
+ step-by-step instructions to reproduce the core components of the issue. If
163
+ you don''t speak English, feel free to leave your report in your own language,
164
+ and we''ll try our best to find someone who can help translate.\n"}}],"links":{}}'
165
+ http_version:
166
+ recorded_at: Mon, 28 Aug 2017 11:20:40 GMT
167
+ recorded_with: VCR 3.0.3
@@ -1,6 +1,10 @@
1
+ require_relative './resource_helper'
2
+
1
3
  module HackerOne
2
4
  module Client
3
5
  class Program
6
+ include ResourceHelper
7
+
4
8
  delegate :handle, to: :attributes
5
9
 
6
10
  def self.find(program_handle_we_want)
@@ -37,6 +41,13 @@ module HackerOne
37
41
  groups.find { |group| group.name == groupname }
38
42
  end
39
43
 
44
+ def common_responses(page_number: 1, page_size: 100)
45
+ make_get_request(
46
+ "programs/#{id}/common_responses",
47
+ params: { page: { number: page_number, size: page_size } }
48
+ )
49
+ end
50
+
40
51
  private
41
52
 
42
53
  def members
@@ -0,0 +1,35 @@
1
+ module HackerOne
2
+ module Client
3
+ module ResourceHelper
4
+ def parse_response(response)
5
+ HackerOne::Client::Api.parse_response(response)
6
+ end
7
+
8
+ def make_post_request(url, request_body:)
9
+ response = HackerOne::Client::Api.hackerone_api_connection.post do |req|
10
+ req.headers['Content-Type'] = 'application/json'
11
+ req.url url
12
+ req.body = { data: request_body }.to_json
13
+ end
14
+
15
+ parse_response(response)
16
+ end
17
+
18
+ def make_get_request(url, params: {})
19
+ response = HackerOne::Client::Api.hackerone_api_connection.get do |req|
20
+ req.headers['Content-Type'] = 'application/json'
21
+ req.url url
22
+ req.params = params
23
+ end
24
+
25
+ parse_response(response)
26
+ end
27
+
28
+ private
29
+
30
+ def api_connection
31
+ HackerOne::Client::Api.hackerone_api_connection
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,5 +1,5 @@
1
1
  module Hackerone
2
2
  module Client
3
- VERSION = "0.6.0"
3
+ VERSION = "0.7.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hackerone-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neil Matatall
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-24 00:00:00.000000000 Z
11
+ date: 2017-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -142,6 +142,7 @@ files:
142
142
  - fixtures/vcr_cassettes/assign_report_to_nobody_no_permission.yml
143
143
  - fixtures/vcr_cassettes/assign_report_to_user.yml
144
144
  - fixtures/vcr_cassettes/assign_report_to_user_no_permission.yml
145
+ - fixtures/vcr_cassettes/common_responses.yml
145
146
  - fixtures/vcr_cassettes/empty_report_list.yml
146
147
  - fixtures/vcr_cassettes/missing_report.yml
147
148
  - fixtures/vcr_cassettes/programs.yml
@@ -159,6 +160,7 @@ files:
159
160
  - lib/hackerone/client/program.rb
160
161
  - lib/hackerone/client/report.rb
161
162
  - lib/hackerone/client/reporter.rb
163
+ - lib/hackerone/client/resource_helper.rb
162
164
  - lib/hackerone/client/structured_scope.rb
163
165
  - lib/hackerone/client/user.rb
164
166
  - lib/hackerone/client/version.rb
@@ -183,7 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
183
185
  version: '0'
184
186
  requirements: []
185
187
  rubyforge_project:
186
- rubygems_version: 2.2.0
188
+ rubygems_version: 2.4.5.1
187
189
  signing_key:
188
190
  specification_version: 4
189
191
  summary: A limited client for the HackerOne API