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

检测某学校小站

昨天朋友给了一个学校的小站让危险漫步练下手,用了大半天的时间终于拿到了shell,整个过程虽然没什么难度,但很考验耐心,把过程简单的和大家分享下。

先简单说下目标网站的情况,独立服务器,Wind0ws 7操作系统,服务器上就一个学校的网站。服务器的网络带宽不高,在我这里访问速度很慢,有时候页面都显示不全,为此浪费了很多时间。

为了不泄露具体的网站地址,我在拿到shell后把网站的程序打包下载到了本地,在虚拟机里把网站运行了起来,简单修改了下原来网站的版权信息,一个和检测的网站几乎一模一样的模拟网站就诞生了,访问地址为 127.0.0.1/,我就用它重现拿shell的过程。以下所说的目标网站指的就是虚拟机里那个模拟的网站。

一、发现任意文件下载漏洞

打开目标网站首页,发现首页内容比较多,并且知道了利用的是ASP的程序。随便点开一篇文章,熟悉的“EReadNews.asp”,难道是E创政府网站管理系统或者是利用E创改的系统?E创的一个比较显著的特征就是防盗链,找到了一篇存在附件的文章,直接点附件可以下载,鼠标移上去显示文件的下载地址,直接用浏览器打开,提示“非法链接!”,和以前接触过的E创系统直接访问文件下载地址时的提示相同,现在几乎可以断定目标网站采用的是E创政府网站管理系统或在E创政府网站管理系的基础上修改来的系统。

确定了目标网站采用的程序对我来说是个好消息,因为我知道E创系统存在一个任意文件下载漏洞。看目标网站是否存在任意文件下载漏洞,尝试下载网站数据库连接文件c0nn.asp来测试下。首先用浏览器访问,显示空白页,没有出现找不到文件的错误提示,说明c0nn.asp文件存在,更加坚定了我对目标网站采用的是E创政府网站管理系统的想法,因为E创政府网站管理系统的数据库连接文件就是网站根目录下的文件c0nn.asp。注意下载地址最后面有一个英文的点号。用浏览器直接打开地址,并不能下载文件,提示“非法链接!”,这是因为网站检查了REFERER信息,只有REFERER信息是目标网站这样的地址才可以,直接用浏览器打开下载地址时REFERER信息为空,自然不能下载了。怎么突破呢?以前用M0zilla Firef0x浏览器的一个插件可以修改REFERER信息进而突破,后来我找到了更简单的办法,那就是用Curl。打开命令提示符,切换到C盘根目录下,输入命令,回车后通过执行命令后的显示知道下载了一个771字节大小的文件。打开C盘,文件c0nn.asp已经躺在根目录下了,用记事本打开它,确实是c0nn.asp被下载回来了。

在c0nn.asp中找到了我感兴趣的内容:

'DbType=”MSSQL"'链接MSSQL数据库

'DbType="MYSQL"'链接MYSQL数据库

通过代码知道网站利用的是ACCESS数据库,用浏览器访问数据库地址,出现了错误提示“Micr0s0ft 编译器错误错误'800a040e''l00p'语句缺少",d0"',看来数据库有防下载表,不能直接下载。

二、下载网站主数据库文件受阻

再来试下用任意文件下载漏洞能不能下载数据库文件。在命令行下输人命令,回车后显示下载的文件大小为0,来到C盘根目录下,也没有新文件.asp生成,看来数据库文件下载失败了。再尝试下载了几个网站目录下的asp文件,都下载成功,就是下载数据库文件不成功,不知道怎么回事,知道原因的朋友欢迎来博客与危险漫步交流。

三、下载文件读文件收集信息

下载网站主数据库文件受阻,网站又不存在明显的其它简单漏洞,只能多收集点信息了。用WVS扫描了一下网站的目录和文件,发现了网站的后台登录地址,在后台登录页面显示的版权信息为“学校网站管理系统V2010”,看来目标网站的网站程序不是纯正的E创政府网站管理系统,可能是在E创政府网站管理系统的基础上修改来的一个学校网站管理系统。虽然有了后台登录地址,却没有管理员的用户名和密码,进不了后台。现在能利用的就是个任意文件下载漏洞(网站主数据库下载不了),暂时没别的方法,只能用它多下载些网站的文件来读,希望能从读文件中发现有用的信息。在WVS的扫描结果中几个目录比较特别,它们是kscx,xjgl,cjcx,0A。说不定网站目录下还有别的Web程序。

先来看kscx目录下是什么东西,用浏览器打开,发现是一个工作量查询系统。

