Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1020 CNY

100%

CVE-2024-3273 PoC — D-Link DNS-320L/DNS-325/DNS-327L/DNS-340L HTTP GET Request nas_sharing.cgi command injection

Source
Associated Vulnerability
Title:D-Link DNS-320L/DNS-325/DNS-327L/DNS-340L HTTP GET Request nas_sharing.cgi command injection (CVE-2024-3273)
Description:** UNSUPPORTED WHEN ASSIGNED ** A vulnerability, which was classified as critical, was found in D-Link DNS-320L, DNS-325, DNS-327L and DNS-340L up to 20240403. Affected is an unknown function of the file /cgi-bin/nas_sharing.cgi of the component HTTP GET Request Handler. The manipulation of the argument system leads to command injection. It is possible to launch the attack remotely. The exploit has been disclosed to the public and may be used. The identifier of this vulnerability is VDB-259284. NOTE: This vulnerability only affects products that are no longer supported by the maintainer. NOTE: Vendor was contacted early and confirmed immediately that the product is end-of-life. It should be retired and replaced.
Description
Quick and dirty honeypot for CVE-2024-3273
Readme
# honeypot-dlink-CVE-2024-3273
Quick and dirty honeypot for CVE-2024-3273.
This template can be used to setup a basic honeypot in ~10min.

**TL;DR:**
- Find <vulnerable device> (fofa, shodan, onyphe, ...).
- Clone it with the `wget_clone_http.sh`.
- Manual tinkering to make the honeypot more realistic (cloning isn't perfect so some files 404).
- Add rule matching the exploit path (and exploit handling logic) to `server.py`.
- Save and run!

Files are downloaded with the `--save-headers` flag set (equivalent to `curl`'s `--include`) to mimic the headers the server we're masquarading as would send.

**Sources**:
- https://www.bleepingcomputer.com/news/security/over-92-000-exposed-d-link-nas-devices-have-a-backdoor-account/
- https://github.com/netsecfish/dlink
- https://www.greynoise.io/blog/cve-2024-3273-d-link-nas-rce-exploited-in-the-wild
File Snapshot

[4.0K] /data/pocs/e647daf399dfa73b1fd01c1f1e0d03b6bd617de4 ├── [ 593] 404.req ├── [ 316] honey.req ├── [4.0K] output │   ├── [4.0K] cgi-bin │   │   └── [ 363] login_mgr.cgi │   ├── [ 11K] index.html │   └── [4.0K] web │   ├── [4.0K] css │   │   ├── [4.5K] button_style.css │   │   └── [ 13K] style.css │   ├── [4.0K] function │   │   ├── [3.4K] base64.js │   │   ├── [1.8K] define.js │   │   ├── [ 20K] init.js │   │   ├── [2.4K] port.js │   │   └── [1.6K] rc4.js │   ├── [4.0K] images │   │   ├── [4.0K] addon │   │   │   └── [3.6K] but_white.png │   │   ├── [ 15K] apply_off.jpg │   │   ├── [2.9K] apply.png │   │   ├── [ 575] arrow_down.png │   │   ├── [ 636] arrow_right.png │   │   ├── [1.1K] arrow-square.gif │   │   ├── [ 704] bg.png │   │   ├── [2.9K] bg_unselected.png │   │   ├── [123K] big_loading.gif │   │   ├── [4.0K] button │   │   │   ├── [ 18K] button_arrow.gif │   │   │   ├── [1.2K] button-display.png │   │   │   ├── [1.8K] button-h.png │   │   │   ├── [1.4K] button.png │   │   │   ├── [2.3K] large-button-display.png │   │   │   ├── [2.4K] large-button.png │   │   │   ├── [2.4K] large-h-button.png │   │   │   ├── [1.3K] max-button-display.png │   │   │   ├── [1.4K] max-button.png │   │   │   ├── [2.3K] max-generic-button.png │   │   │   ├── [2.8K] max-generic-h-button.png │   │   │   ├── [1.5K] max-h-button.png │   │   │   ├── [2.2K] max-wizard-button.png │   │   │   ├── [2.2K] max-wizard-h-button.png │   │   │   ├── [1.5K] medium-button.png │   │   │   ├── [1.9K] medium-h-button.png │   │   │   ├── [1.3K] middle-button-display.png │   │   │   ├── [2.0K] min-button-display.png │   │   │   ├── [2.4K] min-button.png │   │   │   └── [3.5K] min-h-button.png │   │   ├── [5.9K] button-on.png │   │   ├── [2.9K] button.png │   │   ├── [2.6K] close_o.png │   │   ├── [2.7K] close.png │   │   ├── [ 13K] lbox_bg.jpg │   │   ├── [3.5K] light_bt.png │   │   ├── [6.6K] login.png │   │   ├── [1.4K] logo2.png │   │   ├── [1.9K] logo.png │   │   ├── [4.0K] management │   │   │   ├── [ 632] logout.png │   │   │   └── [ 564] sel_bg.png │   │   ├── [ 486] p_bg.png │   │   ├── [4.0K] percent_bg.png │   │   ├── [ 806] pop_bg.png │   │   ├── [3.2K] status_ok.png │   │   ├── [ 526] table_middle.png │   │   └── [3.4K] v_bg.png │   ├── [4.0K] jquery │   │   ├── [4.0K] alerts │   │   │   ├── [4.0K] images │   │   │   │   ├── [4.7K] alert_m.png │   │   │   │   ├── [3.4K] alert_xl.png │   │   │   │   ├── [5.3K] confirm.png │   │   │   │   ├── [4.6K] error.png │   │   │   │   ├── [4.8K] info.png │   │   │   │   └── [4.7K] ok.png │   │   │   ├── [2.4K] jquery.alerts.css │   │   │   └── [8.6K] jquery.alerts.js │   │   ├── [4.0K] jquery.cookie │   │   │   ├── [4.2K] jquery.cookie.js │   │   │   └── [1.4K] jquery.cookie.pack.js │   │   └── [4.0K] js │   │   ├── [230K] jquery_1.6.1.js │   │   └── [ 21K] jquery.tools.min.js │   └── [ 11K] relogin.html ├── [ 852] README.md ├── [3.5K] server.py └── [ 195] wget_clone_http.sh 14 directories, 73 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →