红日安全红队实战1环境渗透测试记录
网络拓扑:

配置环境:
虚拟机添加两个网段,分别是52和72段

Kali本地使用vmnet18网卡,ip自动获取为192. 168. 52. 129
Web服务器Win7靶机身处两个网段,有两个网卡,分别接入vmnet18和vmnet19
测试连通性: ping kali

Web服务器默认没有开启web服务,所以需要先开启web。靶机只有一个c盘。在里面找到了phpstudy集成环境。Windows使用这个还挺多的。


至此web服务器靶机环境搭建完毕。
测试开始: 一、信息收集
本地ip是52.128 尝试收集局域网内所有开启的主机

显然可以看出143是我们的目标主机,尝试ping一下,不通,而该主机前面试过可以ping通kali,说明该主机可能有防火墙过滤。
使用nmap尝试进行探测:nmap -A -T4 -Pn 192.168.52.143(害怕被屏蔽速度可以再低点)

开放了80,3306等端口,其他常规998个端口有过滤提示,apache2.4.23, php5.4, mysql
还可以使用-sF或者-sA,分别发送的是final包和Ack包,模拟半连接发包,有助绕过防火墙。nmap默认是-sS的扫描方式,sync的包,个人理解syn是尝试连接的头半部分的包,
防火墙识别到连接意图,所以可能会过滤。
nmap -sF -A -T4 -Pn 192.168.52.143
nmap -sA -A -T4 -Pn 192.168.52.143
final主要在四次挥手时发送通知结束的包,ack一般是三次握手时的确认包,这种后半连接类型防火情一般貌似不会拦截。
如果防火墙限制了该主机某些系统程序端口数据的出入,那也是探测不出端口具体的开放情况的。不要小看防火墙。
浏览器尝试访问80 端口:

是个php探针,phpstudy集成环境,并看到了web服务的绝对路径,系统内核等多个信息。首页不是一个具体的业务系统,看是否存在后台管理或者其他配置文件的未授权读取。
因此尝试使用gobuster对子目录的信息收集。
gobuster dir -u http://192.168.52.143 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x "php,zip,rar,html"
指定有意义的后缀文件php,zip,rar,html等

太多403了,加上参数 -s 200 过滤出200, 301, 302的

Gobuster的字典扫包有时会没什么结果,可能是这模块的字典不够本土地道哈哈,kali自带,不知道是不是国外哪位大牛开发的,不太了解我们这边本土命名规则,所以拷贝御剑的字典过来试试,御剑老牌子了。

果然扫到一个包beifen,好本土的命名。立马下载。解压发现是yxcms,目录结构,源码都有了。审计走一波??

不着急,之前扫到的几个php页面,也尝试访问一下
phpinfo: disable_functions 毫无限制。。。

phpmyadmin :

二、漏洞挖掘
Yxcms后台管理登陆页面大概率是需要用户密码的,所以如果能在phpmyadmin进入数据库,找到用户名密码就方便了。这边可以尝试能不能登陆进去。
尝试弱口令登陆: 123, 123456, abc,abc123,abcd,admin,root
O了: 密码是root,能猜几下就猜,猜不到也可以bp爆破一波。这里也是闲着,那bp也来一波,多练总是好的。

咦?神了,正确的和错误的长度还一样了。不知道密码情况下,这就不好区分了。

这响应包也没有数据啊。
浏览器看了下也是没有数据返回的,这bp这招也不好使了?


从上面两个图可以看出,输入正确密码后会重定向302,所以post请求没有返回响应数据,而是跳转到了下面一个新的get请求里面。bp没有跟踪到这个请求,所以页面的长度几乎没有变化。
那我这弱口令也是运气好试出来的?
其实bp也有跟随跳转功能的,需要在Intruder的option设置一下。

这样有跳转的就会跟随,然后页面返回长度就会有所变化。
爆破本质上也是相当于脚本遍历功能,这里也是闲着就自己写了个小脚本爬虫,测试还测试,代码还是要练的呀哈哈。
源码:
审查元素发现登陆框页面提交时会有一个token随机,为了防csrf吧,所以我们要先获取到这个token,爆破之前请求下登陆页,然后解析出来就可以了,这里使用xpath,比较方便(同时正则有些忘了哈哈)。

爆破逻辑:
准备好post请求提交的参数,因为涉及到重定向跳转,为了跟随session,这里使用requests.session来跟踪请求状态。注意了,phpmyadmin最新版本好像是4.8.x,提交参数多了一个set_session的字段,需要多处理一些数据,这里还是旧版的。
测试到Python脚本 while循环ctrl + c 无法中断退出,为了方便退出,debug到脚本在运行时使用ctrl + c 会触发键盘中断异常,就在这异常里处理跳出循环就好。