在页面上有登录的地方,应该验证登录的时候需要查询数据库,看它用的是哪个数据库文件,如果能下载的话看里面有没有敏感信息。通过查看网页源代码知道验证登录的文件为AL0ginCheck.asp,在命令行下输入命令,发现果然是管理员用户,进入了工作量查询系统的看台,原来是一个工资查询系统。这个后台功能太简单,没找到拿shell的方法,先暂时不管它了,换别的目录看看。

打开127.0.0.l/xjgl/,发现是一个学生信息管理系统,也是一个登录页面,打开12 7.0.0.1/xjgl/其实打开的是127.0.0.l/xjgl/index.asp,通过查看网页的源代码知道登录验证文件就是index.asp,在命令行下输入命令,把index.asp下载了回来,用记事本打开它,发现数据库连接文件为Inc/0C0nn.asp,构造命令,把0C0nn.asp下载了回来。用记事本打开0C0nn.asp,得到学生信息管理系统的数据库为DBP,是一个变量,但不知道它的具体值。返回来看index.asp的代码,发现还包含了文件Inc/lnf0.asp,下载回来打开,发现Inc/lnf0.asp又包含了文件c0nfig.asp,构造命令,把c0nfig下载了回来,在里面终于找到了变量DBP的值为Data/dbl.mdb。学生信息管理系统的数据库的下载地址为12 7.0.0.l/x gl/Data/dbl.mdb,下载后打开,在数据库中发现了一个用户名为admin,密码为7a57a5a743894a0e的管理员用户,破解出密码为admin。用获得的管理员的用户名和密码进入了学生信息管理系统的后台,但后台还是功能太简单,还是没获得shell。

打开127.0.0.l/cjcx/index.asp,发现是一个学生成绩查询系统,首页也是一个登录页面,通过下载文件读文件知道了学生成绩查询系统的数据库为ata/#yzbzcj258456.mdb,下载地址为127.0.0.l/cjcx/data/%23yzbzcj258456.mdb,成功下载到了数据库文件,打开数据库的时候提示输入密码,看来加密了,在数据库连接文件datac0nn.asp中找到了数据库加密的密码netpat@163.net,在数据库中发现了一个用户名为admin,密码为7a57a5a743894a0e的用户,破解出密码为admin,后台登录地址为127.0.0.l/cjcx/admin/AdminIndex.asp,进入了后台,但令人失望的是后台功能太少,还是没有找到拿shell的方法。剩下最后一个觉得异常的目录0A没看了。打开127.0.0.l/0A/defaultasp,发现了0A办公系统的登录页面。

把0pendb.asp下载了回来,打开后找到了0A办公系统的数据库文件为db/lmt0f.mdb,下载地址为12 7.0.0. ll0A/db/lmt0f.mdb,下载后找到了一个包含很多用户名密码的表。其中有一个管理员用户,用户名为admin,密码为xxx520ll25,密码不像经过加密的,应该就是明文密码。用得到的管理员的用户名和密碍在页面127.0.0.l/0A/default.asp登录进了0A办公系统的后台。在这个后台还是没获得shell。

四、幸运进入网站主前台

前面进了几个网站下其它Web程序的后台,遗憾的是都没有拿到shell,好在收集到了一些管理员的用户名和密码,看用它们能不能登录网站主后台。打开目标网站的后台页面127.0.0.l/l0gin.asp,善先用在工作量查询系统中得到的用户名admin,密码xxx015尝试登录,提示“用户不存在”,看来网站主数据库中根本不存在admin这个用户。又尝试了manager这个用户,也不存在。一时卡到这里了。

暂时没突破的地方了就看网站的页面,一个链接一个链接的点开看。发现目标网站上好几篇文章的作者都是xxxx一bgs,而且这个用户名好像在0A办公系统的数据库中见过,再仔细看0A办公系统数据库里的用户名,果然发现有xxxx一bgs这个用户,密码为gxfl23。用这个用户的用户名xxxx一bgs和密码gxf123尝试登录,居然进去了。在后台的首页显示“您的权限:文章审核员”,看来这个用户不是管理员,只是一个文章审核员,权限很低,很多后台功能不能用,点“系统设置”后下面出来个“管理登录”的子菜单,点击它出来了“管理登录”的登录框,看来进来的只能算个前台,根本不是后台。用用户名xxxx一bgs密码gxfl23尝试登录,提示“用户不存在”。xxxx一bgs这个用户可以添加文章,但没发现上传漏洞,拿不了shell。

