记一次由sql注入到拿下域控的渗透测试实战演练(下)
本次渗透使用工具:
mimikatz,PsExec
本次渗透网络拓扑图:

开始渗透:
上一篇文章中我们讲到我们成功渗透了目标内网中web服务器并提取其管理员明文密码,通过明文密码又成功登陆了内网中的另一台机器(10.0.1.8)

将mimikatz上传到10.0.1.8后运行下列命令进行提权和抓取管理员密码:
privilege::debug
sekurlsa::logonpasswords


发现域管理员账号曾经登陆过这台机器,如果我们能够抓取到他的密码,那么我们就可以完成登陆域控的任务了
但是发现无法像上次一样抓取到管理员的明文密码,因为mimikatz的抓取密码并不是万能的
如果目标机器修改过程注册表中的相关选项或者是Windows server 2012以上版本或者是打KB2871997补丁就会抓取不到明文密码
虽然有密文,但是密文是加盐值加密的,几乎不可能通过暴力破解的方式强行猜出来
所以我们无法向上一篇文章所讲的那样直接通过明文来登录administrator,所以我们接下来要用另一种方法来登录管理员账号:哈希传递
哈希传递的原理其实非常简单,因为winsdows以及现在市面上大多数网站的登陆原理都不是直接校验明文密码,数据库中储存的也不是明文密码,而是经过哈希加密的密文
在用户输入密码时,它们会去校验用户输入密码经过加密之后的值与数据库中储存的值是否相同而不是校验明文
说白了就是windows的登陆原理就是哈希校验,所以理论上只要你是掌握了管理员密码的哈希值就有可能只通过这一个哈希值进行登录
实际上在渗透测试中,哈希传递是一个非常实用和常见的攻击手法
在我们的神器mimikatz中封装了哈希传递的功能
使用以下命令进行哈希传递
sekurlsa::pth /user:administrator /domain:"XXX" /ntlm:61465a991b168727b65b3644aab823cd
domain中填写域的名称

成功执行后会弹出一个cmd窗口,我们尝试用此窗口访问域控

成功访问域控C盘,但是仅仅能够访问不能够我们强烈的渗透欲望
我们可不可以向域控中添加一个自己的账号来登录呢
这里又要用到一个提权工具PsExec,这是windows官方自带的提权工具
因为这里我们已经通过哈希传递登录了域管账号,拥有了域管权限,所以接下来只需要打开一个域控的cmd就可以进行添加用户的操作了
通过
PsExec.exe //域控地址 cmd

在弹出的cmd下用systeminfo查看机器信息,确定是域控的cmd无疑
来打开域控的cmd,接下来就是我们熟悉的套路了
net user haixian abc123456.! /add
net localgroup administrators haixian /add

成功添加管理员账号,接下来就可以进行登陆域控主机,制作黄金票据了,但制作黄金票据之前我们首先要了解什么是黄金票据以及制作黄金票据的意义
在域中,在域中域控账号要登录客户机,需要通过一个认证过程所颁发的通行证,这个通行证就叫做票据,票据又分为黄金票据和白银票据票据一个是用域控用户账户制作,一个是用krbtgt账户(KDC超管账号)制作
金票权限是最大的
这个认证过程就是windows的认证协议-Kerberos
我们通过一张图来大体了解一下什么是Kerberos:

上图演示了大致的票据颁发过程,这中间还有一次客户机和KDC通过AC的一次加密身份验证,真实的Kerberos是一个非常复杂的认证过程
以上只是简单介绍方便理解,通俗来说,就是域控与客户机的认证需要一个通行证(也就是票据)
也就是说有了黄金票据就拥有了KDC的权限,就可以任意访问域内任何一台机器了
接下来进入实操:
首先通过我们创建的haixian账户进入域控,并上传mimitatz
通过
lsadump::dcsync /user:krbtgt
可以抓取krbtgt账户的哈希和securityID,这两者是制作黄金票据的关键:

然后在10.0.1.8这台主机的mimikatz通过
kerberos::golden /admin:administrator /domain:XXX /sid:S-1-5-21-4098506371-3349406080-1400905760 /krbtgt:9f7afad7acc9f72b7e338b908795b7da /ticket:administrator.kiribi
来制作黄金票据,不过这里需要注意securityID的最后-502并不是它的内容,而是下一个ID的内容,制作的时候要注意别掉到坑里去
通过
kerberos::ptt administrator.kiribi
来使本机加载黄金票据


可以看到加载黄金票据前这台10.0.1.8并没有访问域控的权限
加载成功后我们使用10.0.1.8这台机器的cmd尝试访问域控机器的C盘,发现成功,接下来就是老套路包括添加账户等等

在最后不得不感慨一句mimikatz牛X!它的很多功能本文还没有涉及到,感兴趣的读者可以自行百度或谷歌了解~
(注意这里的黄金票据是长期有效的,修改管理员账号密码是没有用的,它所依靠的是KDC,而KDC的密码是在建立域的最初设置的,这个密码一般会很复杂,也很少会改,所以相对与哈希传递,黄金票据才是当之无愧的“后门”)
至此,我们完成了对目标内网的一系列渗透,从最初的sql注入getshell到最后的在域控机器留下后门,几乎包含了经典渗透测试的全过程,所涉及知识与操作较为简单,适合新手阅读
(谢谢大家,溜了溜了~)
记一次由sql注入到拿下域控的渗透测试实战演练(下)的更多相关文章
- 记一次手动SQL注入
1.检测到可能存在注入漏洞的url 最常用的 ' ,and 1=1 ,and 1=2 http://www.xxx.com/subcat.php?id=1 2.判断字段个数 http://www.xx ...
- sql注入攻防 以php+mysql为例
随着Web应用的高速发展和技术的不断成熟,对Web开发相关职位的需求量也越来越大,越来越多的人加入了Web开发的行列.但是由于程序员的水平参差不齐或是安全意识太低,很多程序员在编写代码时仅考虑了功能上 ...
- 通过 HTTP 头进行 SQL 注入
在漏洞评估和渗透测试中,确定目标应用程序的输入向量是第一步.有时,当做web应用程序测试时,SQL注入漏洞的测试用例通常局限于特殊的输入向量GET和POST变量.那么对于其他的HTTP头部参数呢?难道 ...
- web安全测试&渗透测试之sql注入~~
渗透测试概念: 详见百度百科 http://baike.baidu.com/link?url=T3avJhH3_MunEIk9fPzEX5hcSv2IqQlhAfokBzAG4M1CztQrSbwsR ...
- 开发反模式 - SQL注入
一.目标:编写SQL动态查询 SQL常常和程序代码一起使用.我们通常所说的SQL动态查询,是指将程序中的变量和基本SQL语句拼接成一个完整的查询语句. string sql = SELECT * FR ...
- 了解SQL注入攻击
SQL注入:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,这是SQL注入的标准释义. 随着B/S模式被广泛的应用,用这种模式编写应用程序的程序员也越来越多,但由于开发人员的水 ...
- 通过 HTTP 头进行 SQL 注入(转)
英文原文:DatabaseTube,翻译:开源中国 在漏洞评估和渗透测试中,确定目标应用程序的输入向量是第一步.这篇文章解释了别人是如何通过HTTP头部对你的数据库进行SQL注入攻击的,以及讨论下选择 ...
- Python中防止sql注入的方法详解
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库.下面这篇文章主要给大家介绍了关于Python中 ...
- 适用于WebApi的SQL注入过滤器
开发工具:Visual Studio 2017 C#版本:C#7.1 最有效的防止SQL注入的方式是调用数据库时使用参数化查询. 但是如果是接手一个旧的WebApi项目,不想改繁多的数据库访问层的代码 ...
随机推荐
- navicat for mysql 破解版
Navicat for MySQL下载地址:Navicat for MySQL 软件和破解程序 第1步.安装Navicat软件,最后点击完成 第2步.安装成功之后还要进行破解.点击patchNavic ...
- 【Java基础】枚举类与注解
枚举类与注解 枚举类的使用 当需要定义一组常量时,强烈建议使用枚举类. 枚举类的理解:类的对象只有有限个,确定的. 若枚举只有一个对象, 则可以作为一种单例模式的实现方式. 枚举类的属性: 枚举类对象 ...
- MySQL常用的一些(就几个)聚合函数
聚合函数 (常用) 函数名称 描述 CONUT() 记数 SUM() 求和 AVG() 平均值 MAX() 最大值 MIN() 最小值 -- ================= 聚合函数 ====== ...
- linux线程库
linux 提供两个线程库,Linux Threads 和新的原生的POSIX线程库(NPTL),linux threads在某些情况下仍然使用,但现在的发行版已经切换到NPTL,并且大部分应用已经不 ...
- java锁的对象引用
当访问共享的可变数据时,通常需要同步.一种避免使用同步的方式就是不共享数据. 如果数据仅在单线程内访问,就不需要同步,这种技术称为"线程封闭",它是实现线程安全性最简单方式之一. ...
- SAP中用户口令状态的一点说明
数据元素:XUPWDSTATE 数值 内涵 -2(通常)不能更改口令.-1(每天只允许一次)今天不能更改口令.0可以更改口令,但没有必要更改.1口令为初始值必须更改口令.2口令过期必须更改口 ...
- UVM基础总结——基于《UVM实战》示例
一.前言 工作一直在做SoC验证,更关注模块间的连接性和匹配性,所以相比于擅长随机约束激励的UVM来说,定向测试的概念更容易debug.当然前提是IP已经被充分验证.因此觉得接触UVM的机会较少.到现 ...
- SourceGenerator入门指北
SourceGenerator介绍 SourceGenerator于2020年4月29日在微软的.net blog首次介绍,大概说的是开发者编可以写分析器,在项目代码编译时,分析器分析项目既有的静态代 ...
- Angular入门到精通系列教程(13)- 路由守卫(Route Guards)
1. 摘要 2. 路由守卫(Route Guards) 2.1. 创建路由守卫 2.2. 控制路由是否可以激活 2.3. 控制路由是否退出(离开) 3. 总结 环境: Angular CLI: 11. ...
- 前端PDF文件转图片方法
第一步:先下载pdfjs,网址:PDF下载地址,再引入到项目中,我是标签直接引用的 <script src="pdfjs/build/pdf.js"></scri ...