替換linux系統文件etc下passwd文件的字段獲取真正的root權限


sudo與root


很多人都知道使用linux可以利用sudo來執行一些root權限執行的事情,但是sudo和root還是有很大的區別的。

  • 區別一:sudo可以執行的命令是root賬戶利用/etc/sudoers文件中的配置限制其他用戶執行的,即便執行了sudo su -,也不是正在意義上的root賬戶;
  • 區別二:sudo執行命令的時候使用的環境變量仍然是其他用戶自己的;
    所以,為了能夠真正的獲取到root權限,去做你想做的任何事情,需要拿到真正的root權限。

前提基礎


1、獲取root的權限,也並不是沒有前提的,至少具備/etc/password和/etc/shadow的其中一個文件的修改權限,這個並非root本身才能執行,一般拿到了賬號密碼的普通賬號都可以做到,對於非root的賬號的sudo權限限制,並不是做的那么好。2、具備密碼hash生成機,這個很簡單,可以用c語言編寫一個,編譯后,隨處可用。和密碼爆破機的原理一模一樣。

  • 源代碼:
#include <stdio.h>
#include <crypt.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
	//const char *userPassword = "1234";
	//const char *saltString = "$6$UaS4js6$";
	printf("%s\n",crypt((const char*)argv[1], (const char*)argv[2]));
	//printf("%s\n", hashString);
}

+  使用方法:

./crack 1234 $6$UaS4js6$


+  效果:
![](https://img2018.cnblogs.com/blog/1070321/201809/1070321-20180921113107423-542887066.png)


##  覆蓋密碼:
***
###  1、配置ubuntu的root密碼為toor1234

bobac@ubuntu:~$ sudo passwd root
[sudo] password for bobac:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully


###  2、root登錄驗證一下
![](https://img2018.cnblogs.com/blog/1070321/201809/1070321-20180921114224190-1399704997.png)

###  3、驗證root的密碼
![](https://img2018.cnblogs.com/blog/1070321/201809/1070321-20180921114323229-1980475257.png)
![](https://img2018.cnblogs.com/blog/1070321/201809/1070321-20180921114512542-205662904.png)

###  4、生成新密碼
![](https://img2018.cnblogs.com/blog/1070321/201809/1070321-20180921114556600-1614107809.png)

###  5、替換/etc/passwd
![](https://img2018.cnblogs.com/blog/1070321/201809/1070321-20180921114717818-1362452504.png)

###  6、嘗試使用新密碼1234 登錄:
![](https://img2018.cnblogs.com/blog/1070321/201809/1070321-20180921114806793-443963213.png)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM