决定和你们分享一下,这个东西真的好玩 !刺激!!给力!!!
https://exploit-exercises.com/
exploit-exercises.com提供了各种虚拟机,文档和挑战,可用于了解各种计算机安全问题,例如特权升级,漏洞分析,漏洞开发,调试,逆向工程和一般网络安全问题。
 
enter description here
 
那么我们就现在来一盘紧张又刺激的漏洞利用练习吧

1.下载Nebula

 
enter description here
 
点击下载 => https://drive.google.com/drive/folders/0B9RbZkKdRR8qLWZBcVBvanlLb1U
 
enter description here
 

  1. 登录使用。下载完以后呢和我使用的界面是一样的
     
    enter description here
     

3. level00

关于
此级别要求您找到将作为“flag00”帐户运行的设置用户ID程序。您还可以通过仔细查看/可疑目录中的顶级目录来找到此信息。
要访问此级别,请使用level00的密码登录为level00。
进来以后我们看到用户id是level00
enter description here
 
那么我找了找在home目录中发现有很多文件夹 分别查看了使用权限。可以看到level00和flag00 这两个文件夹只有属于level00这个用户级别的 。其他的文件夹属于其他的用户的级别。
 
enter description here
 
其实到了这里,个人的思路也就断了 ,不得已从网上找了一份答案 做了一个参考
这位作者呢通过用户名和用户组去搜索命令,于是跟着他的思路走着,找到了第一条flag
 
enter description here
 
enter description here
 
enter description here
 
越权成功
enter description here
 
enter description here
http://www.cnblogs.com/zealoct/p/3511762.html

4. level01

在下面的程序中有一个漏洞,允许任意程序被执行,你能找到吗?
无奈我还是做了弊,看了视频才知道是怎么回事!
https://www.youtube.com/watch?v=-mtOlyxyJx4
要做这个级别,请使用密码level01作为level01帐户登录 。该级别的文件可以在/ home/flag01中找到。

enter description here

 
进入level01这个账户后根据提示在/ home/flag01,发现有flag01这个文件 ,我尝试的执行这个文件 得到了 and now what?输出
enter description here
 
enter description here
 
根据源代码可以看到
setresuid()设置调用进程的真实用户ID,有效用户ID和保存的set-user-ID。
非特权用户进程可以将真实的UID,有效的UID和保存的set-user-ID,各自改为以下之一:当前的真实UID,当前有效UID或当前保存的set-user-ID。
特权进程(在Linux上,具有CAP_SETUID功能的进程)可以将真正的UID,有效的UID和保存的set-user-ID设置为任意值。
setresgid()设置真正的GID,有效的GID和保存的调用进程的set-group-ID(并且始终将文件系统GID修改为与有效GID相同),对非特权进程具有相同的限制。

关键点还是在/usr/bin/env ,源代码中使用system 调用系统命令 ,使用env 这个命令,去输出 and now what?这个字符串
 
enter description here
 
Linux系统里的env命令 可以显示当前用户的环境变量,还可以用来在指定环境变量下执行其他命令。下面来比较一下set,env和export命令的异同:set命令显示当前shell的变量,包括当前用户的变量;env命令显示当前用户的变量;export命令显示当前导出成用户变量的shell变量。每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如HOME,SHELL等这些变量,但shell自己的变量不同shell是不同的,比如BASH_ARGC,BASH等,这些变量只有set才会显示,是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export “导出”变成一个用户变量。

可以看到 在PATH 中环境变量中有带s的,意思就是spuer了,在视频中大牛进行了用户环境变量(包括源代码中 也是使用env 中 去输出字符串)
进行特定的权限赋予。
 
enter description here
 
enter description here
可以对比 对用户变量的前后改变
 
enter description here
 
当我再次运行的时候发现是失败的,原因是出在那呢
 
enter description here
 
这意味着我们可以提供我们自己的echo,修改路径,以便这个echo被调用优先于内置,然后我们可以运行任意命令。
当然是少了echo 这个文件
 
enter description here
 
越权成功,得到了flag
enter description here