วิธีการใช้ psexec โดยไม่มีสิทธิ์ของผู้ดูแลระบบบนเครื่องเป้าหมาย?


27

เป็นไปได้หรือไม่ที่จะใช้psexecคำสั่งบนเครื่องระยะไกลโดยไม่ต้องมีสิทธิ์ระดับผู้ดูแลระบบในเครื่องระยะไกล?

ฉันลองใช้งานpsexec \\<machine> -u <username> -p <password>ที่ไหน<username>และ <password>ไม่ใช่ข้อมูลประจำตัวของผู้ดูแลระบบ แต่ฉันได้รับข้อผิดพลาด "การเข้าถึงถูกปฏิเสธ"

ฉันสามารถเดสก์ท็อประยะไกลในเครื่องระยะไกลที่มีสิทธิเดียวกันโดยไม่มีปัญหาใด ๆ

เครื่องท้องถิ่นของฉันใช้ Windows 7 Enterprise 64 บิตและเครื่องระยะไกลกำลังเรียกใช้ Windows Server 2008 64 บิต ฉันมีสิทธิ์ผู้ดูแลระบบในเครื่องท้องถิ่น

แก้ไข : สำหรับทุกคนที่ downvoting คำถามนี้: ฉันไม่ได้พยายามหลีกเลี่ยงมาตรการรักษาความปลอดภัยใด ๆ ฉันสามารถรันกระบวนการบนเครื่องระยะไกลได้โดยใช้เดสก์ท็อประยะไกลเข้าสู่เครื่องระยะไกลและเรียกใช้ ฉันแค่มองหาวิธีสั่งทำสิ่งที่ฉันสามารถทำได้ผ่าน GUI


มันเป็นคำถามที่แย่เพราะในเว็บไซต์นี้เราคัดค้านผู้ใช้ปลายทางที่ถามเราว่าจะหลีกเลี่ยงระบบความปลอดภัยอย่างไร บางทีคุณควรอ่านสิ่งนี้: meta.serverfault.com/questions/1659/…แล้วตามด้วยการอ่านคำถามที่พบบ่อย
John Gardeniers

7
ฉันไม่ได้พยายามหลีกเลี่ยงระบบความปลอดภัยใด ๆ ฉันพยายามทำสิ่งที่ฉันสามารถทำได้ผ่าน GUI ผ่านบรรทัดคำสั่งแทนซึ่งฉันรู้สึกสะดวกกว่า โปรดอธิบายให้ฉันฟังว่าสิ่งใดที่ถือเป็นการหลีกเลี่ยงระบบความปลอดภัย
HC4 - คืนสถานะโมนิก้า

4
มีหลายครั้งที่บุคคลที่เป็นผู้ดูแลระบบมีเหตุผลที่ดีในการค้นหาวิธีดำเนินการตามกระบวนการโดยไม่ต้องใช้สิทธิ์ระดับผู้ดูแลเต็มรูปแบบ บางครั้งแน่นอนว่ามันเป็นไปไม่ได้หรือไม่สามารถใช้งานได้ แต่หากมีการปรับแต่งเล็กน้อยกับระบบสามารถสร้างความแตกต่างระหว่างการเปิดระบบขึ้นอย่างสมบูรณ์เทียบกับการตั้งค่าให้สามารถเข้าถึงได้โดยใช้บัญชีที่ จำกัด มากขึ้น งานที่จำเป็นในการทำงานภายใต้บัญชีที่ จำกัด มากขึ้น
Shannon Wagner

8
ฉันจัดการโฮสต์ Windows, Linux และ UNIX ในบทบาทหน้าที่การงานของฉันและถ้าฉันต้องตอบคำถามของผู้ใช้โดยโจมตีเขาเพื่อถามคำถามฉันจะเลิกงานทันที บุคคลนี้ไม่ได้ร้องขอวิธีการหลีกเลี่ยงสิทธิ์ผู้ดูแลระบบ เขากำลังขอวิธีการใช้ PSEXEC โดยมีสิทธิ์ จำกัด ในการเรียกใช้กระบวนการที่เขามีสิทธิ์เรียกใช้ผ่าน GUI อยู่แล้ว
Robert Ebers

