草庐IT

【linux提权】利用setuid进行简单提权

首先先来了解一下setuid漏洞:SUID(SetUID)是Linux中的一种特殊权限,其功能为用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。但是SUID权限的设置只针对二进制可执行文件,对于非可执行文件设置SUID没有任何意义,在执行过程中,调用者会暂时获得该文件的所有者权限,且该权限只在程序执行的过程中有效.通俗的来讲,假设我们现在有一个可执行文件XINO,其属主为root,当我们通过非root用户登录时,如果XINO设置了SUID权限,我们可在非root用户下运行该二进制可执行文件,在执行文件时,该进程的权限将为root

multithreading - Chdir 和Setuid 以及Setgid 线程安全吗?

是os.Chdir、os.Setuid和os.Setgid在Go中线程安全吗?换句话说,如果我在两个并行运行的不同goroutine中执行os.Chdir(或其他两个函数),它会改变工作goroutine的目录还是整个过程(这会导致问题)?我在文档中找不到任何信息。 最佳答案 在引擎盖下,os.Chdir只是callschdir()系统调用:211funcChdir(dirstring)error{212ife:=syscall.Chdir(dir);e!=nil{213return&PathError{"chdir",dir,e}

multithreading - Chdir 和Setuid 以及Setgid 线程安全吗?

是os.Chdir、os.Setuid和os.Setgid在Go中线程安全吗?换句话说,如果我在两个并行运行的不同goroutine中执行os.Chdir(或其他两个函数),它会改变工作goroutine的目录还是整个过程(这会导致问题)?我在文档中找不到任何信息。 最佳答案 在引擎盖下,os.Chdir只是callschdir()系统调用:211funcChdir(dirstring)error{212ife:=syscall.Chdir(dir);e!=nil{213return&PathError{"chdir",dir,e}

security - Golang 删除权限 (v1.7)

我想通过golang制作一个自定义网络服务器。它需要root绑定(bind)到端口80。但是我想尽快放弃根。syscall.SetUid()根据ticket#1435返回“不支持”.我总是可以通过iptables将端口80重新路由到其他东西,但是这会打开任何非根进程来冒充我的网络服务器-我不希望这是可能的。我如何放弃我的应用程序的权限(或者干净地解决这个问题)。 最佳答案 我最近解决了这个问题,Go拥有您需要的所有部分。在此示例中,我更进了一步并实现了SSL。本质上,您打开端口,检测UID,如果为0,则查找所需的用户,获取UID,然

security - Golang 删除权限 (v1.7)

我想通过golang制作一个自定义网络服务器。它需要root绑定(bind)到端口80。但是我想尽快放弃根。syscall.SetUid()根据ticket#1435返回“不支持”.我总是可以通过iptables将端口80重新路由到其他东西,但是这会打开任何非根进程来冒充我的网络服务器-我不希望这是可能的。我如何放弃我的应用程序的权限(或者干净地解决这个问题)。 最佳答案 我最近解决了这个问题,Go拥有您需要的所有部分。在此示例中,我更进了一步并实现了SSL。本质上,您打开端口,检测UID,如果为0,则查找所需的用户,获取UID,然

c - 以 root 身份执行命令,无需 root 密码或 sudo

我了解以root身份运行脚本的含义,尤其是通过Web应用程序。但是,作为我的Web应用程序的一部分,我需要将curl与tor一起使用,这需要偶尔重置torip。当使用servicetorrestart重新启动服务时,tor可以获得新的ip。由于只有root可以执行此操作,因此我编写了一个C包装器脚本来执行我需要的操作,编译它并在其上设置setuidroot,并更改为root用户所有权。但是,当它以非特权用户身份运行时,它仍然会询问我root密码。作为root,服务重启不应该询问密码。我的脚本:#include#include#includevoidExecAsRoot(char*str

c - 以 root 身份执行命令,无需 root 密码或 sudo

我了解以root身份运行脚本的含义,尤其是通过Web应用程序。但是,作为我的Web应用程序的一部分,我需要将curl与tor一起使用,这需要偶尔重置torip。当使用servicetorrestart重新启动服务时,tor可以获得新的ip。由于只有root可以执行此操作,因此我编写了一个C包装器脚本来执行我需要的操作,编译它并在其上设置setuidroot,并更改为root用户所有权。但是,当它以非特权用户身份运行时,它仍然会询问我root密码。作为root,服务重启不应该询问密码。我的脚本:#include#include#includevoidExecAsRoot(char*str

linux - 如何在不使用 find 的情况下递归设置权限,文件夹 700,文件 600

我正在尝试找出一种递归设置权限的方法,特定路径上的目录和子目录为700,文件为600。我会使用这些命令:find/path-typed-print0|xargs-0chmod700find/path-typef-print0|xargs-0chmod600但用户没有运行“查找”命令的权限。作为一种解决方法,我尝试制作一个脚本,其中包含来自设置了setuid粘性位的root用户的上述命令,以便它将以root权限运行(例如普通用户以root权限运行的passwd或sudo命令):chmod4755script.sh但我无法从受限用户帐户执行脚本,它仍然说我没有运行find命令的权限。有谁知

linux - 如何在不使用 find 的情况下递归设置权限,文件夹 700,文件 600

我正在尝试找出一种递归设置权限的方法,特定路径上的目录和子目录为700,文件为600。我会使用这些命令:find/path-typed-print0|xargs-0chmod700find/path-typef-print0|xargs-0chmod600但用户没有运行“查找”命令的权限。作为一种解决方法,我尝试制作一个脚本,其中包含来自设置了setuid粘性位的root用户的上述命令,以便它将以root权限运行(例如普通用户以root权限运行的passwd或sudo命令):chmod4755script.sh但我无法从受限用户帐户执行脚本,它仍然说我没有运行find命令的权限。有谁知

c - 非root用户的setuid等效项

Linux是否具有类似于setuid的C接口(interface),该接口(interface)允许程序使用例如来切换到其他用户。用户名/密码?setuid的问题在于它只能由super用户使用。我正在运行一个简单的Web服务,该服务需要以登录用户身份执行作业。因此,主进程以root身份运行,并且在用户登录后,fork并调用setuid切换到适当的uid。但是,我对以root身份运行的主要proc不太满意。我宁愿让它以其他用户身份运行,并拥有某种类似于su的机制来切换到另一个用户(但无需启动新进程)。 最佳答案 不,没有办法仅使用用户