萌新发个水文,一些简单getshell流程,内容比不上各位大佬们发的, 只希望能多多点拨指教。
之前写了,原因是团队在做个JavaEE项目,上头要我们参考一个电商erp系统,目标www.demo.com的业务流程,分配模块设计电商erp系统功能流程、数据表结构等文档了,整天就写文档了。。。这表关联有点多呀,就想着如果能拿到源码或者数据库表设计,有了现成那就不用辛苦的建表了。
首页有个登录页面,不过下面算叫社工了吧,假装成要买软件的顾客来考察,让客服开了一个帐号出来,这步就跳过了。
有了帐号,登录进去大概浏览了下那个网站,功能比较杂,前台用户并没有管理员权限。因为看到有商品图片了,想着会不会没有过滤直接能上传webshell,看来看去,就找到个图片管理。
里面有个上传文件的功能,可是图片没有回显绝对地址,而且变成个文件服务器,到另一个子域名去了。
访问的图片链接如下,不是直接访问文件地址。
http://tupian.demo.com/index.php?xxxxxxx&image=xxxxxxxxxxxxxxxxx.jpg
考虑这个子域名上(Server)会不会解析脚本,能不能顺利上传,也不知道绝对路径,再说也不是主站。
就先尝试下,抓包后改后缀为php,此时发现php文件是能够上传的,但仅有Response的数据并不能获知文件的web地址。
但是仔细观察这个image参数,感觉会不会能读取文件,测试后的确存在任意文件读取漏洞,00截断不管用,但是用../跳到上一层,可读出index.php代码。
又根据这个源码继续读出几个文件出来,比较关键的有数据库的配置信息,可惜这个还不能外连。
为了知道上传的绝对路径,看了index.php的逻辑,找到controller层的目录
传递进$m变量,进而加上m前缀就可以读出上传和读取图片功能的源码,如下图所示。其中显示图片只是简单的处理url参数并拼接固定的上传目录xxx,调用file_get_contents来echo输出
根据参数裁剪几位 再跟编号组合,取得最终的地址字符串。
浏览器访问下计算出来的路径,还好不像之前遇到的,这个能解析,接下来很轻松就能getshell了。
(前面两个请求500错误的是因为shell代码出错,本还以为不能用的,自己另外写了个php一句话就行了)
然后在shell上先做好一些清理工作,接下来想直接连mysql,看出当前用户权限不算大,但能看一堆看起来能外连的帐号,有部分的mysql5密码能解出,只有部分库有访问权限,这种情况下必要时候可以收集。
在服务器上找到nginx.conf,看了里面的虚拟路径映射,也确定主站不在这台服务器上
翻了翻也没什么好看的。
主站一堆增删查改的操作,也没明显的注入什么的,旁站查询了下也就多了些wiki站,没多少功能
简单扫下主站目录得出几个文件
但是后面在webshell中居然看到了那个图片服务器上存在.svn,进而猜想主站会不会也有。
可是无法访问svn文件,用源码泄漏工具也下载不了
然而在webshell打开svn文件,发现了一个可连外网的svn仓库地址。。。里面只有帐号名,不过配合之前的mysql.user等也好猜密码。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!