前言
记录一次授权的测试,这个目标是真的太难了太难了太难了,网上能查找到的信息很少,最多只能找到一些学号,职工号以及身份证来来回回找了将近一个月都没找到,心力憔悴。学校所有的域名都解析到了同一个IP地址,并且这个IP上有很强很强的防护措施(*甚至连一个单引号就直接连接重置,过分*),前期一点进展也没有。
信息收集
谷歌搜索学校的学生以及老师信息,最终只找到了一些学生的学号信息,职工号以及身份证一个都没找到,最终通过自己的助学贷款群里面的包含了几千人信息的群文件中找到了几个在这所学校读书的学生信息,加上自己之前收集的学生信息中刚好有一个人的信息和助学贷款群里面的大致信息一致,所以这时候获得了一名学生的 学号,姓名,身份证后4位 ;学校某些系统的登录密码是学号+身份证后四位,通过爆破该学生的身份证后六位的前两位,最终成功获得了这名学生的身份证后6位信息,并且这名学生的家乡和我是一个地方,年级是16级,所以年龄应该和我差不多,综合这些信息加上验证结果,所以也算是知道了该学生完整的身份证信息,并开始利用该信息继续开始。
没技术含量的社工
偶然想起来有个初中同学好像在这所学校读书,没办法一直这样下去会没进展,统一身份认证平台一直进不去,只好拉下老脸问问看了。
毫无技术含量的社工算是失败了,而且也知道了他们的密码进校就改了,加上毕业账号就被注销,所以上面找的16级的那个账号基本上是没啥用了。那就换账号吧,有些系统账号密码都是学号,看看能不能碰碰运气。
寻找目标
收集到该校一名学生的 学号,姓名,身份证以及一大堆学生学号 等信息后,开始寻找合适的目标进行下手,或者是利用该账号找到一些其他有价值的信息。登录进去了好几个系统,注入,上传全都失败,也没有拿到其他有用的信息,再次陷入沉思,这个时候学校大多数系统能登录进去的都登录进去尝试了,毫无进展。
柳岸花明
学校有两类单点登录系统,一个是统一身份认证类型的,还有一个是专门用于教务认证的系统,由于之前以及由好几个学生的账号密码,当时尝试了一下居然能够登录进去,并且登录进去后发现里面有四个系统,但是有两个是内网ip,另一个需要重新登录,只有一个系统能够访问,并且这个系统是ThinkPHP3.2.2框架开发,Apache版本也非常低,所以就集中火力在这个系统上面。
获得权限
登录这个系统后,先看看日常的注入,上传等,注入没发现,但是当时发现能够上传php后缀的文件,满心欢喜,搞上传。
这个上传,选择一张图片,然后抓包将文件后缀改为php能够上传成功,并且文件的地址也是php后缀,但是访问该php文件地址的时候还是返回的一张图片。比如访问```xxx.edu.com/upload/aaa.php```结果是一张图片,当时就有点奇怪。选择一张图片,将图片的内容替换成phpinfo(),并将文件后缀改为php再上传,系统会提示出错。
尝试过将一句话写入到图片文件中然后改后缀,但是上传后访问这个php文件还是是张图片,因为图片被处理过了,在处理的过程中就将一句话也给处理成其他的内容了。
当时没仔细观察,以为是被限制或者拦截了,然后各种尝试长传,尝试了两天……直到第三天早晨到公司突然想起来我awvs扫描结果中好像有个目录列表的漏洞,要不我访问看看,然后,我滴个龟龟,全是一大堆php文件。
随便点了一个php文件,能访问,且正常,当时第一反应还以为这是被别人黑了,然后赶紧用这个系统下面的任意文件下载把php下载下来看看是什么情况,然后发现一句话里面的密码是我自己的,然后瞬间放下心来,并怀着忐忑的心情打开了菜刀,点击连接,等待了大概十几秒过后,熟悉的界面终于出现了。真的就是稀里糊涂之间getshell了也不知道。
赶紧把上传的所有杂七杂八的php文件以及奇奇怪怪的文件给删除,只留个菜刀马,然后终于可以愉快的内网漫游了。
上传出错提示
由于上传出错的提示里面有个open的错误。当时就一直在思考,它到底在open什么。直到后面才知道系统是要将正常上传的图片打开处理一下,如果是正常的图片是能够open的,但是如果不是图片open的时候就会出错,所以当时这里上传出错应该就是这个原因。还好是有个目录列表的漏洞,不然到死也不会发现文件其实上传成功了,*(同事给我说我以前也稀里糊涂在另一个贼难的项目上上传了木马,但是当时我不知道,要不是叫他过去排查后门,我都不会知道我当时其实已经拿到权限了)*
后记
当时主要是卡壳太久了,没想到去访问网站的发布目录看看,导致上传了两天的文件才发现其实是上传成功了。其实就算没这个上传,再花一点时间应该还是可以拿到权限的,因为系统下面还有个任意文件下载的漏洞,甚至能下载/etc/passwd这些文件,但是权限是apache权限,其他没权限的文件无法下载。并且系统还有phpMyAdmin,通过任意文件下载获取了数据库的连接密码,登录phpMyAdmin里面直接getshell也是一样的;并且查看数据库里面的管理员账号也是弱口令,后台应该也能拿到权限,但是这些都没尝试过了。
遗忘的尝试
因为这个系统的apache版本是2.2.15的,这个版本是存在apache解析漏洞的,当时没有尝试这个方式,但是现在应该也没用了,报告提交了,也许修复了。