ระบบปฏิบัติการหลายผู้ใช้ใดที่อนุญาตให้ผู้ใช้เห็นบรรทัดคำสั่งปัจจุบันของผู้ใช้รายอื่น


13

ฉันกำลังอ่านmanpage ของunzipและวิ่งไปหาสิ่งต่อไปนี้

-P password
       use password to decrypt encrypted zipfile entries (if  any).   THIS
       IS  INSECURE!   Many  multi-user operating systems provide ways for
       any user to see the current command line of any other user; even on
       stand-alone systems there is always the threat of over-the-shoulder
       peeking.

ในขณะที่การระมัดระวังความปลอดภัยของไม่ได้พิมพ์รหัสผ่านในข้อความที่ชัดเจน (และมีพวกเขาจบลงในประวัติศาสตร์เชลล์) เป็นหลักสูตรที่จริงผมพบว่ามันยากที่จะเชื่อว่ามีระบบปฏิบัติการออกมีที่ผู้ใช้สามารถดูบรรทัดคำสั่งของอื่น ๆ ผู้ใช้งาน มีคนให้ฉันเป็นตัวอย่างได้หรือไม่ (รวมถึงระบบเดิม)


ฉันเชื่อว่าps, topฯลฯ เป็นคำตอบสำหรับ UNIX


ไดรเวอร์แป้นพิมพ์)
STTR

@STTR ฉันรู้ฮาร์ดแวร์เล็กน้อยดังนั้นฉันไม่แน่ใจว่าไดรเวอร์แป้นพิมพ์ให้ผู้ใช้ทุกคนเท่าเทียมกันและเข้าถึงได้อย่างเต็มที่หรือไม่ แต่นั่นไม่ใช่ OS และไม่มีการเชื่อมต่อกับ tty
4ae1e1

1
เพียงแค่ทราบถ้าคุณต้องการป้องกันไม่ให้คำสั่งเข้าไปในประวัติทุบตีนำหน้าคำสั่งด้วยช่องว่าง
joshreesjones

คำตอบ:


4

ฉันเดาว่าน่าจะเป็นไปได้ว่าในระบบ Unix / Linux ที่ใช้งานอยู่lsofอาจทำให้ผู้ใช้สัมผัสได้ ตรรกะที่lsofแสดงรายการของไฟล์ที่เปิดอยู่บนระบบ และบางทีหากมีการคลายซิปไฟล์ขนาดใหญ่มันจะยังคงเปิดอยู่นานพอที่ใครบางคนจะสังเกตเห็นและมองดูกิจกรรม เฮ้มันจะค่อนข้างเขียนสคริปต์ Bash และรันทุกนาทีหรือมากกว่านั้นผ่านงาน cron เพื่อรวบรวมบันทึกของกิจกรรมเปิดไฟล์

แต่นั่นก็ยังเป็นเท็จสำหรับฉัน ฉันหมายความว่าlsofอาจเปิดเผยรหัสผ่าน MySQL แบบอินไลน์ในลักษณะนี้ แต่ฉันไม่ได้ 100% ว่าผู้ใช้ปกติที่ไม่มีsudo/ สิทธิ์ root จะสามารถดูlsofกิจกรรมจากผู้ใช้รายอื่นเช่นนั้นได้หรือไม่


3
เอ่อคุณมาถูกทางแล้ว ฉันคิดว่าlsofแสดงไฟล์ที่เปิดอยู่ของผู้ใช้รายอื่นและคุณไม่จำเป็นต้องมีสิทธิ์ยกระดับ (ทดสอบบนเซิร์ฟเวอร์ของสถาบันของฉัน) ในทำนองเดียวกันpsและtopเปิดเผยบรรทัดคำสั่งของผู้ใช้คนอื่น
4ae1e1

1
ฉันยังตรวจสอบ manpages ของps, topและlsofและพบว่าการเอ่ยถึงสิทธิพิเศษที่ไม่มี นอกจากนี้ยังมีคำถามนี้: จะทำให้กระบวนการไม่ปรากฏแก่ผู้ใช้รายอื่นได้อย่างไร . ดังนั้นฉันเดาว่าทุกคนบนระบบยูนิกซ์จะเห็นบรรทัดคำสั่ง อืมน่าประหลาดใจมาก
4ae1e1

ฉันค้นพบเกี่ยวกับttysnoopและconspyอย่างไรก็ตามฉันไม่แน่ใจว่าพวกเขาต้องการสิทธิ์รูทหรือไม่
Vinayak

ตัวเลือกใดที่จะส่งผ่านไปยังlsofที่อนุญาตให้ดูพารามิเตอร์ของบรรทัดคำสั่ง ด้วยเช่นlsof -a +c0 /dev/nullฉันสามารถเห็นชื่อคำสั่งยาว แต่พารามิเตอร์ไม่ผ่านไปยังคำสั่ง ฉันพลาดอะไร? :-)
Hastur

4

Unix อนุญาตให้ "ps" นอกจากนี้ Unix ยังมีคำสั่ง "w" ที่จะแสดงสิ่งที่ผู้ใช้กำลังทำงานอยู่ "w" โดยทั่วไปอาจตัดคำสั่งตามขนาดเทอร์มินัล แต่สามารถแทนที่ได้ (วิธีง่าย ๆ วิธีหนึ่งอาจใช้แค่เทอร์มินัลที่กว้างขึ้น)

