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

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2019-3980 PoC — Solarwinds Dameware Mini Remote Control agent 输入验证错误漏洞

Source
Associated Vulnerability
Title:Solarwinds Dameware Mini Remote Control agent 输入验证错误漏洞 (CVE-2019-3980)
Description:The Solarwinds Dameware Mini Remote Client agent v12.1.0.89 supports smart card authentication which can allow a user to upload an executable to be executed on the DWRCS.exe host. An unauthenticated, remote attacker can request smart card login and upload and execute an arbitrary executable run under the Local System account.
Description
CVE-2019-3980 exploit written in win32/c++ (openssl dependency). Port of https://github.com/tenable/poc/blob/master/Solarwinds/Dameware/dwrcs_dwDrvInst_rce.py
Readme
# CVE-2019-3980
CVE-2019-3980 exploit written in win32/c++ (openssl dependency). Port of https://github.com/tenable/poc/blob/master/Solarwinds/Dameware/dwrcs_dwDrvInst_rce.py

## Instructions
This PoC requires staticly linked openssl libraries. Place openssl includes in third_party\include\openssl and libs in third_party\libs\openssl\$(PlatformShortName)\

Rough build instructions for openssl:
* Install strawberry perl - https://strawberryperl.com/
* Install NASM - https://www.nasm.us/pub/nasm/stable/win64/
* From x64 Native Tools Command Prompt
```
cd c:\path\to\openssl\src
perl Configure VC-WIN64A no-shared --prefix=C:\path\to\build_directory
nmake
nmake install
 ```
