HexBrain

HackerOne · Report #357485

Hacktivity of a private program visible to banned user if he gets invited to a program by hackbot

Validstatus
lowseverity
$500bounty
45upvotes
27 Jun 2018disclosed

How it was found

Summary: The hacktivity of a private program is visible to banned user if he gets invited to a program by hackbot. Description: Back in 2016 i was banned by █████'s private program ( ███ ) due to some conflict between me and their security team, i think they manually put me in banned users list, but few months back i was invited to █████████'s Program by Hackbot in the occasional invites HackerOne sends and i accepted it. But still i am not able to access their program which obviously i shouldn't as i am banned by their security team, but today i noticed in Hacktivity that i am still able to view the reports they have closed. ████ While going to ██████████ still shows me Page not found :

██████

Also in my profile's whitelisted_team_ids i can see the team id of ██████████ ████ #Also i am able to make the following requests :

1) Get Complete Hacktivity of program :

Request :

GET /hacktivity?sort_type=latest_disclosable_activity_at&page=1&filter=type%3Aall%20to%3A██████████&range=forever HTTP/1.1
Host: hackerone.com
Connection: close
Accept: application/json, text/javascript, */*; q=0.01
X-CSRF-Token: REDACTED
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
Content-Type: application/json
DNT: 1
Referer: https://hackerone.com/REDACTED/hacktivity
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: REDACTED

Response :

HTTP/1.1 200 OK
Date: Fri, 25 May 2018 14:30:37 GMT
Content-Type: application/json; charset=utf-8
Connection: close
Cache-Control: private, no-cache, no-store, must-revalidate
Content-Disposition: inline; filename="response.json"
X-Request-Id: 17dafd21-a2e3-42c5-b046-e061da2a283c
Set-Cookie: REDACTED
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Expect-CT: enforce, max-age=86400
Content-Security-Policy: default-src 'none'; base-uri 'self'; block-all-mixed-content; child-src www.youtube-nocookie.com; connect-src 'self' www.google-analytics.com errors.hackerone.net; font-src 'self'; form-action 'self'; frame-ancestors 'none'; img-src 'self' data: cover-photos.hackerone-user-content.com hackathon-photos.hackerone-user-content.com profile-photos.hackerone-user-content.com hackerone-attachments.s3.amazonaws.com; media-src 'self' hackerone-attachments.s3.amazonaws.com; script-src 'self' www.google-analytics.com; style-src 'self' 'unsafe-inline'; report-uri https://errors.hackerone.net/api/30/csp-report/?sentry_key=61c1e2f50d21487c97a071737701f598
Referrer-Policy: strict-origin-when-cross-origin
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-XSS-Protection: 1; mode=block
Server: cloudflare
CF-RAY: 4208b363780d8a7f-BOM
Content-Length: 17633

████████

##2) In Scope Items / Assets

Request :

POST /graphql HTTP/1.1
Host: hackerone.com
Connection: close
Content-Length: 1250
Accept: */*
X-Auth-Token: REDACTED
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
Origin: https://hackerone.com
Content-Type: application/json
DNT: 1
Referer: https://hackerone.com/REDACTED
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: REDACTED

{"query":"query Team_assets($first_0:Int!,$first_1:Int!) {\n  query {\n    id,\n    ...F0\n  }\n}\nfragment F0 on Query {\n  me {\n    _membership3abeOl:membership(team_handle:\"██████\") {\n      permissions,\n      id\n    },\n    id\n  },\n  _team3p4BfA:team(handle:\"███\") {\n    handle,\n    _structured_scopes2tadtg:structured_scopes(first:$first_0,archived:false) {\n      max_updated_at\n    },\n    _structured_scopes2tzyk4:structured_scopes(first:$first_1,archived:false,eligible_for_submission:true) {\n      edges {\n        node {\n          id,\n          asset_type,\n          asset_identifier,\n          rendered_instruction,\n          max_severity,\n          eligible_for_bounty\n        },\n        cursor\n      },\n      pageInfo {\n        hasNextPage,\n        hasPreviousPage\n      }\n    },\n    _structured_scopes1j7lgN:structured_scopes(first:$first_1,archived:false,eligible_for_submission:false) {\n      edges {\n        node {\n          id,\n          asset_type,\n          asset_identifier,\n          rendered_instruction\n        },\n        cursor\n      },\n      pageInfo {\n        hasNextPage,\n        hasPreviousPage\n      }\n    },\n    id\n  },\n  id\n}","variables":{"first_0":100,"first_1":50}}

