0x01 前言
本次我们以三层网络渗透(三设备),在本地复现其渗透测试及内网渗透的知识点,下方会给出下载地址和学习视频(4视频共130分钟左右),从安装到到渗透完毕,其中会给出知识点和作用,视频期间会在其中说明一些避坑以此涨经验,下方为本次拓扑(互联网IP为视频中讲解虚拟IP,不存在任何针对性)
我们本次会穿插网鼎杯往年综合渗透知识在视频中讲解,由于是本地复现,无法复现全部拓扑(如域渗透,蜜罐等),但已尽力去复现在综合渗透测试中的知识点(其中视频会提到很多考点)
本次学习内容包含(信息收集、信息泄露、代码审计流程、后台漏洞、专项漏洞训练、组合拳webshell、主机漏洞等)
以上图片为2020年网鼎杯某公司仿真拓扑,在视频中我们会穿插讲解部分知识
* 本次文章及视频为本地学习复现,请勿对外进行互联网未授权攻击,造成的后果自行承担
* 如您觉得本次学习对您有帮助,请点赞转发给需要的朋友共同学习
* 视频中存在口误和不妥之处请谅解和指出,感谢
0x02 环境复现
环境及所需工具下载地址:
关注“藏剑安全”回复三层渗透
DMZ服务器账号密码:administrator/P@ssw0rd1
二层服务器账号密码:dmz/P@ssw0rd2
三层服务器账号密码:pro/P@ssw0rd3
以上信息在视频和描述中已说明
请确保安装盘硬盘容量大于15G
任务要求:
拿下DMZ区设备后获取DMZ区administrator桌面下flag文件值
拿下二层网络设备获取某服务内的flag
拿下二层网络设备后获取根目录下flag文件值
拿下三层网络设备后获取pro用户桌面下的flag文件值
** 安装教程
一. 信息收集
已知DMZ对外映射靶标IP地址为192.168.59.5,我们使用Kali和Windows攻击机进行信息收集
经过对目标靶机进行扫描后,发现存在WEB和数据库及FTP服务对外开放(TOP100或TOP1000开放)
此时Fscan仍在进行对FTP的账号密码进行爆破,我们关闭线程,FTP账号密码为:wwwroot/1
二. DMZ渗透测试
经过使用攻击机访问8080端口,可以看到8080端口为dedecms,在最下方看到版本为dedecms57
可以在互联网搜索此系统版本存在的漏洞
当然,在刚刚fscan扫描中可以看到存在一个CVE漏洞,这个是泄露敏感绝对路径的,无视即可
回到扫描结果看到扫描出了FTP服务,使用账号密码登录后,看到有一个压缩包
将压缩包拿出来,看到是FTP泄露的网站源代码,我们将其用phpstrom打开进行审计
经过排查PHP的敏感函数之后,全局搜索move_uploaded_file(这个在PHP中是移动文件的意思,文件上传基本上都会有此行为,将文件从临时目录移动至指定目录)
目标文件为upload_helper.php文件,此处省略中间步骤,在视频中详细说明了原因
93行处定义了$fileurl变量,将文件目录和文件名及扩展名进行拼接后传递给它
94行对上传的文件进行移动,然后复制给$rs变量
95行进行判断,对于文件上传的行为,如果没有移动成功,以-2状态码回显上传失败原因
下面对文件类型和是否加水印进行了一个行为判定
往上跟进,此文件对下面程序做了声明,声明函数为:AdminUpload
跟进AdminUpload声明函数,看看是谁调用的它(跟进方法和详细说明在视频中展现)
看到调用文件为archives_do.php文件,跟进去以后,看到上传行为状态码的规则,这是在前端进行判断的
其次在下面可以看到,有上传成功之后返回的上传文件路径,也并没有看到严格的过滤,只需绕过前端即可
进入攻击机,打开burpsuite后进行抓包,因为是后台漏洞,所以需要登录操作,默认弱口令:admin/admin
根据网站路由,漏洞点在:内容维护->添加文档->缩略图中
上传一个图片马或图片,绕过前端mime验证,写入一句话木马,可以看到路由正是我们审计的前端调用文件
删除上传图片的多余部分并修改扩展名为php,其它不用修改,上传成功后看到响应包中的绝对路径,如一直上传失败,且上传方法无误,则可能是DMZ区的机器自动开启的WD杀软,自行关闭即可(视频已说明)
复制其绝对路径和网站地址进行拼接,使用蚁剑进行连接即可
完成连接后,在当前用户桌面下查看flag(红队信息收集仿真,已在视频说明),路径地址为:C:/Users/Administrator/Desktop/
至此,DMZ对外映射资产渗透成功拿下shell,接下来需要对二层设备进行信息收集和渗透
第一部分考察点:
靶标信息收集(互联网资产探测)
靶标端口信息收集及账号密码爆破
靶标服务漏洞信息收集
代码审计技能(不限于大赛中可能会出到此类情况)
后台弱口令探测或密码爆破
webshell上传及连接
靶机内部信息收集(flag代替)
三. 二层设备渗透测试
在对DMZ区进行渗透成功后,将对二层设备进行信息收集,将本机进行收集过程中,将查看网卡信息,看到DMZ服务器有2张网卡,除当前连接网卡以外,另一张网卡是否为通向内网的IP段
已知DMZ设备为Windows系统,我们上传Windows版本的fscan工具对192.168.52.0网段进行信息收集扫描(上传步骤等在视频中详解)
查看对网段扫描的结果,在fscan当前目录下会生成result.txt文件
可以看到在当前网段下扫描出了三个IP,IP地址分别为192.168.52.1(网关地址),192.168.52.2(本机IP地址),192.168.52.4(疑似为内网资产设备),所以此时将要对此IP地址进行单项扫描,并将结果输出到2.txt
看到对192.168.52.4IP的扫描结果,从最小端口看,22端口为SSH服务,可进行爆破或历史漏洞利用,80端口默认为WEB服务端口,6379端口为redis服务,8848端口为nacos服务,且根据fscan自带指纹库和POC库扫描出8848端口存在漏洞
这里先从最小端口看,SSH先忽略,因为root用户关闭了远程连接,默认情况下不清楚或无法枚举是否存在其它用户,耗时耗力
由于我们攻击机无法直接访问二层等内网设备,需要对其做一些代理等操作,这里使用frp进行反向代理的方式对其进行内网穿透
此处在DMZ设备上传frpc.exe文件(client客户端),以及frpc.toml(frpc配置文件),上传及解释思路在视频中详解,server_addr此处使用Windows攻击机本机
在Windows攻击机中开启fprs.exe(服务端),frps.toml配置文件默认为7000端口,用于和客户端进行交互
等待frps监听成功后,在蚁剑执行frpc进行连接,此时看到反向代理成功上线
此时虽然反向代理成功,但我们攻击机还是不能访问二层及内网设备,我们还需根据frp配置的反向代理协议在本机进行应用,Windows此处使用proxifier
打开此工具后进行配置服务器,地址填攻击机本机,也就是在frpc.toml中的server_addr地址,端口填写7777,进行外连发包
接着保存后,前往代理规则中进行配置规则,使之在某情况下流量从此服务器进行发包,且暂时应用全局(详解在视频中已解释)
确定应用后,使用浏览器访问刚刚扫描的靶机端口,此处以:192.168.52.4:8848为例
可以看到访问二层设备的nacos成功,我们在proxifier看到发送数据包的流量
当然,从我们在二层设备进行抓包,可以看到访问来源IP为192.168.52.2,也就是DMZ区设备,此时DMZ区客户端承担着跳板机的身份
然后从最小端口接着往下排查漏洞,刚刚已说明,22端口暂时忽略,从80端口和6379端口开始探测,但由于我Windows攻击机中没有扫描工具和redis客户端连接工具,此时需要kali进行连接,但是kali也是互联网设备,无法直接连接二层及内网设备,所以此时需要应用代理,在kali中有个工具叫做proxychains,可以应用代理且不是全局
我们此时可以在/etc/proxychains.conf中进行编辑代理规则,代理地址为Windows攻击机的IP及端口:192.168.59.2 7777
此时应用扫描80端口,可以看到扫描成功,此时Windows攻击机在这里承担VPS角色
通过扫描发现,80端口存在phpinfo文件,此时使用攻击机访问此页面,phpinfo泄露了绝对路径
那么是否可以根据泄露的绝对路径,使用redis写入webshell进行连接呢,我们使用kali连接redis,执行命令看到需要输入密码验证
使用redisexp攻击尝试爆破密码,并同时进行nacos漏洞挖掘,redis扫描结果没有成功爆破密码(redis漏洞利用细节等已在视频说明)
nacos版本为2.0.1,经过搜集漏洞对版本未授权漏洞进行利用,添加用户成功(版本验证及漏洞复现过程已在视频说明)
进入nacos服务,发现有三个配置文件(nacos低版本在实战中利用漏洞进入系统,往往会泄露大量敏感信息)
提交其flag(此处考察对服务的漏洞利用技能和信息收集能力)
在password配置文件中发现存在一密码,或许是SSH或redis密码
尝试使用此密码登录redis,经过验证可以看到成功
此redis版本存在主从复制漏洞,但无法进行利用,相关原因已在视频说明
前面已从phpinfo获取到了web绝对路径,此处尝试写入webshell
前往蚁剑进行连接,此处可以使用蚁剑自行配置代理,或proxifier指定文件
成功拿下二层设备shell,连接身份IP以DMZ的IP进行连接发包
继续进行信息收集,在根目录下获取flag进行提交
第二部分考察点:
主机的信息收集及二层资产扫描
敏感文件扫描及可用信息判断
其它服务可能存在的漏洞规划
漏洞利用技能和信息收集能力
特定服务的漏洞利用最大化
四. 三层设备渗透测试
在上面我们拿到了内网二层设备的shell权限,以及相对性的进行flag信息收集步骤,在接着查看网卡信息,看到还有192.168.37.0段
于是乎接着上面步骤,进行对37段信息收集,仍然使用fscan工具进行扫描,因为二层设备是Linux,所以使用fscan-Linux版本进行扫描
在fscan所在目录下会生成result文本文件,查看扫描结果
可以看到在扫描结果中有2个IP,其中192.168.37.2的IP为本机IP,那么192.168.37.6的IP是内网的三层设备IP,其中在POC中扫描到192.168.37.6存在永恒之蓝漏洞(MS17-010)
此时继续上传Linux版本frp到二层网络设备,并配置文件
与之前不同的是,此时的server_addr为二层的地址(192.168.52.2),在DMZ设备中上传frps并运行(此处以DMZ设备本机截图为例)
然后在二层网络设备运行frpc文件,在DMZ中看到代理上线即可,因为是永恒之蓝,所以优先想到的是使用MSF工具进行攻击,在kali的proxychains中配置代理地址
使用MSF进行漏洞利用,流量会自动路由到目标地址
在选择了指定exp后,进行执行攻击,不尽人意的是,一直失败
我们可以看到,通过代理确实自动路由成功,发包提示成功了,但是一直回显FAIL
其实我个人的判定是因为,我本地IP和三层设备不在一个网段,通过frp确实反向代理成功了,但是发送数据包的IP是二层设备,由于获取shell需要交互式,无法正常获取到响应包,因为三层设备找不到我的地址,所以一直失败
此时陷入了沉思,但是办法总是会有的, 这时通过互联网搜集到Windows有相关的EXP工具,是abc_123师傅写的
Windows和kali一样操作,需要配置一下代理,不同的是,使用proxifier配置,需要增加一个代理链
创建好代理服务器以后,然后创建代理链,新建一个空白或自动名称,然后由外到内的将代理服务器拖过来
然后在规则中,新增一个192.168.37.*目标段,且将动作改为创建的代理链
应用后,使用刚刚的工具进行扫描,看到存在永恒之蓝漏洞
使用永恒之蓝选项进行测试,X64版本,使用lsass即可,点击漏洞利用,看到传输的流量包
看到回显内容为WIN则利用成功,接着注入DLL文件,工具会创建一个账号为admin01
这里虽然没有看到密码在哪里,我在互联网搜索了一下,admin01的密码为Config123!@#,使用远程连接工具连接
前往pro用户桌面下查看flag文件并提交,完成三层渗透测试
第三部分考察点
二层代理的链接与应用
熟悉正向和反向连接的区别
全局非全局代理的不同
0x03 结语
再次声明:本文章仅为本地学习参考,禁止未授权对外进行渗透测试攻击,所造成的危害后果自负
不止三层,如有N层都可以用此方法进行渗透测试,希望本篇文章及视频帮助到大家(学习、大赛、工作、兴趣爱好)
* 以上视频仅为自行复现和个人理解思路,如有争议可互相讨论问题共同学习进步,建议收藏文章防止迷路
实习/校招/社招
安全服务工程师、安全攻防工程师、安全研发工程师、前后端开发工程师、测试工程师等等,所有岗位均可内推 需要考CISP/CISP-PTE/PMP/OSCP/CISSP等证书也可以加我,市场低价!有折扣! |
推荐阅读
渗透实战|记一次简单的Docker逃逸+反编译jar接管云主机