IMPORTANT: The copy of openssl in this project is modified to allow unsafe prime numbers in the diffie-hellman function. 512 bit changes to 128. If building manually you will need to find and change the DH_MIN_MODULUS_BITS in dh_local.h to 128. (#define DH_MIN_MODULUS_BITS     128)

## Usage
```
-t <target ip>
-e <path to exe>
-p <port number (default: 6129>
```
File Snapshot

[4.0K] /data/pocs/02daac29e4ad06b5d651de7fdab9b50c5eaa0c1e ├── [1.0K] README.md ├── [4.0K] src │   ├── [ 30K] dameware.cpp │   ├── [ 602] dameware.h │   ├── [ 938] debug.cpp │   ├── [ 731] debug.h │   ├── [1006] getopt.cpp │   ├── [ 116] getopt.h │   └── [1.6K] main.cpp ├── [4.0K] third_party │   ├── [4.0K] include │   │   └── [4.0K] openssl │   │   ├── [3.7K] aes.h │   │   ├── [7.5K] asn1err.h │   │   ├── [ 59K] asn1.h │   │   ├── [ 37K] asn1.h.in │   │   ├── [ 398] asn1_mac.h │   │   ├── [ 35K] asn1t.h │   │   ├── [ 32K] asn1t.h.in │   │   ├── [ 842] asyncerr.h │   │   ├── [3.1K] async.h │   │   ├── [3.0K] bioerr.h │   │   ├── [ 39K] bio.h │   │   ├── [ 36K] bio.h.in │   │   ├── [2.6K] blowfish.h │   │   ├── [1.8K] bnerr.h │   │   ├── [ 23K] bn.h │   │   ├── [ 594] buffererr.h │   │   ├── [1.6K] buffer.h │   │   ├── [5.0K] camellia.h │   │   ├── [2.0K] cast.h │   │   ├── [1.6K] cmac.h │   │   ├── [5.8K] cmperr.h │   │   ├── [ 40K] cmp.h │   │   ├── [ 22K] cmp.h.in │   │   ├── [1.7K] cmp_util.h │   │   ├── [6.4K] cmserr.h │   │   ├── [ 33K] cms.h │   │   ├── [ 19K] cms.h.in │   │   ├── [ 813] comperr.h │   │   ├── [1.4K] comp.h │   │   ├── [1.4K] conf_api.h │   │   ├── [2.2K] conferr.h │   │   ├── [ 10K] conf.h │   │   ├── [5.7K] conf.h.in │   │   ├── [3.1K] configuration.h │   │   ├── [1.8K] configuration.h.in │   │   ├── [1.2K] conftypes.h │   │   ├── [ 46K] core_dispatch.h │   │   ├── [7.9K] core.h │   │   ├── [ 28K] core_names.h │   │   ├── [1.1K] core_object.h │   │   ├── [2.0K] crmferr.h │   │   ├── [ 14K] crmf.h │   │   ├── [7.7K] crmf.h.in │   │   ├── [1.8K] cryptoerr.h │   │   ├── [ 79K] cryptoerr_legacy.h │   │   ├── [ 23K] crypto.h │   │   ├── [ 21K] crypto.h.in │   │   ├── [1.6K] cterr.h │   │   ├── [ 22K] ct.h │   │   ├── [ 17K] ct.h.in │   │   ├── [ 729] __DECC_INCLUDE_EPILOGUE.H │   │   ├── [ 801] __DECC_INCLUDE_PROLOGUE.H │   │   ├── [ 791] decodererr.h │   │   ├── [5.6K] decoder.h │   │   ├── [8.3K] des.h │   │   ├── [2.4K] dherr.h │   │   ├── [ 15K] dh.h │   │   ├── [1.5K] dsaerr.h │   │   ├── [ 12K] dsa.h │   │   ├── [1.4K] dtls1.h │   │   ├── [1.0K] ebcdic.h │   │   ├── [ 361] ecdh.h │   │   ├── [ 361] ecdsa.h │   │   ├── [5.2K] ecerr.h │   │   ├── [ 66K] ec.h │   │   ├── [ 791] encodererr.h │   │   ├── [5.3K] encoder.h │   │   ├── [2.8K] engineerr.h │   │   ├── [ 38K] engine.h │   │   ├── [8.5K] e_os2.h │   │   ├── [ 21K] err.h │   │   ├── [ 19K] err.h.in │   │   ├── [1.1K] esserr.h │   │   ├── [8.8K] ess.h │   │   ├── [2.5K] ess.h.in │   │   ├── [7.2K] evperr.h │   │   ├── [101K] evp.h │   │   ├── [1010] fipskey.h │   │   ├── [ 798] fipskey.h.in │   │   ├── [1.6K] fips_names.h │   │   ├── [2.1K] hmac.h │   │   ├── [2.3K] httperr.h │   │   ├── [5.2K] http.h │   │   ├── [2.9K] idea.h │   │   ├── [ 482] kdferr.h │   │   ├── [5.5K] kdf.h │   │   ├── [ 14K] lhash.h │   │   ├── [ 10K] lhash.h.in │   │   ├── [9.9K] macros.h │   │   ├── [1.4K] md2.h │   │   ├── [1.7K] md4.h │   │   ├── [1.7K] md5.h │   │   ├── [1.4K] mdc2.h │   │   ├── [ 11K] modes.h │   │   ├── [ 782] objectserr.h │   │   ├── [6.7K] objects.h │   │   ├── [224K] obj_mac.h │   │   ├── [2.1K] ocsperr.h │   │   ├── [ 29K] ocsp.h │   │   ├── [ 16K] ocsp.h.in │   │   ├── [ 552] opensslconf.h │   │   ├── [3.1K] opensslv.h │   │   ├── [3.3K] opensslv.h.in │   │   ├── [ 562] ossl_typ.h │   │   ├── [2.7K] param_build.h │   │   ├── [7.2K] params.h │   │   ├── [ 531] pem2.h │   │   ├── [2.6K] pemerr.h │   │   ├── [ 25K] pem.h │   │   ├── [1.8K] pkcs12err.h │   │   ├── [ 19K] pkcs12.h │   │   ├── [ 16K] pkcs12.h.in │   │   ├── [2.9K] pkcs7err.h │   │   ├── [ 22K] pkcs7.h │   │   ├── [ 12K] pkcs7.h.in │   │   ├── [8.0K] proverr.h │   │   ├── [2.3K] provider.h │   │   ├── [ 981] prov_ssl.h │   │   ├── [3.2K] randerr.h │   │   ├── [3.8K] rand.h │   │   ├── [2.3K] rc2.h │   │   ├── [1.2K] rc4.h │   │   ├── [2.8K] rc5.h │   │   ├── [1.7K] ripemd.h │   │   ├── [5.5K] rsaerr.h │   │   ├── [ 27K] rsa.h │   │   ├── [ 18K] safestack.h │   │   ├── [8.5K] safestack.h.in │   │   ├── [3.9K] seed.h │   │   ├── [3.9K] self_test.h │   │   ├── [4.5K] sha.h │   │   ├── [ 15K] srp.h │   │   ├── [6.3K] srp.h.in │   │   ├── [1.4K] srtp.h │   │   ├── [ 658] ssl2.h │   │   ├── [ 14K] ssl3.h │   │   ├── [ 20K] sslerr.h │   │   ├── [ 26K] sslerr_legacy.h │   │   ├── [121K] ssl.h │   │   ├── [112K] ssl.h.in │   │   ├── [3.2K] stack.h │   │   ├── [2.0K] storeerr.h │   │   ├── [ 15K] store.h │   │   ├── [1.3K] symhacks.h │   │   ├── [ 70K] tls1.h │   │   ├── [ 10K] trace.h │   │   ├── [3.0K] tserr.h │   │   ├── [ 19K] ts.h │   │   ├── [1.7K] txt_db.h │   │   ├── [7.0K] types.h │   │   ├── [1.4K] uierr.h │   │   ├── [ 19K] ui.h │   │   ├── [ 16K] ui.h.in │   │   ├── [1.8K] whrlpool.h │   │   ├── [3.2K] x509err.h │   │   ├── [ 70K] x509.h │   │   ├── [ 46K] x509.h.in │   │   ├── [4.7K] x509v3err.h │   │   ├── [ 92K] x509v3.h │   │   ├── [ 34K] x509v3.h.in │   │   ├── [ 51K] x509_vfy.h │   │   └── [ 38K] x509_vfy.h.in │   └── [4.0K] libs │   └── [4.0K] x64 │   └── [4.0K] openssl │   ├── [ 28M] libcrypto.lib │   └── [3.8M] libssl.lib └── [4.0K] vstudio └── [4.0K] 16 ├── [1.4K] CVE-2019-3980.sln ├── [8.9K] CVE-2019-3980.vcxproj └── [1.6K] CVE-2019-3980.vcxproj.filters 9 directories, 175 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 →