0x00 前言
这天风和日丽,我正在摸鱼,忽然QQ群弹出一条消息,我打开一看,我感觉不简单。如下图:
扫码后发现跳转到了QQ邮箱登陆界面,确定为钓鱼网站,看到其域名为http://xxxxxxxxkak2.cn。
这里随便输入,页面跳转到如下界面。
好家伙,小伙子你挺会玩啊,收集完QQ邮箱账号密码,再来收集一波个人信息,做人不能太贪心啊。开始干活!
0x01 溯源钓鱼者
我们现在拿到了他的域名,现在收集一下域名的相关信息。使用站长工具,如下图。
可以查到域名注册人的姓名和邮箱。邮箱显示不全,这里再通过微步来进行一下查询。如下图
这里有两点可以关注一下,这里拿到了完整的邮箱和知道了这里是阿里云的。
进行一下邮箱反查,发现该邮箱下在五六月份注册多个域名,姓名都是刘聚达,大概率都是用来钓鱼的。
尝试添加QQ,发现查不到这个人,这就尴尬了。
关于钓鱼者的信息收集就告一段落,接下来开始干它网站。
0x02 进攻钓鱼网站
之前我们拿到了域名,现在对网站进行渗透,那思路是什么呢?我们可以进行一下子域名、目录等扫描,如果没什么信息,那就开始对钓鱼网站本身看看有没有能利用的地方。
首先进行一下子域名扫描,没什么发现,如下图:
然后开始对域名进行一下目录扫描,如下图
扫出来的目录,基本没有权限,都是403。没什么利用的点。
现在看来只能对网站本身进行一下渗透了,看看有没有能够利用的。现在打开收集个人信息的表单,按F12看看有没有我们值得关注的,如下:
之前目录扫描发现了uploads目录但是没有权限,这里找到了uploads/ads路径,尝试一下这里路径后端是否接收文件,构造上传数据包,发送数据,还是失败了。如下:
不要灰心,接着搞,我们还发现这里使用了form表单提交数据,然后自定义了一个函数chk(),现在我们跟进这个函数去看一眼。如下
在这里我们能够了解到,网站使用了ajax来进行数据传输,将数据提交到了本站的wap目录,然后身份证号码进行了一下简单的正则判断,规定输入为数字且位数为18位。既然是将数据提交到本站了,**那么如果钓鱼者再后端接收数据时直接将参数拼接到SQL语句中,那么就可能存在SQL注入。**现在我们构造数据,提交数据,然后抓取数据包来进行测试,抓取的数据包如下:
接下来开始测试是否存在SQL注入,name参数后添加单引号,发送数据,发现报错,存在SQL注入!
猜解一下数据库名,数据库版本,构造payload
' and updatexml(1,concat(0x7e,(select database()),0x7e),1)%23 and updatexml(1,concat(0x7e,(select @@version,0x7e),1)%23
数据库名是a7,猜解一下表名,构造payload如下
'and updatexml(1,concat(0x7e,(select table\_name from information\_schema.tables where table\_schema='a7')),0)%23
发现无法获取表名,我有一种不详的预感。
果然换用一些其他的函数,发现也是无法获取表名,可能是没有权限。真让人伤心,这个老六。
现在用sqlmap跑一下吧,结果如下
只能跑出来a7这个数据库,information_schema这个库获取不到,怪不得手工注入也拿不到表名呢。唉,现在尝试一下os-shell吧,看看有没有运气。如下
看来运气并不好,失败了。不过,虽然失败了,但是我们也知道了现在的服务器系统为Linux,并且有了路径,我们就把它当成绝对路径吧,死马当活马医,看看能不能写入文件,构造payload:
into outfile '\\www\\wwwroot\\p********7.********ka.cn\\config\\wap\\test.php' FIELDS TERMINATED BY '<?php phpinfo();?>'%23
结果如下,还是失败了。
又尝试了一些其他的方法,发现收获不大。