คำตอบ:


26

พบได้ที่: https://stackoverflow.com/questions/534426/psexec-help-needed

คุณต้องมีสิทธิ์ผู้ดูแลระบบในเป้าหมายซึ่งเป็นส่วนหนึ่งของ psexec เริ่มต้นบริการ windows บนเป้าหมายและคุณต้องการสิทธิ์ผู้ดูแลระบบเพื่อให้สามารถทำเช่นนั้นได้

psexec คัดลอกไฟล์ psexecsvc ไปยังผู้ดูแลระบบร่วมกันจากนั้นใช้การจัดการระยะไกลเริ่มต้นบริการโดยใช้ไฟล์นั้น มันเปิดชื่อไปป์และใช้มันสำหรับการสื่อสารเพิ่มเติม เมื่อเสร็จแล้วมันจะจัดระเบียบตามลำดับตัวเอง

แม้ว่าฉันไม่สามารถหาเอกสารทางการที่บอกว่าเป็นสิ่งเดียวกัน


5

ขอให้เป็นผู้ดูแลระบบในเครื่อง

แก้ไข: หรือเรียกใช้คำสั่งเป็นงานที่กำหนดเวลาไว้ หรือใช้สวิตช์ -l ใน PsExec: เรียกใช้กระบวนการในฐานะผู้ใช้ที่ จำกัด (แถบกลุ่มผู้ดูแลระบบและอนุญาตเฉพาะสิทธิ์ที่กำหนดให้กับกลุ่มผู้ใช้เท่านั้น) ใน Windows Vista กระบวนการทำงานด้วย Low Integrity ดูที่นี่: http://technet.microsoft.com/en-us/sysinternals/bb897553 ขออภัยที่จะพูด แต่ RTFM!

ตัวอย่างเช่น: ในการเรียกใช้ Internet Explorer เช่นเดียวกับสิทธิ์ผู้ใช้ จำกัด ให้ใช้คำสั่งนี้:

psexec -l -d "c: \ program files \ internet explorer \ iexplore.exe"

โปรดทราบว่ารหัสผ่านจะถูกส่งเป็นข้อความธรรมดาไปยังระบบระยะไกล


1
ผู้ดูแลระบบจะไม่อนุญาตสิ่งนี้และไม่จำเป็นต้องทำ มันไม่จำเป็นบน Linux
HC4 - คืนสถานะโมนิก้า

4
@ HighCommander4 สิ่งที่แตกต่างกันนั้นสำคัญกับ Linux หรือไม่? นี่คือสภาพแวดล้อมของ Windows หยุดเปรียบเทียบแอปเปิ้ลกับส้ม
John Gardeniers

2
@ จอห์น: ฉันแค่อธิบายว่าฉันไม่ได้พยายามทำสิ่งใดที่ควรมีสิทธิ์ผู้ดูแลระบบ ฉันมีเครื่องสองเครื่องโดยมีบัญชีอยู่ในแต่ละเครื่องและฉันพยายามที่จะเริ่มกระบวนการจากเครื่องหนึ่งจากเครื่องอื่น นี่เป็นสิ่งที่ฉันต้องทำและเป็นเรื่องไร้สาระที่จะต้องใช้สิทธิ์ผู้ดูแลระบบในการทำ
HC4 - คืนสถานะโมนิก้า

@ HighCommander4 สิ่งที่คุณพยายามทำซึ่งเป็นการเข้าถึงคอมพิวเตอร์ระยะไกลแบบผู้ดูแลระบบจำเป็นต้องเข้าถึงผู้ดูแลระบบบน Windows แม้ว่ามันอาจดูไร้สาระสำหรับคุณ แต่ก็สมเหตุสมผลดีสำหรับผู้ที่ต้องบริหารเครือข่าย Windows
John Gardeniers

4
@John: "การจัดการ" เกี่ยวกับการใช้งานโปรแกรมในบัญชีของคุณเองคืออะไร?
HC4 - คืนสถานะโมนิก้า

2

ไม่ไม่ใช่วิธีที่มีประโยชน์ ทำไมคุณต้องการทำเช่นนี้และไม่ใช่ผู้ดูแลระบบ