Response :

HTTP/1.1 200 OK
Date: Fri, 25 May 2018 14:44:40 GMT
Content-Type: application/json; charset=utf-8
Connection: close
Cache-Control: private, no-cache, no-store, must-revalidate
Content-Disposition: inline; filename="response."
X-Request-Id: 9c159688-f22b-4f74-89ef-73df5e85a2f3
Set-Cookie: REDACTED
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Expect-CT: enforce, max-age=86400
Content-Security-Policy: default-src 'none'; base-uri 'self'; block-all-mixed-content; child-src www.youtube-nocookie.com b5s.hackerone-ext-content.com; connect-src 'self' www.google-analytics.com errors.hackerone.net; font-src 'self'; form-action 'self'; frame-ancestors 'none'; img-src 'self' data: cover-photos.hackerone-user-content.com hackathon-photos.hackerone-user-content.com profile-photos.hackerone-user-content.com hackerone-attachments.s3.amazonaws.com; media-src 'self' hackerone-attachments.s3.amazonaws.com; script-src 'self' www.google-analytics.com; style-src 'self' 'unsafe-inline'; report-uri https://errors.hackerone.net/api/30/csp-report/?sentry_key=61c1e2f50d21487c97a071737701f598
Referrer-Policy: strict-origin-when-cross-origin
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-XSS-Protection: 1; mode=block
Server: cloudflare
CF-RAY: 4208c802e9c88aa3-BOM
Content-Length: 5292

████████

##3) Program Updates

Request :

POST /graphql HTTP/1.1
Host: hackerone.com
Connection: close
Content-Length: 496
Accept: */*
X-Auth-Token: REDACTED
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
Origin: https://hackerone.com
Content-Type: application/json
DNT: 1
Referer: https://hackerone.com/REDACTED/updates
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: REDACTED

{"query":"query Team_posts($first_0:Int!) {\n  query {\n    id,\n    ...F0\n  }\n}\nfragment F0 on Query {\n  _teamhn8Kp:team(handle:\"█████████\") {\n    _posts3y3M77:posts(first:$first_0) {\n      total_count,\n      edges {\n        node {\n          id,\n          created_at,\n          markdown_message,\n          title\n        },\n        cursor\n      },\n      pageInfo {\n        hasNextPage,\n        hasPreviousPage\n      }\n    },\n    id\n  },\n  id\n}","variables":{"first_0":100}}

Response :

HTTP/1.1 200 OK
Date: Fri, 25 May 2018 14:33:25 GMT
Content-Type: application/json; charset=utf-8
Connection: close
Cache-Control: private, no-cache, no-store, must-revalidate
Content-Disposition: inline; filename="response."
X-Request-Id: 19e8ac92-8663-49b9-a614-a80e01b8d2df
Set-Cookie: REEDACTED
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Expect-CT: enforce, max-age=86400
Content-Security-Policy: default-src 'none'; base-uri 'self'; block-all-mixed-content; child-src www.youtube-nocookie.com b5s.hackerone-ext-content.com; connect-src 'self' www.google-analytics.com errors.hackerone.net; font-src 'self'; form-action 'self'; frame-ancestors 'none'; img-src 'self' data: cover-photos.hackerone-user-content.com hackathon-photos.hackerone-user-content.com profile-photos.hackerone-user-content.com hackerone-attachments.s3.amazonaws.com; media-src 'self' hackerone-attachments.s3.amazonaws.com; script-src 'self' www.google-analytics.com; style-src 'self' 'unsafe-inline'; report-uri https://errors.hackerone.net/api/30/csp-report/?sentry_key=61c1e2f50d21487c97a071737701f598
Referrer-Policy: strict-origin-when-cross-origin
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: none
X-XSS-Protection: 1; mode=block
Server: cloudflare
CF-RAY: 4208b7850b348aa9-BOM
Content-Length: 240

████████

Impact

As hackerone is sending lot of invites these days so it is possible that the users a program banned get invites by hackbot, hackbot shouldn't send invites to users who are in the banned list of program whose invite is being sent to the hacker and/or the above endpoints should check if the user is in program ban list.

Regards, Parth :)

This report was disclosed publicly on HackerOne and belongs to its author and the program. See the original