สิ่งนี้อาจส่งผลกระทบต่อระบบเหมือน Unix หลายระบบ (Linux, BSD systems, Solaris และอื่น ๆ )

ฉันเชื่อว่า Microsoft Windows จะแสดงสิ่งนี้ในตัวจัดการงานด้วย บางทีนั่นอาจเป็นเรื่องที่ไม่ค่อยเกิดขึ้นกับ Windows Vista และการควบคุมบัญชีผู้ใช้เนื่องจากอาจจำเป็นต้องมีการควบคุมบัญชีผู้ใช้ แต่ย้อนกลับไปในอดีตใน WinXP / Server2003 และก่อนหน้านี้ข้อ จำกัด ดังกล่าวอาจจะหละหลวมมากขึ้น มีเหตุผลที่ NET USE เริ่มสนับสนุนเครื่องหมายดอกจันจากนั้นให้ผู้ใช้ใส่รหัสผ่าน ด้วย:

WMIC /NODE:ComputerName PROCESS LIST

ผู้ใช้อาจไม่จำเป็นต้องอยู่บนคอมพิวเตอร์เครื่องเดียวกันเพื่อดูคำสั่งที่รันอยู่ ด้วยตนเองฉันสงสัยว่า Tasklist, TList และ PSList หลายรายการ (ทั้งหมดแจกจ่ายโดย Microsoft อย่างอิสระ) อาจสนับสนุนความสามารถในการดูว่าเกิดอะไรขึ้นไม่ว่าผู้ใช้จะทำงานอะไรก็ตาม อย่างน้อยที่สุดผู้ใช้ที่มีสิทธิ์ของผู้ดูแลระบบซึ่งพบเห็นได้ทั่วไปในระบบปฏิบัติการ pre-Vista (ใน Win9x มาตรฐานทั่วไปคือผู้ใช้ทุกคนมีความสามารถเหมือนผู้ดูแลระบบ) โปรดทราบว่า Info-Zip ซึ่งเป็นเอกสารที่คุณอ้างถึงค่อนข้างเก่ากว่า WinXP เล็กน้อย Offhand ฉันคิดว่ามันเก่ากว่า Win95

ด้วยระบบที่มีผู้ใช้หลายคนที่มีอายุมากกว่าความลับไม่ได้เป็นเรื่องใหญ่ ความสามารถในการดูว่าคอมพิวเตอร์กำลังทำอะไรรวมถึงคำสั่งที่ผู้ใช้รายอื่นกำลังทำงานอยู่อาจถูกมองว่าเป็นคุณสมบัติเชิงบวกไม่ใช่การละเมิดความปลอดภัย อาจเป็นคำถามที่ใช้งานได้มากกว่านี้: มีระบบปฏิบัติการหลายผู้ใช้รายใหญ่ที่ไม่สนับสนุนผู้ใช้ที่สามารถดูคำสั่งที่ทำงานบนคอมพิวเตอร์ได้หรือไม่?

วิธีที่ปลอดภัยกว่าคือการไม่ใส่รหัสผ่านที่ละเอียดอ่อนลงในบรรทัดคำสั่ง ตัวเลือกอื่นอาจใส่รหัสผ่านในไฟล์แล้วระบุไฟล์นั้นในบรรทัดคำสั่ง เช่น:

type pwfile | command

อย่างน้อยที่สุดการอนุญาตตามการใช้งานระบบไฟล์จะให้ความคุ้มครองบางอย่าง


1
ในการดูกระบวนการของผู้ใช้อื่นบน Windows คุณต้องเป็นผู้ดูแลระบบ
Moshe Katz

4

วิธีการ Linux บางอย่าง (และฉันเชื่อว่าไม่ได้ทั้งหมด) เพื่อดูคำสั่งzip -PThat_Password ...ของผู้ใช้รายอื่นที่ไม่มีสิทธิ์ใช้งานรูท :

  • cat /proc/24695/cmdline ถ้า PID คือ 24695 ...

    zip-P That_Password

    หมายเหตุ:มันไม่มีช่องว่าง แต่ก็เป็นไปได้ที่จะเดารหัสผ่าน

  • grep -H -e "zip" /proc/[0-9]*/cmdline

    ไฟล์ไบนารี / proc / 24695 / cmdline ตรงกัน

    ดีถ้ามันใช้งานcatได้มันทำงานทุกอย่างอื่นข้อความตาม ...

  • pgrep -a zipอ็อพชัน -a แสดงรายการบรรทัดคำสั่งแบบเต็มรวมถึง ID กระบวนการ (ไม่สามารถใช้งานได้กับเวอร์ชันเก่า [เช่น <2008] จากpgrep)

    24695 zip -P That_Password

และแน่นอนop ที่กล่าวถึง

  • ps -aux | grep zip

    That_User 24695 1.9 0.0 15012 1192 pts / 40 T 12:37 0:45 zip -P That_Password

  • top -c -b -n 1 | grep zip คำตอบนั้นมีอะไรทำนองนั้น

    24695 That_User 20 0 15012 1192 820 T 0.0 0.0 0: 45.12 zip -P That_Password


@JakeGould อย่างน้อยในระบบของฉันคำสั่งเช่นcat /proc/24695/cmdlineการส่งออกให้โดยไม่มีช่องว่าง ...
แฮสเธอร์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.