chúng tôi có thể biết mật khẩu cho những người dùng khác nếu chúng tôi có quyền truy cập root không?


24

Nếu một người có quyền truy cập root vào một máy RHEL cụ thể, họ có thể truy xuất mật khẩu của những người dùng khác không?


4
Có bạn có thể, họ có thể chia sẻ nó với bạn khi được hỏi độc đáo :) nói cách khác, câu hỏi của bạn không được đặt chính xác.
poige

Câu trả lời:


37

TL; DR: Không, mật khẩu được lưu dưới dạng băm có thể (nói chung) không thể được phục hồi.

Linux không lưu trữ mật khẩu văn bản đơn giản ở bất cứ đâu theo mặc định . Chúng được băm hoặc mã hóa thông qua một loạt các thuật toán. Vì vậy, nói chung, không, điều này là không thể với dữ liệu được lưu trữ.

Nếu bạn có mật khẩu được lưu trữ ở nơi nào khác ngoài /etc/passwdcơ sở dữ liệu, chúng có thể được lưu trữ theo cách cho phép điều này. htpasswdcác tệp có thể chứa mật khẩu được mã hóa rõ ràng và các ứng dụng khác có thể lưu trữ băm yếu hơn hoặc mật khẩu văn bản đơn giản vì nhiều lý do (thường là xấu).

Ngoài ra, các tệp cấu hình người dùng có thể chứa mật khẩu không được mã hóa hoặc mật khẩu được bảo vệ yếu vì nhiều lý do - lấy nội dung lấy từ dịch vụ khác .netrchoặc những thứ tự động đơn giản có thể bao gồm mật khẩu.

