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

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2023-33476 PoC — ReadyMedia 缓冲区错误漏洞

Source
Associated Vulnerability
Title:ReadyMedia 缓冲区错误漏洞 (CVE-2023-33476)
Description:ReadyMedia(原名MiniDLNA)是一套兼容LNA/UPnP-AV客户端的媒体服务软件。该软件支持音乐、图片、视频等媒体文件。 ReadyMedia 1.1.15至1.3.2版本存在安全漏洞,该漏洞源于存在缓冲区溢出问题。攻击者可利用该漏洞控制缓冲区块值,从而导致越界读写。
Description
Exploits for a heap overflow in MiniDLNA <=1.3.2 (CVE-2023-33476)
Readme
# CVE-2023-33476

> ReadyMedia (MiniDLNA) versions from 1.1.15 up to 1.3.2 is vulnerable to Buffer Overflow. The vulnerability is caused by incorrect validation logic when handling HTTP requests using chunked transport encoding. This results in other code later using attacker-controlled chunk values that exceed the length of the allocated buffer, resulting in out-of-bounds read/write.

- [Root Cause Analysis](https://blog.coffinsec.com/0day/2023/05/31/minidlna-heap-overflow-rca.html)
- [Exploit Details](https://blog.coffinsec.com/0day/2023/06/19/minidlna-cve-2023-33476-exploits.html)
- [NIST CVE Entry](https://nvd.nist.gov/vuln/detail/CVE-2023-33476)

## exploits

- RCE via tcache poisoning+GOT overwrite exploit for x86-64 target
- RCE via tcache poisoning+RIP overwrite exploit for arm32 target (Netgear RAX30)

## fuzzing

- source code dir tweaked for fuzzing
- libfuzzer harnesses used to find the bug

## src
vulnerable source code that can be built to reproduce/test exploits
File Snapshot

[4.0K] /data/pocs/55ce4132ac32148da8016565a944adfd0639e4a2 ├── [4.0K] exploits │   ├── [ 12K] helper.py │   ├── [4.9K] rax30-qemu-reverse-shell.py │   ├── [1.3K] README.md │   ├── [ 9] requirements.txt │   └── [4.8K] tpoison-nopie-x64_reverse-shell.py ├── [4.0K] fuzzing │   └── [4.0K] minidlna-1.3.0 │   ├── [ 155] deps.sh │   ├── [4.0K] fuzzers │   │   ├── [3.5K] fuzz_harness.c │   │   └── [1.4K] fuzz_http_libfuzzer.c │   ├── [1.5K] http.dict │   ├── [ 904] Makefile │   ├── [4.0K] minidlna-1.3.0 │   │   ├── [8.6K] albumart.c │   │   ├── [1010] albumart.h │   │   ├── [ 48] AUTHORS │   │   ├── [1.5K] autogen.sh │   │   ├── [6.6K] avahi.c │   │   ├── [ 257] avahi.h │   │   ├── [ 0] ChangeLog │   │   ├── [7.7K] clients.c │   │   ├── [2.8K] clients.h │   │   ├── [ 843] codelength.h │   │   ├── [7.2K] compile │   │   ├── [ 22K] configure.ac │   │   ├── [5.8K] containers.c │   │   ├── [1.2K] containers.h │   │   ├── [ 18K] COPYING │   │   ├── [1.0K] event.h │   │   ├── [3.7M] fuzzer_http │   │   ├── [ 10K] getifaddr.c │   │   ├── [2.0K] getifaddr.h │   │   ├── [304K] icons.c │   │   ├── [ 21K] image_utils.c │   │   ├── [1.5K] image_utils.h │   │   ├── [5.8K] kqueue.c │   │   ├── [6.5K] libav.h │   │   ├── [1.4K] LICENCE.miniupnpd │   │   ├── [4.0K] linux │   │   │   ├── [3.3K] inotify.h │   │   │   ├── [2.3K] inotify-syscalls.h │   │   │   └── [1.6K] minidlna.init.d.script.tmpl │   │   ├── [3.9K] log.c │   │   ├── [1.6K] log.h │   │   ├── [2.2K] Makefile.am │   │   ├── [ 44K] metadata.c │   │   ├── [3.1K] metadata.h │   │   ├── [3.5K] minidlna.c │   │   ├── [3.8K] minidlna.conf │   │   ├── [6.1K] minidlna.conf.5 │   │   ├── [3.5K] minidlna.c.ORIG │   │   ├── [2.0K] minidlnad.8 │   │   ├── [2.3K] minidlnapath.h │   │   ├── [3.0K] minidlnatypes.h │   │   ├── [ 23K] minissdp.c │   │   ├── [2.0K] minissdp.h │   │   ├── [4.8K] minixml.c │   │   ├── [2.5K] minixml.h │   │   ├── [ 18K] monitor.c │   │   ├── [ 452] monitor.h │   │   ├── [7.5K] monitor_kqueue.c │   │   ├── [9.6K] NEWS │   │   ├── [5.3K] options.c │   │   ├── [3.7K] options.h │   │   ├── [6.7K] playlist.c │   │   ├── [ 968] playlist.h │   │   ├── [4.0K] po │   │   │   ├── [2.0K] da.po │   │   │   ├── [2.6K] de.po │   │   │   ├── [2.1K] es.po │   │   │   ├── [2.1K] fr.po │   │   │   ├── [2.2K] it.po │   │   │   ├── [2.2K] ja.po │   │   │   ├── [2.1K] ko.po │   │   │   ├── [ 39] LINGUAS │   │   │   ├── [1.8K] Makevars │   │   │   ├── [2.3K] minidlna.pot │   │   │   ├── [2.0K] nb.po │   │   │   ├── [2.1K] nl.po │   │   │   ├── [2.6K] pl.po │   │   │   ├── [ 10] POTFILES.in │   │   │   ├── [3.0K] ru.po │   │   │   ├── [2.6K] sl.po │   │   │   └── [2.0K] sv.po │   │   ├── [4.5K] process.c │   │   ├── [3.0K] process.h │   │   ├── [ 917] README │   │   ├── [ 30K] scanner.c │   │   ├── [2.2K] scanner.h │   │   ├── [2.7K] scanner_sqlite.h │   │   ├── [4.2K] select.c │   │   ├── [1.5K] sendfile.h │   │   ├── [6.1K] sql.c │   │   ├── [1.4K] sql.h │   │   ├── [4.0K] tagutils │   │   │   ├── [ 11K] tagutils-aac.c │   │   │   ├── [1.2K] tagutils-aac.h │   │   │   ├── [ 15K] tagutils-asf.c │   │   │   ├── [ 10K] tagutils-asf.h │   │   │   ├── [9.3K] tagutils.c │   │   │   ├── [ 12K] tagutils-dff.c │   │   │   ├── [1.0K] tagutils-dff.h │   │   │   ├── [ 11K] tagutils-dsf.c │   │   │   ├── [1.1K] tagutils-dsf.h │   │   │   ├── [3.6K] tagutils-flc.c │   │   │   ├── [1.1K] tagutils-flc.h │   │   │   ├── [3.5K] tagutils.h │   │   │   ├── [7.3K] tagutils-misc.c │   │   │   ├── [ 17K] tagutils-mp3.c │   │   │   ├── [2.6K] tagutils-mp3.h │   │   │   ├── [ 12K] tagutils-ogg.c │   │   │   ├── [1.1K] tagutils-ogg.h │   │   │   ├── [1.7K] tagutils-pcm.c │   │   │   ├── [1.0K] tagutils-pcm.h │   │   │   ├── [3.8K] tagutils-plist.c │   │   │   ├── [7.4K] tagutils-wav.c │   │   │   └── [1.1K] tagutils-wav.h │   │   ├── [3.9K] testupnpdescgen.c │   │   ├── [8.4K] tivo_beacon.c │   │   ├── [1.2K] tivo_beacon.h │   │   ├── [ 21K] tivo_commands.c │   │   ├── [ 930] tivo_commands.h │   │   ├── [3.4K] tivo_utils.c │   │   ├── [1.3K] tivo_utils.h │   │   ├── [ 155] TODO │   │   ├── [ 21K] upnpdescgen.c │   │   ├── [3.2K] upnpdescgen.h │   │   ├── [ 12K] upnpevents.c │   │   ├── [2.9K] upnpevents.h │   │   ├── [3.5K] upnpglobalvars.c │   │   ├── [9.8K] upnpglobalvars.h │   │   ├── [ 52K] upnphttp.c │   │   ├── [5.3K] upnphttp.h │   │   ├── [4.2K] upnpreplyparse.c │   │   ├── [2.6K] upnpreplyparse.h │   │   ├── [ 69K] upnpsoap.c │   │   ├── [1.5K] upnpsoap.h │   │   ├── [ 12K] utils.c │   │   ├── [3.2K] utils.h │   │   ├── [6.2K] uuid.c │   │   └── [1.0K] uuid.h │   ├── [498K] minidlna-1.3.0.tar │   ├── [4.0K] patches │   │   └── [1.8K] upnphttp-fix.patch │   ├── [ 87] patch.sh │   ├── [ 187] README.md │   └── [1.6K] xml.dict ├── [ 992] README.md └── [4.0K] src ├── [ 191] deps.sh └── [4.0K] minidlna-git ├── [8.6K] albumart.c ├── [1010] albumart.h ├── [ 48] AUTHORS ├── [1.5K] autogen.sh ├── [6.6K] avahi.c ├── [ 257] avahi.h ├── [4.0K] buildroot │   ├── [ 424] build-static.sh │   ├── [ 60] Config.in │   ├── [ 48] external.desc │   ├── [ 67] external.mk │   ├── [4.0K] readymedia │   │   ├── [ 789] Config.in │   │   └── [ 863] readymedia.mk │   └── [1.3K] readymedia_defconfig ├── [ 0] ChangeLog ├── [8.1K] clients.c ├── [2.8K] clients.h ├── [ 843] codelength.h ├── [7.2K] compile ├── [ 22K] configure.ac ├── [5.8K] containers.c ├── [1.2K] containers.h ├── [ 18K] COPYING ├── [1.1K] event.h ├── [ 10K] getifaddr.c ├── [2.0K] getifaddr.h ├── [304K] icons.c ├── [ 21K] image_utils.c ├── [1.5K] image_utils.h ├── [5.6K] kqueue.c ├── [6.5K] libav.h ├── [1.4K] LICENCE.miniupnpd ├── [4.0K] linux │   ├── [3.3K] inotify.h │   ├── [2.3K] inotify-syscalls.h │   └── [1.6K] minidlna.init.d.script.tmpl ├── [3.9K] log.c ├── [1.6K] log.h ├── [2.3K] Makefile.am ├── [ 45K] metadata.c ├── [3.1K] metadata.h ├── [ 35K] minidlna.c ├── [3.8K] minidlna.conf ├── [6.1K] minidlna.conf.5 ├── [2.0K] minidlnad.8 ├── [2.3K] minidlnapath.h ├── [3.0K] minidlnatypes.h ├── [ 23K] minissdp.c ├── [2.0K] minissdp.h ├── [4.8K] minixml.c ├── [2.5K] minixml.h ├── [ 10K] monitor.c ├── [ 442] monitor.h ├── [9.5K] monitor_inotify.c ├── [7.5K] monitor_kqueue.c ├── [ 10K] NEWS ├── [5.3K] options.c ├── [3.7K] options.h ├── [6.7K] playlist.c ├── [ 968] playlist.h ├── [4.0K] po │   ├── [2.0K] da.po │   ├── [2.6K] de.po │   ├── [2.1K] es.po │   ├── [2.1K] fr.po │   ├── [2.2K] it.po │   ├── [2.2K] ja.po │   ├── [2.1K] ko.po │   ├── [ 39] LINGUAS │   ├── [1.8K] Makevars │   ├── [2.3K] minidlna.pot │   ├── [2.0K] nb.po │   ├── [2.1K] nl.po │   ├── [2.6K] pl.po │   ├── [ 10] POTFILES.in │   ├── [3.0K] ru.po │   ├── [2.6K] sl.po │   └── [2.0K] sv.po ├── [4.5K] process.c ├── [3.0K] process.h ├── [ 917] README ├── [ 30K] scanner.c ├── [2.2K] scanner.h ├── [2.7K] scanner_sqlite.h ├── [4.1K] select.c ├── [1.5K] sendfile.h ├── [6.1K] sql.c ├── [1.4K] sql.h ├── [4.0K] tagutils │   ├── [ 11K] tagutils-aac.c │   ├── [1.2K] tagutils-aac.h │   ├── [ 15K] tagutils-asf.c │   ├── [ 10K] tagutils-asf.h │   ├── [9.3K] tagutils.c │   ├── [ 12K] tagutils-dff.c │   ├── [1.0K] tagutils-dff.h │   ├── [ 11K] tagutils-dsf.c │   ├── [1.1K] tagutils-dsf.h │   ├── [3.7K] tagutils-flc.c │   ├── [1.1K] tagutils-flc.h │   ├── [3.5K] tagutils.h │   ├── [8.3K] tagutils-misc.c │   ├── [ 17K] tagutils-mp3.c │   ├── [2.6K] tagutils-mp3.h │   ├── [ 12K] tagutils-ogg.c │   ├── [1.1K] tagutils-ogg.h │   ├── [1.7K] tagutils-pcm.c │   ├── [1.0K] tagutils-pcm.h │   ├── [3.8K] tagutils-plist.c │   ├── [7.4K] tagutils-wav.c │   └── [1.1K] tagutils-wav.h ├── [3.9K] testupnpdescgen.c ├── [8.4K] tivo_beacon.c ├── [1.2K] tivo_beacon.h ├── [ 21K] tivo_commands.c ├── [ 930] tivo_commands.h ├── [3.4K] tivo_utils.c ├── [1.3K] tivo_utils.h ├── [ 155] TODO ├── [ 21K] upnpdescgen.c ├── [3.2K] upnpdescgen.h ├── [ 12K] upnpevents.c ├── [2.9K] upnpevents.h ├── [3.5K] upnpglobalvars.c ├── [9.9K] upnpglobalvars.h ├── [ 53K] upnphttp.c ├── [5.4K] upnphttp.h ├── [4.2K] upnpreplyparse.c ├── [2.6K] upnpreplyparse.h ├── [ 69K] upnpsoap.c ├── [1.5K] upnpsoap.h ├── [ 12K] utils.c ├── [3.2K] utils.h ├── [6.2K] uuid.c └── [1.0K] uuid.h 16 directories, 273 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. If the original source is unavailable, please email f.jinxu#gmail.com for a local snapshot (replace # with @).
    3. Shenlong has snapshotted the POC code for you. To support long-term maintenance, please consider donating. Thank you for your support.