这里只是遍历密码本,用户名默认用的root,有必要的爆用户名的话在外面加多一层循环读取用户名本就可以了,这就不累赘了。
运行结果:

登陆phpmyadmin,看到了yxcms管理员密码:

尝试somd5解密

这密码看起来很奇怪,一点都不规则,猜测应该不是最终密码,cmd5的网站自动检测了要钱,噗。但是密码看起来不是常规的长度,cmd5的结果估计也是有问题的。
找到后台地址,登陆看看(这里后台页面居然给出了密码...我擦,但是这种情况太少了实际肯定是没有密码显示的,为了锻炼自己那就当没看到吧)

使用前面somd5猜解的那段字符登陆失败:

通过数据表数据看这个账户显然是没有锁定的,所以somd5猜解的密码有问题,看来还得看下代码怎么写的。


结合上图,通过new的方式创建表模型的函数:

查询语句,直接查了,没有做安全性过滤,存在

找到登陆函数:


找到加密函数:
if($acc['password']!=codepwd($password)就是这里:

擦咧,是md5之后截取再md5,这反推一层之后只能拿到部分,无法反推出第二层。
在审计过程中发现是可以注入的,但是这里没办法直接admin’--的方式,因为它源码里有单独判断密码是否正确。所以密码是无法绕过的。
所以又要尝试爆破了? emmm.......
前面用到的脚本改改就行,但是这里省事就用bp吧
通过两次修改密码发现提示一样,这里存在验证码重用的漏洞,不刷新,那么就可以直接爆破了。如果刷新的话,就改成脚本爆破,爬虫去识别验证码。
是123456,这长度,还有下面的两个请求,两个响应。跳转的显著特征啊。

成功登陆:

这里顺便拓展一下思路吧,爆破不一定能成功,而且很多时候也是不成功的,如果说管理员设置的密码比较奇怪,之前遇到过中文密码,你怎么换字典都几乎是没用的,就不存在弱口令了,所以如果爆破常规弱口令不行,那就要尝试别的思路。
1、最快的方法,查找该cms版本的exp,论坛,github都可以,不过找到的exp还是要自己看看,有些exp可能有恶意操作,检查一下源码为好。
2、开源代码的前提下,前面的审计也发现是sql注入的,可以构造payload,写shell,select xxx into outfile或者dumpfile等等,不过这个需要mysql 文件导入导出有权限。
3、继续审计源码,看有没有文件包含,有机会读取到一些配置信息,文件,图片上传,或者未授权上传等,其他的可以getshell的。
4、可以看下子目录,页面源码等这些地方是否有js接口,有些是未授权访问的或者有信息泄露的,测试账号什么的。
5、前面phpmyAdmin进去还有一种方式写shell就是日志写shell。 开启全局日志,保存日志文件为php文件,然后select一句话,一句话作为查询日志自动被写入该php文件了,跟redis getshell一个原理。
这些都算是常规的思路吧,这里也总结复习下。
三、GetWebshell
在模板里插入php标签,首页访问就可以啦。


权限很高啊,直接管理员了...很多时候是需要提权exp的。有些时候会遇到命令都无法执行,那就要想办法突破disable_funciton。


根据已开启服务,没看到有杀毒软件相关服务,看来不需要做免杀逃避。还可以使用命令systeminfo收集更多信息。
Msfvenom生成后门连接器,上传执行反弹shell得到meterpreter



发现了内网72段。
四、特权提升
使用msf自带的漏洞查找提权模块试试


hashdump查看hash密码


使用mimikatz获取内存中的明文
明文密码,还是域管理员密码,那,嘻嘻嘻

五、横向渗透
把域内所有机子开起来了,物理机机子配置不行,太卡了。

内网信息收集:




可能这win7设置了访问不能访问共享,也可能不在AD活动目录,也可能这个域环境的配置问题,感觉这个域环境怪怪的。当然现在也可以通过新建用户然后rdp过去探测,但是感觉有点麻烦,先试试别的思路。
查看当前被控机子所处网段:

Msf添加路由跨网段扫描:

设置代理: vi /etc/proxychains4.conf


可以看到代理服务已经监听到12366端口:

使用proxychains + nmap + msf session跨网段扫描内网主机


哈哈,139和445在列 我又有了域管密码,smb走一波?
这里值得注意的是我扫描使用-sT,tcp的完整连接扫描,会留下连接日志,作为红队,这样做不够隐秘,如果拿不下目标机子,没法清理日志,就泄露踪影了,
最好就是切换到CS会话去扫。
这里还有个点挺奇怪,代理nmap加上-sV可以,再加-O就启动不了了,不知道是否参数冲突,待解。

没有-O,暂时看不到系统的版本,继续收集信息

发现这台win7上装有nmap,那就可脱离代理,在跳板机的shell大方扫描了

找到nmap所在地,执行
nmap -sV -O -Pn 192.168.72.141

探测到系统可能是xp或者2003,结合iis,基本肯定是2003.
在win2008及其以下级别系统,有个很出名的08_067,可以rce哈哈,试试
如果可以正向,我一般趋向于正向,正向就是在目标机开端口绑定shell,反弹shell的话是在kali本机开端口监听,目标机子把shell交过来,考虑跨网段需要
做映射来端口转发,就比较麻烦。
正向连接结果:


看来这个exploit不好使这次,又尝试了ms17_010系列的几个,不是导致目标机蓝屏就是无法生成session。这些热门选手这次都不给力啊。
这里顺便再提一下,正向连接和反弹连接的选择,如果目标机防火墙没有限制端口开启,那就可以在目标机开个端口绑定shell,如果目标开启端口需要防火墙设置,而又没有足够的权限执行命令,那反弹连接也是突破防火墙的方式之一,貌似一般内网防火墙限进不限出,如果可以上传msfvenom或者cs生成的后门连接,反弹连接还是很不错的。就在win7跳板机这里复习下这几条命令。
因为跨网段,所以反弹shell时,需要做一个内网的转发,在已拿下的跳板机win7设置端口映射,把72.141反弹到72.128的12347端口的流量转发到kali 52.129机子的监听端口,方便记忆设置成同为12347。

转发规则
netsh interface portproxy add v4tov4 listenport=12347 listenaddress=192.168.72.128 connectport=12347 connectaddress=192.168.52.129

设置当前跳板机防火墙开放12347端口的进出
netsh advfirewall firewall add rule name="20033" protocol=TCP dir=out localport=12347 action=allow
netsh advfirewall firewall add rule name="20023" protocol=TCP dir=in localport=12347 action=allow

以前看过不少帖子在内网漫游时是直接把防火墙关了,噗,这红蓝对抗时候,关防火墙这么大动静,蓝方肯定发现的咯。
回归主题
08_067, ms17_010都不好使,那就再换psexec试试。

拿到一个meter,但是很多常用命令,比如ipconfig, getuid都没有,还真是少见。

域渗透神器CS登场试试,派生个会话给CS看看


上图之所以没看到\\QWA,是因为机子太卡了,我就先关了一个,所以net view只看到了一台。

再次把所有机子开起来。
老规矩,收集下72网段机子的端口情况。



target:

因为当前域环境的配置问题(特意去靶机确认了,这就符合网络拓扑图所示,只有两台真正在域内),目前确定的是138和141机子是处于活动目录的域里,跳板机stu1(win7)不在里面,所以net view只能看到两台机子。


现实中一开始肯定是不知道哪台是域控。
正常的域环境内,确定域控最快的方法之一就是net time了,域内的时间通常是由域控时间作为时间源服务,所以net time实际就是问域控要时间。
Net time 来取得域控时间,从而得到域控为138的OWA

run mimikatz得到明文密码记录之后,使用psexec来获得域控的会话,smb协议是基于共享的协议,域内环境通常都会开放共享为域用户读写文件,所以基于smb协议的服务,防火墙一般不会拦截,这就是常见的突破口。

域控会话上线了,还是system权限哈哈哈哈,如果要admin会话可以派生会话。


同样的方式,上线系统为2003的域机子。

查看2003相关进程:


域控文件浏览:

查看域控的其他方式 net dclist:


上面都是一些常规的命令来信息收集,实际上也可以通过导入powershell的脚本文件来信息收集,或者提升权限,比如比较出名的PowerTools等。

整体环境的拓扑图:


至此,整个域环境梳理出来了。
这次主要还是一开始就拿到了域管用户名密码,所以后面配合smb思路比较直接吧,中间也有遇到一些报错的情况,转换了一些想法,得以进行下去。通常不会那么顺利拿到这关键的信息。那么在内网探测时,还可以有如下的方式尝试:
1.可以多收集到域内机子开启的各类服务,端口,比如,redis,struct2,nginx,spring等这些数据库,中间件,后台框架相关漏洞,结合这些服务已有的漏洞来进行突破测试
2.留意当前域用户进程里是否有域管理的进程,可以steal_token一波,然后以高权限去dir域内其他机子的共享路径,copy 后门连接器到目标靶机,可以执行上线一波。
3.如果能拿到krbtgt的hash,就可以制作黄金票据,以这个票据作为登陆凭证去访问域内机子,但是这个有是时效性,有效期是8个小时好像。
4.没有明文拿到域管hash也可做pth登陆凭证,也是做高权限的访问,还有make token,这次靶机使用的psexec就是基于make token。
好了这次的测试就到这里,既是练习,也是发散思路复习学过的东西。

浙公网安备 33010602011771号