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
#include
#include
#include
#include
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$
+ 效果:
![](/blog/1070321/09/1070321-0921113107423-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登录验证一下
![](/blog/1070321/09/1070321-0921114224190-1399704997.png)
### 3、验证root的密码
![](/blog/1070321/09/1070321-0921114323229-1980475257.png)
![](/blog/1070321/09/1070321-0921114512542-205662904.png)
### 4、生成新密码
![](/blog/1070321/09/1070321-0921114556600-1614107809.png)
### 5、替换/etc/passwd
![](/blog/1070321/09/1070321-0921114717818-1362452504.png)
### 6、尝试使用新密码1234 登录:
![](/blog/1070321/09/1070321-0921114806793-443963213.png)