用在网页上发表文章的署名用户进了后台(严格说是前台),这个鼓励了我,继续在网站上找发表文章的用户,又找到了一个用户xxxquan。又到那个保存了用户名和密码的0A办公系统的数据库中去找,没找到xxxquan这个用户,试了几个弱口令,不对,试了在工作量查询系统中找到的那个管理员的密码xxx015,这次对了,进入了“后台”,而且这次的用户级别为“超级管理员”。

五、进入真正的网站后台

难道我人品爆发了?结果是我高兴的太早了。后台功能中我感兴趣的“系统配置”和“附加管理”下仍然只有一个“管理登录”子菜单,点击后又出来了“管理登录”的登录框,和用xxxx一bgs用户登录时的情况一样。当前用户已经为超级管理员了怎么还让管理登录?难道还有一个后台?叫登录我就来尝试登录,首先用当前用户的用户名xxxquan密码xxx015尝试登录,提示“用户不存在”,又尝试了用admin、manager做用户名登录,都提示“用户不存在”,看来用户名不是常见的管理员用户名,是个自己定义的。

连用户名都不知道密码根本没法尝试,先来看能不能找到管理员(后台的)的用户名。尝试了0A办公系统的数据库中所有的用户名,都提示“用户不存在”。挫折了。

来到目标网站首页,在页面最下方有一个管理员的邮箱地址:xxxsch00l@yah00.c0m cn,用邮箱地址中的用户名部分xxxsch00l作为用户名尝试登录,这次提示不是“用户不存在”了,变成了“用户名或密码出错,请返回检查”,看来管理员的用户名猜对了,就是xxxsch00l。密码我随便写的123456,所以出错了。该来找密码了。用前面已经找到的几个小Web系统中的管理员用户的密码来做尝试。首先试xxx015,不对,尝试admin,还是不对。尝试到在0A办公系统的数据库中找到的管理员的密码xxx520ll25时,对了,终于进入了真正的后台。

这才是真正的后台,以前看不到的“网站属性”、“功能设置”、“附件管理”等功能菜单都出来了。

六、后台拿shell之路

终于进了网站的主后台,继续找拿shell的方法。点后台首页的“查看更详细服务器信息检测”后得到了IIS版本为Micr0s0ft一IIS/6.0,Micr0s0ft一IIS/6.0是存在解析漏洞的,拿shell的时候说不定能用的着。

点后台“系统设置”下的“网站属性”子菜单,在打开的页面中可以设置允许上传文件的类

型,添加asp,asa,cer,cdx类型,点“提交”按钮后提示“已经成功添加到数据库!”,显示允许上传的文件也多了asp,asa,cer,cdx类型。点“文章管理一F的“添加文章”子菜单打开添加文章的页面,在这里可以上传文件,点“浏览”按钮选择一个asp文件(内容是ASP一句话木马的服务端代码),点“上传附件”按钮进行上传,提示“这种文件类型不允许上传!”。把文件扩展名分别修改为.asa,.cer,.cdx,都提示“这种文件类型不允许上传!”,通过直接上传获得shell的方法在这里行不通了:估计对上传文件在哪里进行了另外的检查。

点击“附加管理”下的“备份压缩”子菜单,来到了数据库管理的地方,在这里可以备份数据库,可以恢复数据库,可以压缩数据库,还可以查看网站空间占用情况。点“备份数据库”打开了的数据库备份页面,本来以为shell马上到手了,但仔细一看,遇到了一点麻烦,要备份数据库的当前数据库路径不能修改。

直接点“开始备份”按钮来看一下备份数据库功能是不是能正常使用,提示“备份数据库成功,您备份的数据库路径为C:\wwwDatabackup\2011-11-30.mdb”,看来备份功能正常,还得到了目标网站的绝对路径。把备份数据库名称修改为test.asp,点“开始备份”按钮后提示“请不要备份为带非法后辍名的文件”,不能备份为.asp的数据库文件,可以考虑利用IIS 6.0的解析漏洞突破。本来想通过把备份页面的源文件保存到本地修改后本地提交备份数据库,但查看备份页面的源文件却只有几行代码,根本没有备份的关键代码。直接访问备份数据备份的地址127.0.0.l/Db_C0mpact.asp?Acti0n=BackupData,想获得网页的源文件,却提示“请通过正确的链接进入本站!”,此路也不通。