2
ขอให้ผู้ดูแลโดเมนของคุณทำเพื่อคุณ สิ่งใดที่ไม่ควรมีปัญหาเว้นแต่ว่าคุณกำลังทำอะไรอยู่คาว
Safado

2
ขอให้ผู้ดูแลโดเมนของฉันทำอะไรให้ฉัน ฉันสามารถรันกระบวนการโดยการเดสก์ท็อประยะไกลเข้าสู่เครื่องโดยใช้บัญชีที่ไม่ใช่ผู้ดูแลระบบและเรียกใช้กระบวนการภายใต้บัญชีนั้นนั่นคือกระบวนการนั้นไม่ต้องการสิทธิ์ผู้ดูแลระบบในการเรียกใช้ ฉันแค่อยากจะทำสิ่งนี้จาก command-line แทนที่จะต้อง remote desktop เข้าไปในเครื่อง
HC4 - คืนสถานะโมนิก้า

1
เป็นไปได้หรือไม่ที่จะติดตั้ง ssh บน Windows Server โดยไม่มีสิทธิ์ของผู้ดูแลระบบ? ถ้าเป็นเช่นนั้นคุณช่วยชี้ทางให้ฉันไปที่ลิงค์ได้ไหม? ฉันลอง OpenSSH แต่ดูเหมือนว่าต้องใช้สิทธิ์ผู้ดูแลระบบ
HC4 - คืนสถานะโมนิก้า

1
@tony roth: คุณไม่จำเป็นต้องยกระดับเพื่อรัน SSH daemon บน Linux คุณเพียงแค่ต้องการ perms ที่สูงขึ้นเพื่อเรียกใช้บนพอร์ตที่มีสิทธิพิเศษ (0-1023) คุณสามารถกำหนดค่าทั้งไคลเอนต์และเซิร์ฟเวอร์ให้ใช้พอร์ตที่ไม่มีสิทธิพิเศษโดยไม่จำเป็นต้องมีการยกระดับความเร็วบนเครื่องทั้งสอง
HC4 - คืนสถานะโมนิก้า

2
และในความเป็นจริงฉันจัดการเพื่อตั้งค่า OpenSSH บนเซิร์ฟเวอร์ Windows โดยไม่มีสิทธิ์ผู้ดูแลระบบใด ๆ โดยการใช้ SSH daemon บนพอร์ตที่ไม่มีสิทธิพิเศษ ไปข้างหน้าและลงคะแนนฉันสำหรับความกล้าที่จะใช้ความคิดริเริ่มเพื่อเพิ่มผลผลิตของฉันในงานของฉันโดยไม่ปรึกษา Holy Sysadmins ก่อน
HC4 - คืนสถานะโมนิก้า


0

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


-1

อาจมีวิธีการทำเช่นนี้ อาจเป็นเรื่องง่ายเหมือนการแก้ไขการอนุญาต WMI บนเครื่อง หากไม่สามารถทำได้การใช้งานอย่าง WinRM จะใช้งานได้อย่างแน่นอน

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


2
ฉันไม่เห็นว่าฉันพยายาม "ไปไหน" อะไร sysadmins ต้องการให้ฉันสามารถเรียกใช้กระบวนการบนเครื่องนั้นไม่เช่นนั้นฉันจะไม่สามารถใช้เดสก์ท็อประยะไกลได้ ทั้งหมดที่ฉันต้องการคือวิธีการเรียกใช้กระบวนการโดยใช้บรรทัดคำสั่งแทนที่จะเป็น GUI เดสก์ท็อประยะไกล ตอนนี้ฉันสามารถบั๊ก sysadmins เกี่ยวกับเรื่องนี้หรือฉันสามารถหาวิธีที่จะทำมันเอง ฉันคิดว่าชุมชนของผู้ดูแลระบบมืออาชีพจะพยายามช่วยฉันไม่ใช่บรรยายฉัน
HC4 - คืนสถานะโมนิก้า

