Trước đây tôi đã nhận thấy rằng tên người dùng và mật khẩu được cung cấp curl
làm đối số dòng lệnh không xuất hiện trong ps
đầu ra (mặc dù tất nhiên chúng có thể xuất hiện trong lịch sử bash của bạn).
Họ cũng không xuất hiện trong /proc/PID/cmdline
.
(Tuy nhiên, độ dài của đối số tên người dùng / mật khẩu kết hợp có thể được lấy.)
Trình diễn dưới đây:
[root@localhost ~]# nc -l 80 &
[1] 3342
[root@localhost ~]# curl -u iamsam:samiam localhost &
[2] 3343
[root@localhost ~]# GET / HTTP/1.1
Authorization: Basic aWFtc2FtOnNhbWlhbQ==
User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Host: localhost
Accept: */*
[1]+ Stopped nc -l 80
[root@localhost ~]# jobs
[1]+ Stopped nc -l 80
[2]- Running curl -u iamsam:samiam localhost &
[root@localhost ~]# ps -ef | grep curl
root 3343 3258 0 22:37 pts/1 00:00:00 curl -u localhost
root 3347 3258 0 22:38 pts/1 00:00:00 grep curl
[root@localhost ~]# od -xa /proc/3343/cmdline
0000000 7563 6c72 2d00 0075 2020 2020 2020 2020
c u r l nul - u nul sp sp sp sp sp sp sp sp
0000020 2020 2020 0020 6f6c 6163 686c 736f 0074
sp sp sp sp sp nul l o c a l h o s t nul
0000040
[root@localhost ~]#
Làm thế nào là hiệu ứng này đạt được? Có phải nó ở đâu đó trong mã nguồn của curl
? (Tôi cho rằng đó là một curl
tính năng, không phải là một ps
tính năng? Hoặc nó là một tính năng hạt nhân nào đó?)
Ngoài ra: điều này có thể đạt được từ bên ngoài mã nguồn của tệp thực thi nhị phân không? Ví dụ: bằng cách sử dụng các lệnh shell, có thể kết hợp với quyền root?
Nói cách khác, bằng cách nào đó tôi có thể che giấu một đối số xuất hiện trong /proc
hoặc ở ps
đầu ra (điều tương tự, tôi nghĩ) mà tôi đã chuyển sang một số lệnh shell tùy ý ? (Tôi đoán câu trả lời cho điều này là "không" nhưng có vẻ đáng giá bao gồm cả nửa câu hỏi thêm này.)
environ
trực tiếp để truy cập các biến môi trường không? - dòng dưới cùng: danh sách đối số, giống như danh sách các biến môi trường, nằm trong bộ nhớ quy trình người dùng đọc / ghi và có thể được sửa đổi bởi quy trình người dùng.
grep
mẫu của bạn thành một lớp ký tự. Ví dụ:ps -ef | grep '[c]url'
curl
phù hợp curl
nhưng [c]url
không phù hợp [c]url
. Nếu bạn cần biết thêm chi tiết, hãy hỏi một câu hỏi mới và tôi rất sẵn lòng trả lời.