来到数据库恢复的地方。在这里备份数据库路径可以自己定义,但恢复成的数据库文件不能自定义,是网站的主数据库文件。在这里应该可以拿到shell,方法是把ASP一句话木马的文件扩展名修改为.jpg,在添加文章的地方把它上传上去,记下上传后的地址,备份好目标网站的数据库,来到数据库恢复的地方,要恢复的数据库备份文件写上传上去的包含ASP一句话木马的图片文件的地址,恢复后获得了shell,但网站的数据库也被我们恢复成了ASP一句话木马,网站瘫痪。想到的补救措施是获得shell后快速再上传一个shell,利用新上传的shell删除文件,然后把备份的网站主数据库文件复制到DataBase目录下,重命名。但这样获得shell的方法有一定风险,上面的过程有一个步骤出错都将导致目标网站瘫痪,这是我非常不希望发生的,因此不到实在没有别的方法拿shell了不敢使用。继续看有别的方法不。

到网上查了下,发现有人公布了两个E创系统后台拿shell的方法。第一个方法是文件插马,在网站属性设置功能处插入一句话代码,shell文件就是Inc目录下的c0nfig.asp这个文件;第二个方法是抓数据库备份时的包,改包后用nc提交获得shell。第一种文件插马的方法可能把文件插坏,而c0nfig.asp这个文件又是个很重要的保存网站配置信息的文件,把它弄坏后也可能导致目标网站瘫痪,第二个方法好像没什么副作用,我决定用它。

在添加文章的地方把垦面添加了ASP一句话木马的一个小jpg文件上传到目标网站,得到上传后的文件。来到数据库备份的地方,备份数据库名称写x.asp;x.mdb,点“开始备份”按钮进行备份,提示“备份数据库成功”。对备份过程用ws0ckexpert抓包,抓到了两个有用的数据包。

特别注意,要把数据包的内容复制全,第一个数据包最后有一个空行,不要漏掉。在这里我犯了一个低级错误,起先第一个数据包我漏掉了最后的空行,改完包用nc提交时出错了,提示“Bad Request (Invalid Header Name)”。

在CL根目录下新建了一个名为ba0.txt的文本文件,把第一个和第二个有用数据包的内容依次复制到ba0.txt中,保存。下面来改包,主要修改的是第二个数据包的内容。DBpath=后面就是要备份的数据库文件,只是把/和#换成了了它们对应的URL编码形式的%2F和%23,把要备份的数据库文件替换成我们已经传上去的包含ASP-句话木马的图片文件upl0adfile/jpg/20ll-ll/20llll3021364ll60.jpg,把/替换为%2F,后边跟的就是备份后文件的名字,是我们输入的x.asp;x.mdb,只是把其中的;换成了它的URL编码形式的%3B,为了不和已有的备份文件x.asp;x.mdb冲突,修改为xl.asp;x.mdb,即xl.asp%3Bx.mdb。

改包基本完成,最后来修改包的长度。其中第一个数据包中“C0ntent-Leng.th: 101”就是数据包的长度,原来的长度为101。怎么计算包的长度呢?在这次抓包中,第二个数据包的长度正好是101个字节,在这次改包中我就认为第二个数据包内容的字节数就是数据包的长度(别的情况下的抓到包的长度不一定按这样计算),第二个数据包修改后的内容的字节数也是101字节,很凑巧,正好不用修改了。保存对文件ba0.txt的修改。

把nc.exe复制到C盘根目录下,输入命令“nc 127.0.0.1 80<ba0.txt”,回车后在回显内容中看到了“备份数据库成功,您备份的数据库路径为C:\www\Databackup\xl.asp;x.mdb”的文字,说明备份成功了。用lake2的eval最小马发送端连接127.0.0.l/D atab ac kup/xl.as p;x.mdb,终于拿到了shell。

经过测试,服务器支持.aspx文件,上传了一个aspx的大马ASPXSpy上去。用ASPXSpy发现服务器的权限设置的很不严格,但没安装什么可以用于提权的第三方软件,补丁也打的很全,提权没成功。我的目标就是shell,拿到shell了,也可以结束本次检测了。

本文危险漫步写的是检测一个学校小站的过程,从发现任意文件下载漏洞到收集网站下其它Web程序的管理员信息,从通过已经收集的信息组合出网站前台的用户名和密码到进入网站后台,最后拿到shell。整个过程没什么难度,都是一些最基本的手法,就是过程繁琐了点,尤其是下载文件收集有用信息的时候,加上真实目标网站的访问速度太慢,打开个大

点的页面有时候半分钟后还显示不全页面,为此浪费了很多时间。最深的感触是,有了耐心什么都不是问题。通篇没任何技术含量,高手莫笑,给还没入门的新手朋友看个过程。