Bir süre önce curl
komut satırı argümanları olarak verilen kullanıcı adlarının ve parolaların ps
çıktıda görünmediğini fark ettim (tabii ki bash geçmişinizde görünse de).
Aynı şekilde görünmüyorlar /proc/PID/cmdline
.
(Birleştirilmiş kullanıcı adı / şifre argümanının uzunluğu yine de elde edilebilir.)
Aşağıdaki gösteri:
[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 ~]#
Bu etki nasıl elde edilir? Kaynak kodunda bir yerde curl
mi? (Bence bu bir curl
özellik değil , bir özellik değil ps
mi? Veya bir tür çekirdek özelliği mi?)
Ayrıca: Bu, bir ikili çalıştırılabilir dosyanın kaynak kodunun dışından gerçekleştirilebilir mi? Örneğin, muhtemelen root izinleriyle birleştirilmiş kabuk komutlarını kullanarak?
Başka bir deyişle, bir şekilde keyfi bir kabuk komutuna ilettiğim bir çıkışın /proc
veya ps
çıkışın (aynı şey, sanırım) görünmesini tartışabilir miyim ? (Bunun cevabını "hayır" olarak tahmin ediyorum ama bu fazladan yarım soruyu dahil etmeye değer görünüyor.)
environ
doğrudan ortam değişkenlerine erişmek için kullanıyor mu? - alt satır: argüman listesi, ortam değişkenleri listesi gibi, kullanıcı işlem belleğini okur / yazar ve kullanıcı işlemiyle değiştirilebilir.
grep
şablonunuzun ilk karakterini bir karakter sınıfı yapın. Örneğinps -ef | grep '[c]url'
curl
eşleşir curl
ancak [c]url
eşleşmez [c]url
. Daha fazla ayrıntıya ihtiyacın olursa yeni bir soru sor ve cevap vermekten mutlu olurum.