免责声明
由于传播、利用本公众号李白你好所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号李白你好及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
01 过程
昨天晚上在游戏里卖东西,有个人M我,截图没有了大概意思是让我便宜点儿,我问她能不能瞬秒,她说钱不够能不能给我充500点卡,我觉得可以,就加了她微信,给了她邮箱(我开始以为要给游戏账号的邮箱)。
过了一会儿说充好了,让我去邮箱里查,我一看:
点“激活订单”:
点“下一步”:
真的,在这种场景下很容易上当的。。。我当时已经把账号密码都输进去了,就差点“登录”了,突然反应过来,看了一眼域名:
阿里的域名服务,感觉不太对啊,再审查元素看一下,然后就!!(╯’ – ‘)╯︵ ┻━┻
当时我微信跟她说她玩儿大了,然后就把她删了。(以下内容纯属虚构,你懂的。。)
躺床上沉思了5秒钟以后,我开始审视这几个钓鱼页面的请求,发现了一处宽字节注入:
看了一下mysql用户,发现是root,小开心,用sqlmap跑,找到当前的数据库czkzx:
这里有个sqlmap的使用技巧:这个注入能用union并且有回显,所以用–technique U指定下注入的技术,但是sqlmap默认只用order by判断1-10列,这里是13列(手动判断出来的),所以我用–union-cols 12-15指定下判断的列数(指定1-15发现sqlmap居然判断不出来)。
利用报错拿到网站绝对路径:
尝试用select into outfile写webshell,发现失败,原因是网站开了gpc。
看一下拖出来的数据,发现里面用户的密码都是以加盐hash的方式进行存储的:
找了几个破解了一下,都没成功,并且最关键的是我根本找不到后台在哪,于是我打算试下XSS。
在输入账号密码的地方插入XSS Payload,然后去数据库里查看一下:
发现数据在入库前做了HTML实体编码(后来我用sqlmap的–sql-shell去查看的时候发现是没有编码的形式,这是因为sqlmap在显示查询结果的时候做了一下解码,如下图)。
由于没有列目录漏洞,于是我就去读了几个我知道的文件源码,发现确实做了编码处理:
由于用mysql_connect方式连接的mysql不支持堆叠查询,所以也没办法用update修改数据库里的数据,XSS的思路好像也不太行。
接着想到一般这种钓鱼站都会有给fisher发推送邮件的功能,果然在数据库中找到了邮箱和密码:
但是试了一下,密码不对。
由于在源码中发现了数据库的root密码,于是我又回到了利用mysql写webshell的思路上,唯一的障碍就是gpc,如果能直接通过3306连接那就没有这个问题了。
尝试ping一下目标域名,发现是阿里的cdn:
试了一些方法,没有找到真实IP(其实也真不一定有公网IP)。
没什么好思路了,于是接着看源码,发现网站根目录下的index.php内容如下:
看到一个新的域名,比较好奇就ping了一下,发现居然不解析,应该是很早就到期了,现在没人注册。
然后我看到了下面的file_get_contents,突然看到了一些希望:
我可以注册这个域名,然后让钓鱼服务器访问我的网站,这样不就能获取到他的公网IP了吗!(前提是它有公网IP而不是内网映射出去的。)
一般mysql默认安装很多是0.0.0.0,但是这不意味着允许root用户远程登录,于是我先通过注入看了下:
看到%了!
抱着一丝希望,我花了45元注册了这个域名,然后把www子域解析到了我的服务器上,然后访问这个index.php,果然!我的服务器上出现了一个IP,百度了一下发现是香港的IP,不是阿里云(当时用Python启的服务,没截图,看下和小伙伴的聊天记录吧):
怀着激动的心情,我用nmap扫了下3306端口,发现端口是开放的:
连接mysql:
可以,很舒服!尝试写个phpinfo:
之后用webshell看了下权限,很低,目标mysql是5.0的,直接上t00ls的udf提权脚本:
成功拿到system权限:
查看下端口信息,发现3264端口是远程桌面的端口:
创建用户,登录:
Game Over.
02 往期精彩
文章来源:先知社区-superdong
原文地址:https://xz.aliyun.com/t/1851
如需转载本样式风格、字体版权,请保留出处:李白你好