Nếu mật khẩu được băm hoặc mã hóa bằng thuật toán cũ, yếu (3DES, MD5), bạn có thể tìm ra mật khẩu một cách hợp lý / rẻ tiền - mặc dù thông qua việc tấn công dữ liệu thay vì chỉ đảo ngược chuyển đổi. (ví dụ: những thứ như http://project-rainbowcrack.com/ hoặc http://www.openwall.com/john/ )

Vì bạn đã root nên cũng có thể tấn công mật khẩu người dùng ở cấp độ khác - thay thế nhị phân đăng nhập, hoặc sudo, hoặc một phần của PAM, v.v., bằng thứ gì đó sẽ chiếm được mật khẩu khi được nhập.

Vì vậy, cụ thể, không, nhưng nói chung việc có quyền truy cập root sẽ giúp dễ dàng lấy thông tin chi tiết của người dùng thông qua các kênh bên khác nhau.


1
Thông tin thêm tại Wikipedia : /etc/shadow, chức năng băm mật mã , bẻ khóa mật khẩumuối
Tim

2
Đây là một câu trả lời tốt cho hầu hết các phần, tuy nhiên 3DES và MD5 trên thực tế không yếu hơn đáng kể so với các thuật toán khác. Brute force vẫn là phương pháp duy nhất để tìm mật khẩu từ hàm băm ( bảng cầu vồng là cách để tăng tốc các phương thức brute force cho bất kỳ thuật toán nào, không phải là điểm yếu của MD5). Điều cải thiện phương pháp băm cho mật khẩu là nó chậm và sử dụng muối đủ lâu.
Gilles 'SO- ngừng trở nên xấu xa'

13

Ngược lại với một số câu trả lời khác ở đây, tôi muốn nói rằng câu trả lời đơn giản cho câu hỏi này và nhiều câu hỏi khác kết thúc bằng "nếu bạn có root" là CÓ.

Về cơ bản, root có thể làm bất cứ điều gì trên máy mà chính hệ thống có thể làm. Hệ thống có thể chấp nhận mật khẩu của bạn, vì vậy root có thể chấp nhận mật khẩu của bạn hoặc của chính anh ấy thay cho mật khẩu của bạn, với đủ nỗ lực. Quan trọng hơn, anh ta có thể chỉ cần thay đổi mật khẩu của bạn, hoặc TRỞ THÀNH bạn.

Cụ thể, mật khẩu thường được mã hóa. Đây thường là một loại thuật toán được gọi là "một chiều", tạo ra một số (hàm băm) có thể được sử dụng để kiểm tra mật khẩu, nhưng thường không đảo ngược số và lấy lại mật khẩu. Vì vậy, không chỉ là đọc một tập tin để lấy mật khẩu của ai đó.

Điều đó nói rằng, bạn CÓ THỂ đọc lịch sử shell của họ và lịch sử đăng nhập, nơi họ rất có thể đã nhập mật khẩu của họ thay vì tên người dùng của họ tại một thời điểm nào đó, hoặc nhập nó vào một vỏ thay vì tại một dấu nhắc mật khẩu. Trong trường hợp đó, nó sẽ là văn bản đơn giản. Điều này là đáng lo ngại phổ biến trên các thiết bị đầu cuối dựa trên văn bản, không có giải pháp tốt mà tôi biết.

Tuy nhiên, ngay cả đặt vấn đề đó sang một bên, mã hóa "một chiều" không thực sự là một chiều. Có rất nhiều công cụ xung quanh sẽ trải qua nhiều tổ hợp cụm mật khẩu, mã hóa chúng theo cùng một quy trình một chiều, cho đến khi bạn tìm thấy một công cụ phù hợp. Sau đó, họ biết mật khẩu sẽ có quyền truy cập (mặc dù là root, họ CRENG CÓ quyền truy cập, trên máy THAT).

Tồi tệ hơn, có các bảng cầu vồng, là câu trả lời được tính toán trước cho quy trình trên: mọi người đã tạo mật khẩu gốc xuất phát từ mật khẩu được mã hóa đã cho. Sử dụng những thứ này, đó là một tra cứu đơn giản - không yêu cầu bẻ khóa tốn thời gian.

Một lần nữa, truy cập cấp gốc là điều cần bảo vệ. Với sự thỏa hiệp đó, toàn bộ máy và mọi thứ trên đó đều bị xâm phạm. Đã đến lúc bắt đầu lại, bao gồm thông báo cho tất cả người dùng của bạn rằng doanh nghiệp của bạn không còn có thể tin cậy để bảo vệ quyền riêng tư của họ. Và, vâng, điều đó có thể có nghĩa là đi ra khỏi kinh doanh.


Truy cập vào tài khoản của tôi khác với lấy mật khẩu của tôi. Nếu bạn cho phép người dùng đăng nhập vào máy của bạn và tôi (ngu ngốc nhưng thông thường) sử dụng cùng một mật khẩu cho tất cả các máy, bạn không có quyền truy cập vào tất cả các máy chỉ vì bạn có thể thay đổi mật khẩu của mình trên máy. Tôi chỉ bị khóa một tài khoản.
emory

Ngoài ra, nếu sử dụng các hệ thống tệp được mã hóa cho dữ liệu nhạy cảm, thỏa hiệp truy cập root không ngụ ý thời gian để bắt đầu lại.
emory

@emory Nếu bạn sử dụng hệ thống tệp được mã hóa và hệ thống bị xâm nhập gốc, thì bạn có thể tin tưởng mã liên quan đến hệ thống tệp được mã hóa, đọc cụm mật khẩu mã hóa, v.v. không? Tôi muốn nói rằng bạn không thể, bởi vì theo định nghĩa, một sự thỏa hiệp đặc quyền gốc có nghĩa là mọi thứ trên hệ thống (ngay xuống hạt nhân) đều sẵn sàng để lấy.
một CVn

@ MichaelKjorling Tôi có thể tin tưởng mã liên quan đến hệ thống tệp được mã hóa không? Trong hầu hết các trường hợp, không. Trong trường hợp của tôi, có. Nó được đặt trên phương tiện chỉ đọc. Root không thể ghi vào nó. Nhật ký đi đến một ổ đĩa WORM. Tương tự, tôi không đưa ra các phím để root và có thể sẽ bắt đầu lại.
emory

8

Nếu bạn có rootthì bạn có thể chạy trình bẻ khóa mật khẩu /etc/shadow(giả sử mật khẩu cục bộ chứ không phải LDAP hoặc Kerberos, v.v.). Điều này có thể không hiệu quả nếu họ chọn mật khẩu tốt và hệ thống được cấu hình để sử dụng băm mật khẩu mạnh. Nhưng mật khẩu hệ thống không được lưu trữ trong bản rõ; mật khẩu không có sẵn trực tiếp ngay cả để root.


5

Tất cả các mật khẩu được lưu trữ trong /etc/shadowtập tin. Bạn có thể mở tệp này bằng quyền truy cập root và xem hash valuecác mật khẩu này cho mỗi người dùng (ngay cả người dùng root).

Trừ khi bạn có bất kỳ loại phần mềm giải mã mật khẩu nào, bạn không thể chuyển đổi các giá trị băm này thành văn bản bình thường.

Nhưng nếu bạn có quyền truy cập vào người dùng root, bạn có thể thay đổi bất kỳ mật khẩu người dùng thông thường nào bằng cách sử dụng lệnh sau và truy cập vào tài khoản của họ.

root@localhost$ passwd pradeep

Điều này sẽ hỏi bạn về mật khẩu mới mà bạn muốn đặt cho người dùng pradeep. Bằng cách này bạn có thể thay đổi passwd cho pradeep.

Bây giờ bạn có thể truy cập từ tài khoản của mình bằng cách:

root@localhost$ su pradeep

Điều này sẽ dẫn đến việc chuyển sang người dùng pradeep và bạn sẽ nhận được một thiết bị đầu cuối như thế này:

pradeep@localhost$


1
bạn có thể thực hiện "su pradeep" ngay cả khi không thay đổi mật khẩu pradeep, bởi vì khi bạn thực hiện "su pradeep" với người dùng root, bạn không cần nhập mật khẩu pradeep để đăng nhập ...
Wolfy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.