@ HighCommander - คำตอบคือ sysadmins ต้องให้ความสามารถนี้กับคุณ คุณไม่สามารถทำด้วยตัวเองได้เนื่องจากคุณไม่มีสิทธิ์ของผู้ดูแลระบบในเครื่อง หากพวกเขาเห็นด้วยกับสิ่งนี้จริงๆขอให้พวกเขาให้สิทธิ์ที่คุณต้องการในการทำสิ่งที่คุณต้องทำ
Jason Berg

-1

`const string subkey =" ซอฟต์แวร์ \ Sysinternals \ PsExec ";

        if (Environment.Is64BitOperatingSystem)
        {
            // For 64 Bit PC
            RegistryKey registryKey64 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64);
            RegistryKey NDPKey64 = registryKey64.OpenSubKey(subkey);
            if (NDPKey64 != null)
            {
                Registry.CurrentUser.OpenSubKey(subkey, true).SetValue("EulaAccepted", 1, RegistryValueKind.DWord);
            }
            else
            {
                RegistryKey regKey64 = registryKey64.OpenSubKey("Software", true);
                regKey64.CreateSubKey("Sysinternals\\PsExec", RegistryKeyPermissionCheck.ReadWriteSubTree);
                Registry.CurrentUser.OpenSubKey(subkey, true).SetValue("EulaAccepted", 1, RegistryValueKind.DWord);
            }
        }
        else
        {
            //For 32 bit PC
            RegistryKey registryKey32 = Registry.CurrentUser.OpenSubKey(subkey);
            if (registryKey32 != null)
            {
                Registry.CurrentUser.OpenSubKey(subkey, true).SetValue("EulaAccepted", 1, RegistryValueKind.DWord);
            }
            else
            {
                RegistryKey regKey32 = Registry.CurrentUser.OpenSubKey("Software", true);
                regKey32.CreateSubKey("Sysinternals\\PsExec", RegistryKeyPermissionCheck.ReadWriteSubTree);
                Registry.CurrentUser.OpenSubKey(subkey, true).SetValue("EulaAccepted", 1, RegistryValueKind.DWord);
            }
        }`

4
วิธีการหนึ่งที่แน่นอนในการพาตัวเองไปสู่ความสนใจของระบบคือการโพสต์คำตอบที่เหมือนกันสำหรับคำถามเก่า ๆ การทิ้งโค้ดโดยไม่มีคำอธิบายก็ไม่ได้ยอดเยี่ยมเช่นกัน โปรดอัปเดตคำตอบของคุณพร้อมคำอธิบายว่าโค้ดทำหน้าที่อย่างไรและจะแก้ไขปัญหา OP ได้อย่างไร
user9517 รองรับ GoFundMonica

1
ตกลงบางครั้งเหตุการณ์ PsExec ที่ติดตั้งจะไม่เรียกใช้ exes อื่น ๆ เมื่อมีการร้องขอ ปัญหาคือจะทำอย่างไรกับการตั้งค่า EORDAccepted DWORD เป็น 1 ฉันไม่สามารถหาหน้าซึ่งกล่าวถึงปัญหานี้ดังนั้นเพิ่มที่นี่
Shyam

-1

ทำไมบางคนไม่เพียงแค่บอกว่ามันเป็นไปไม่ได้? ฉันต้องทำสิ่งที่คล้ายกัน (Remote Exec a SAS Program) ซึ่งฉันสามารถเข้าถึงได้ถ้าฉัน RDP ลงในเซิร์ฟเวอร์นั้น (เช่นฉันมีการเข้าสู่ระบบในเซิร์ฟเวอร์ฉันมีการเข้าถึงระบบไฟล์ไปยังโฟลเดอร์ซอร์สโค้ดและฉันมี เข้าถึงเพื่อเรียกใช้ SAS)

ผู้ดูแลระบบไม่มีความคิดที่ถูกต้องของเขา / เธอจะให้สิทธิ์ผู้ดูแลระบบเต็มรูปแบบแก่ฉันในช่องนั้นเพียงเพื่อดำเนินการจากระยะไกล โดยทั่วไปแล้ว PSTools เป็นเครื่องมือดูแลระบบที่ไม่ได้ออกแบบมาเพื่อใช้ในการปรับใช้โซลูชันระบบไอทีที่แท้จริง


1
พูดจาโผงผางนี้ไม่ตอบคำถามเลย
Flup

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