本文源自一篇文章,在黑客手册200903期(P57页)Dream an end写的《我的入侵笔记——对所在大学的安全检测》中对一些关键字未处理好,从而导致本次的顺藤摸瓜成功控制某大学投稿系统。
(一)意外收获
1.学习他人文章
最近忙于应付工作上面的事情,在闲暇都很少弄技术了,因此看看文章已经是很奢侈的事情,我以前订阅了很多杂志,个人感觉看杂志要认真看,看完以后要对他人提出的思路进行验证,进行再次实验,即使没有成功也一定会有一些意想不到的收获,对于一些经典的东西要记录下来。拿到第三期的黑客手册的杂志后,我就先大体翻翻,看看有没有特别新颖的地方,然后就依次进行查看,在看到Dream an end写的《我的入侵笔记——对所在大学的安全检测》时,在文章中看到了一些涉及密码的地方,在图中竟然没有做处理!
2.针对敏感信息进行Google黑客
通过文章的图片,我挖掘了一些关键字,打开Google搜索“河北林学院学报”,如图1所示,在Google记录中我们看到了文中提到的地址,这些信息很有用,在使用“河北林学院学报”这个关键字前,我先后组合了多个关键字,包括IP地址,但搜索效果不太好,但是我还有一个想法,就是针对文中提到的“221.192.*.69”的所有地址进行222端口的探测,这个办法虽然笨点,但是也是可行,仅仅需要对254个IP地址的222端口进行探测,然后进行网页实际访问即可获取。

图1 通过Google获取文中的一些敏感信息
3.获取Tomcat后台管理地址
既然存在地址,那就直接在IE中打开吧,输入其管理地址“hxxp://www.221.192.*.69:222/manager/html”,熟悉的界面出来了,如图2所示,“Tomcat Manager Application”是Jsp应用部署的一个管理器,默认是不打开的,记得在去年曾经出现了一个扫描Tomcat这个后台的弱口令工具,一旦找到就可以直接控制服务器。在本次测试结束,乃至撰写本文时,该网站系统的Tomcat Manager Application仍然存在。

图2 获取Tomcat Manager Application地址
4.进入后台
按照文中图片中的用户名和密码,直接在Tomcat Manager Application登录验证窗口中的用户名中输入“admin”,密码输入“198076”,芝麻开门,Oh,Yeah!进去了,如图3,图4所示,感觉很容易吧!

图3 输入从文章中获取的用户名和密码

图4 进入Tomcat Manager Application管理后台
进入后台后,在Tomcat Manager Application中可以随意浏览目录,对jsp打包文件进行部署。关于这个不会的朋友可以实际测试一下,非常简单,在这里就不赘述了。
(二)服务器渗透之提权
1.既有后门等分析和收集
通过浏览该后台中的所有目录,发现存在的Webs目录就是入侵者留下的一个后门目录,如图5所示,在该目录中的admin.jsp和index.jsp都是后门控制程序,JSP的后门,好东东啊,赶快将其Download下来,放入自己的军火库。

图5 下载他人后门程序
2.执行命令测试权限
在Jsp的Webshell中直接单击“Command Window”,如图6所示,先查看IP地址配置情况。该计算机具有独立IP地址。

图6 查看网络配置信息
既然可以执行命令,那么就添加一个用户吧,添加完毕后使用“net localgroup administrator”命令查看是否添加成功,如图7所示,JSP的Webshell权限是相当大的,很邪恶,直接添加king$用户到管理员组。

图7 添加用户和查看管理员组
然后再在该窗口查看系统的相关信息,如图8所示,获取远程终端服务的端口为443端口。

图8 获取系统等信息
3.获取数据库等信息
在Jsp的Webshell中不停的浏览网站文件,最后在“http://221.192.*.69:222/news/db/”下找到dbin.jsp文件,直接打开该文件顺利获取数据库IP地址,连接用户名称,数据库类型以及密码,如图9所示,数据为SQL Server。

图9 获取数据库用户名和密码
在获取数据库用户名和密码的情况,在可以看到该服务器的1433端口的情况下,可以直接对数据库进行操作,一般有下面几种方式:
(1)使用SQLTools直接直接提权,在数据库密码和用户名不更改的情况下,相当于功能较多钥匙。
(2)使用SQL Server提供的企业管理器直接连接该数据库,将数据库服务器中的数据库全部导入到本地数据库服务器中。
(3)在Command window中停用数据库服务,然后找到SQL Server数据库的物理文件位置,直接下载到本地,通过SQL Server的还原或者重建相同文件来恢复数据库。
后面我对该服务器中的其他站点中的源代码进行了查看,发现数据库名称都是一个,而且数据库文件也比较好找。如图10,图11。

图10通过jsp的包含文件寻找数据库连接文件

图11 再次找到数据库连接密码和用户名称
4.查看代码安全防范情况
对网站系统的代码进行查看,如图12和图13所示,该网站同时支持两种脚本类型,在Jsp中无SQL注入防范,而在Asp中有SQL注入防范系统。

图12 查找源代码中的SQL注入防范情况

图13 网站加入了Asp的Neaao防注入系统
5.测试数据下载
如图14所示,找到一个access的数据库,直接单击下载,呵呵,可以将其下载到本地来。

图14 下载access数据库
6.查看管理后台登陆验证方式
如图15所示,在该后台中使用的是非常简单的Session(“adminname”)不等于空来进行判断,可以进行session欺骗,从而进入后台。

图15 后台登陆验证方式
7.查看系统中的其他文件
通过本次测试,我发现Jsp的webshell权力太大了,可以查看系统的所有文件,如图16所示,获取了SQL Server的所有数据库文件,在关闭MSSQLServer服务后,可以直接下载。后面经过测试,还直接可以查看管理员的桌面文件,如图17所示,将这些文件下载到本地进行分析,看看能否有助于渗透其内网和相关网络。

图16 该服务器中的所有SQL Server数据库文件

图17 查看并下载系统中的其他有用文件
(三)渗透中的渗透
我曾经单独撰写了一篇关于如何从Webshell中寻找Webshell,在本案例中同样如此。
1. 寻找Webshell敏感字
如图18所示,通过分析和挖掘,发现Webshell最下端的“Any question, please email me cqq*@Gmail.com”为关键字。

图18 获取和分析Webshell中的关键字
2.获取数个Webshell
通过搜索该关键字,获取了六个Webshell,不过在有的shell中可以直接打开,有的什么也做不了,如图19所示。获取的Webshell地址如下:
http://www.xa-cppcc.*.cn/jsp/component/manager/images/ad_images/1986300565.jsp
http://*.net.cn/Resume_upload/1219546565451.jsp
http://91.121.133.*:8080/shell/
http://www.*.co.kr/homepage/source/upload/files.jsp
http://www.*.or.kr/upload/cc_board%5Cwinter10.jsp

图19 获取Webshell中的Webshell
(四)总结与体会
本文可以说没有什么技术含量,仅仅思路很好,通过一些细微之处,就能挖掘出一些有价值的东西,进而进行更多和更大的突破。