前不久接到一项渗透测试任务,过程比较有趣,就简单写下,供参考。
这三台主机中,两台是Linux系统,一台是AIX系统。也有一个交界处。
通过地址转换,目标网络的主机提供外部访问,并在内部使用172.16。**这个地址(这个信息是在测试之后得到的,最初没有人知道)。在边界路由器之后是思科PIX525。
(515)为保证三台主机的安全,外部用户只能连接不同主机的一些端口,比如80,25,110等。
在我们的检测中,思科PIX防火墙的过滤规则仍然比较严格,外部用户基本不允许额外的进入端口。
在对端口xx.xx.2和xx进行扫描之后。xx.3,发现WEB服务只能对xx.x.x.3进行间接攻击。第一,我们检查了TCP/80端口的服务,发现有一个8070端口有新闻搜索功能。直接输入:yyyy.yyy.yyy:8070/
然后获得系统管理登录页面,试一试。作为用户名/口令,我输入to/to,就好像认证成功了,但最终还是不能进入下一页。已发现此端口在运行。
Tomcat3.1,但此版本存在安全漏洞,可访问默认/ada目录。在此页的后面,我们将看到一个“TomcatManagementTools”页面,该页面显示的是一个TomcatManagement/yyyy.yyy:8070/addition。我们可以通过单击“上下文管理”的链接来管理Tomcat的上下文,例如查看、添加和删除上下文。此conditions有点像虚拟目录,因此我们可以添加一个conditions,例如"/tt",并将它的文档根目录设置为"/",这样,当我们访问syp://yyy.yyy:8070/tt时,就会看到一系列的系统根目录!另外,你可以在任何目录下看到任何文件。因为Tomcat是作为root运行的,所以您可以查看诸如/etc/passwd和/etc/shadline这样的系统文件。在根据密码文件破译密码之后,发现系统中有两个用户,to和root,都使用非常简单的密码:123456。虽然外部用户无法直接访问telnet服务,但是可以将密码重置为更强的字符串。
通过这种漏洞,我们基本上可以看到整个系统,但由于无法写入数据,所以威胁看起来很小。
所以我们开始关注这个论坛和聊天室。其中一项在8080端口监听,另一项在8888端口监听。你可以直接进入到Tomcat4.1.10的欢迎页面,点击左侧的管理链接:yyy.yyy.yyy.8080/,,我们可以看到Tomcat4.1.10的欢迎页面,点击左侧的管理链接:yyyy.yyy.yyy:8080/adyyyyyyyyyyyyyyy:8080/adyyyyyyyy:8080。尽管我们不知道密码,但我们找到了Tomcat保存这些密码的文件,前端端口8070,所得到的管理用户名是adho,密码为空。因此我们可以管理整个Tomcat服务器。
但是这些还不足以让我们在系统中运行命令。因此,我们继续查看位于聊天室的8888端口。该端口运行1.3.26+php4.1.2。起初我没有发现任何问题。突然间想起来以前发现的两个漏洞和/adho有关。是否也将此目录存在于此端口上?在进入该目录之后,我们很惊讶地发现我们进入了phpMyadyManagement界面。对于整个数据库,我们可以做任何操作。由于数据库是MySQL数据库,因此支持从本地操作系统读取和写入数据。所以我们在测试库中创建一个简单的表,然后添加一个记录,它是php文件的内容。要编写php文件,然后使用php调用外部命令执行命令。用过的
在kk中选择tt到outfile/path/test.php。
(对小许的技术支持表示感谢)
该命令将数据库的内容写到php文件中,但由于mysql是以mysql用户运行的,因此无法将其写入apache目录。因此,尝试失败了。
我想到另外的办法。通过tomcat提供的端口8070,我们可以访问任何系统文件。若能尝试在系统中创建.jsp文件,我们就能远程访问这个jsp文件,tomcat将对其进行处理并运行。若内容在这里。jsp文件是可运行系统命令的执行系统命令的代码。
因此,我们重新编写了一段jsp代码,该代码可以执行系统命令,输入测试表,并使用double方法将它的内容写到/tmp/tsp文件中,然后访问以下链接:
yyy.yyy.yyy:8070/tt/tmp/ty.jsp。
(感谢Watercloud提供技术支助)
我方发现我方指定订单已执行!以根的形式执行。也就是说,我们完全控制了整个系统。
通过cgi执行命令当然不如使用shell那么方便。最简单的方法当然是打开一个xterm,把它连接回Xwhits。但我们使用了NAT,因此无法进入。听到工程部有IP可外接,便将笔记本搬到外面使用。其结果就是一切准备就绪,却发现对方竟然关机!@####%####%
翌日,我决定用旧方法打开外壳。第一,找到可从外部访问的端口。然而,防火墙不允许所有端口进行外部访问。通过几次测试,发现所有允许的端口都存在问题。通过仔细查看流程,发现chatserver占用了4个端口,每个端口都有一个聊天室,而现在没有人使用它们。因此,我首先杀死一个进程,以便将shell绑定到它所对应的端口。