1
JAVA环境
1、WebGoat
WebGoat 是一个由 OWASP 维护的 Web 应用程序靶场环境,旨在帮助大家学习 web 应用程序的漏洞原理及测试方法。
项目地址:
| https://github.com/WebGoat/WebGoat
该项目使用 java 语言开发,涉及漏洞包括 OWASP Top10,参考文档:
| https://owasp.org/www-project-webgoat/
2、JVApp
Java漏洞练习程序,开发工具Eclipse,运行环境Java 1.7以上版本,Tocmat7以上。
https://github.com/shack2/JVApp
安装方法:
1.首先安装jdk1.7以上版本,下载Tomcat7以上版本,将war包程序部署到Tomcat webapps目录
2.安装mysql5.7,如果是其他5.x版本或导入SQL报错,修改JVAPP.sql中的utf8mb4为utf8,然后新建数据库apptest使用navicat导入sql文件。
3.启动tomcat,待程序解压后,修改JVApp中WEB-INF/classes/config.properties中的数据库连接信息(ip、数据库、账号、密码)等信息,修改完成后重启tomcat即可。
4.访问程序:http://127.0.0.1/JVApp/
3、SecExample
https://github.com/tangxiaofeng7/SecExample
AVA 漏洞靶场 (Vulnerability Environment For Java)
Name |
Star |
[注入漏洞-SQL注入] |
🌟🌟🌟 |
[注入漏洞-命令注入] |
🌟 |
[注入漏洞-spel表达式注入] |
🌟🌟🌟 |
[XSS漏洞] |
🌟 |
[CSRF漏洞] |
🌟🌟 |
[SSRF漏洞] |
🌟🌟 |
[CORS漏洞] |
🌟🌟🌟🌟 |
[反序列化漏洞-Fastjson反序列化] |
🌟🌟🌟🌟 |
[验证码相关漏洞] |
🌟🌟 |
安装
git clone https://github.com/tangxiaofeng7/SecExample.git
cd SecExample
docker-compose up -d
访问: http://localhost:8080
http://127.0.0.1:8080/ssrfoutput
4、Micro_service_seclab
这是一个Java漏洞靶场
这个Java漏洞靶场是基于SpringBoot开发,目的是用来检测SAST工具的准确性(关注漏报和误报问题)的。
如果想学习使用CodeQL检测漏洞,可根据文章《CodeQL从入门到放弃》 结合此项目进行学习。
可以用此靶场测试(CodeQL, CheckMarx, Fortify SCA)白盒检测工具,根据预先埋点的漏洞,与测试结果进行对比,
判断在什么地方存在误报和漏报的问题。
当然,你也可以用这个靶场做黑盒测试,所有漏洞都提供了数据库文件
https://github.com/cream-sec/micro_service_seclab
支持的漏洞
SQL注入
SQL注入这部分,会出现很多不同白盒写法导致的SQL注入。
种类 |
解释 |
伪代码 |
String Source |
输入点是字符串类型 |
one(@RequestParam(value = "username") String username) |
List |
输入点是Long泛型(用来测试误报) |
longin(@RequestBody Listuser_list) |
Optional |
新特性 |
optionalLike(@RequestParam(value = "username") Optionaloptinal_username) |
ListSource |
输入点是String泛型 |
in(@RequestBody Listuser_list) |
Object Source |
对象类型 |
objectParam(@RequestBody Student user) |
MyBatis注入 |
XML分离SQL检测 |
myBatis(@RequestParam(value = "name") String name) |
In类型注入 |
In类型注入 |
参照代码 |
Like类型 |
Like类型注入 |
参照代码 |
Lombok |
Lombok对注入漏洞的影响 |
参照代码 |
MyBatis注解方式注入 |
MyBatis注解方式注入 |
参照代码 |
Spring Data JPA |
JPA 方式 |
参照代码 |
2). RCE命令执行
种类 |
解释 |
伪代码 |
processBuilder |
processBuilder导致的RCE |
— |
Runtime.getRuntime().exec(args) |
Runtime.getRuntime().exec(args)导致的RCE |
— |
3). FastJson反序列化漏洞
提供1.2.31版本的Fastjson供进行测试。
@RestController
@RequestMapping(value = "/fastjson")
public class FastJsonController {
@PostMapping(value = "/create")
public Teacher createActivity(@RequestBody String applyData,
HttpServletRequest request, HttpServletResponse response){
Teacher teachVO = JSON.parseObject(applyData, Teacher.class);
return teachVO;
}
}
Bash
4. SSRF漏洞
种类 |
解释 |
伪代码 |
url.openConnection() |
url.openConnection()引起的SSRF |
参照代码 |
Request.Get() |
Request.Get()引起的SSRF |
参照代码 |
OkHttpClient |
OkHttpClient引起的SSRF |
参照代码 |
DefaultHttpClient |
DefaultHttpClient引起的SSRF |
参照代码 |
url.openStream() |
url.openStream()引起的SSRF |
参照代码 |
5.XXE
种类 |
解释 |
伪代码 |
DocumentBuilderFactory |
DocumentBuilderFactory引起的SSRF |
参照代码 |
6. 反序列化漏洞
持续添加中
7. 逻辑漏洞
添加中
5、Hello-Java-Sec
Java漏洞平台,结合漏洞代码和安全编码,帮助研发同学理解和减少漏洞,代码仅供参考
https://github.com/j3ers3/Hello-Java-Sec
●默认账号:admin/admin
●目前实现的漏洞点有:
SQLi
XSS
RCE
Deserialize
SSTI
SpEL
SSRF
Directory Traversal
Redirect
CSRF(X)
File Upload
XXE
Actuator
Fastjson
Xstream
Log4shell
JNDI
Dos
more(X)
Bash
安装运行方法如下:
IDEA
配置数据库连接,数据库文件db.sql
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=1234567
Bash
JAR(JDK1.8)
git clone https://github.com/j3ers3/Hello-Java-Sec
cd Hello-Java-Sec
mvn clean package -DskipTests
java -jar target/hello-1.0.0-SNAPSHOT.jar
Bash
Docker
mvn clean package
./deploy.sh
Bash
技术架构:
●Java 1.8
●SpringBoot 4.0
●Bootstrap 4.6.0
●Codemirror 5.62.0
开启环境:
访问:http://127.0.0.1:8080
账号密码:admin/admin
2
Python环境
1、TIWAP
https://github.com/tombstoneghost/TIWAP
**TIWAP是一款包含大量漏洞的Web应用渗透测试学习工具,**该工具基于Python和Flask实现其功能,帮助信息安全爱好者或测试人员学习和了解各种类型的Web安全漏洞
当前版本的TIWAP实验环境中包含了二十种安全漏洞,具体如下所示:
●SQL注入
●Blind SQL注入
●NoSQL注入
●Command注入
●业务逻辑漏洞
●敏感数据泄露
●XML外部实体
●安全错误配置
●反射型XSS
●存储型XSS
●基于DOM的XSS
●HTML注入
●不安全的证书验证
●硬编码Credentials
●不安全的文件上传
●暴力破解
●目录遍历
●跨站请求伪造(CSRF)
●服务器端请求伪造(SSRF)
●服务器端模板注入(SSTI)
其中,每一种漏洞都提供了三种等级的漏洞利用难度,即低级Low、中级Medium和困难Hard,可以根据自己的需求在设置页面中进行相应的配置。
2、SSTI-labs
https://github.com/X3NNY/sstilabs书签:https://github.com/X3NNY/sstilabs
这个项目是为了帮助正在学习SSTI的伙伴,你可以从中学到一些绕过方法,同时如果你有新的绕过姿势,你可以参与到本项目的贡献之中.
flask-lab
确保你已经安装了python
克隆项目或者下载zip文件
pip install -r requirements.txt
python app.py
它将运行在5000端口上,为了安全起见,请不要使用root用户运行
3
PHP环境
1、DVWA
DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的 PHP/MySQL Web 应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助 web 开发者更好的理解 web 应用安全防范的过程。项目地址:
| https://github.com/digininja/DVWA
可docker安装
docker pull vulnerables/web-dvwa
docker run –rm -it -p 80:80 vulnerables/web-dvwa
访问80端口就可以了哈
Bash
DVWA 共有十个模块,分别是:
1.Brute Force(暴力(破解)) 2.Command Injection(命令行注入) 3.CSRF(跨站请求伪造) 4.File Inclusion(文件包含) 5.File Upload(文件上传) 6.Insecure CAPTCHA (不安全的验证码) 7.SQL Injection(SQL注入) 8.SQL Injection(Blind)(SQL盲注) 9.XSS(Reflected)(反射型跨站脚本) 10.XSS(Stored)(存储型跨站脚本)
DVWA-WooYun
DVWA-WooYun 是基于 wooyun 历史真实漏洞而设计的漏洞靶场, 项目地址:
| https://github.com/lxj616/DVWA-WooYun
包含的漏洞如下:
2、Bwapp
一款非常好用的漏洞演示平台,包含有100多个漏洞
docker search bwapp
docker pull raesene/bwapp
docker run -itd –name bwapp raesene/bwapp
Bash
3、iwebsec
4、Pikachu
Pikachu是一个带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞。如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习,那么Pikachu可能正合你意。
Pikachu上的漏洞类型列表如下:
●Burt Force(暴力破解漏洞)
●XSS(跨站脚本漏洞)
●CSRF(跨站请求伪造)
●SQL-Inject(SQL注入漏洞)
●RCE(远程命令/代码执行)
●Files Inclusion(文件包含漏洞)
●Unsafe file downloads(不安全的文件下载)
●Unsafe file uploads(不安全的文件上传)
●Over Permisson(越权漏洞)
●../../../(目录遍历)
●I can see your ABC(敏感信息泄露)
●PHP反序列化漏洞
●XXE(XML External Entity attack)
●不安全的URL重定向
●SSRF(Server-Side Request Forgery)
●管理工具
●More…(找找看?..有彩蛋!)
项目地址:
| https://github.com/zhuifengshaonianhanlu/pikachu
docker安装
git clone https://github.com/zhuifengshaonianhanlu/pikachu
cd pikachu
docker build -t "pikachu" .
使用当前目录 kerfile 创建镜像,命为 pikachu。要和 Dockerfile 在同一目录,注意命令后面还有一个点
中间会拉取 lnmp 环境,大约有 200M
docker run -it -d -p 8082:80 pikachu
首页有一个初始化按钮,点击初始化后即可
Bash
5、Permeate
6、SQLI-Labs
专注于 sql 注入研究的靶场,共计 65 关,项目地址:
https://github.com/Audi-1/sqli-labs
docker安装
docker pull acgpiano/sqli-labs
docker images
docker run -dt –name sqli -p 80:80 –rm acgpiano/sqli-labs
访问80端口
Bash
7、Upload-Labs
upload-labs 是一个使用 php 语言编写的,专门收集渗透测试和 CTF 中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。项目地址:
| https://github.com/c0ny1/upload-labs
靶机包含的漏洞类型分类:
docker pull c0ny1/upload-labs
docker run -d -p 81:80 c0ny1/upload-labs
可以正常启动
但是,当上传文件时,会出现下图所示的报错,即使上传合法的文件也是报错
解决:
① 进入upload-labs容器
docker exec -it [CONTAINER ID] /bin/bash #查看CONTAINER ID命令docker ps
② 创建upload文件夹:mkdir upload
③ 给upload赋权限:chmod 777 upload
此时,一切正常。靶场搭建完毕!
Bash
8、XSS-Labs
针对 xss 漏洞的专项训练靶场,一共 20 关,涉及的知识点包括:
●无过滤 XSS (level 1)
●各种难度的构造闭合 XSS (level 2、3、4、5、6)
●各种难度的绕过过滤 XSS (level 2、3、4、5、6)
●双写拼接 XSS (level 7)
●实体编码+HTML 编码 XSS (level 8、9)
●input 中的 XSS (level 10)
●HTTP headers 头中的 XSS (level 11、12、13)
●exif XSS (level 14)
●angularjs XSS (level 15)
●URL 编码 XSS (level 16)
●embed 标签的 XSS (level 17、18)
●Flash XSS (level 19、20)
项目地址:
| https://github.com/do0dl3/xss-labs
在线地址:http://test.xss.tv
XSS Vulnerability Scenarios (challenges)
https://github.com/moeinfatehi/xss_vulnerability_challenges
this repository is a docker containing some "XSS vulnerability" challenges and bypass examples.
The ideas behind challenges are:
●Javascript validation bypass
●html entities bypass
●WAF bypass
●Black-list validation bypass
●Basic XSS validation bypass
●Double encode bypass of WAF to exploit XSS
●Exploiting XSS by bypassing escape characters
启动方法:
sudo docker run -d -p 9003:80 moeinfatehi/xss_vulnerability_challenges
Bash
或者
git clone https://github.com/moeinfatehi/xss_vulnerability_challenges.git
cd xss_vulnerability_challenges
docker-compose up
访问http://localhost:9003
Bash
9、SSRF-LAB
SSRF-LABS 有一个好看又简洁的界面,提供了最基本的 REST API 和客户端 WebHook 功能用于 SSRF 测试。项目地址:
| https://github.com/m6a-UdS/ssrf-lab/
以此衍生出的新的靶场,基于实际环境的云基础设施攻击靶场 DVCA,项目地址:
| https://github.com/m6a-UdS/dvca
项目以 AWS 为目标云,通过 SSRF 漏洞获得云基础设施的管理员权限
10、Webug4.0
基础环境是基于PHP/mysql制作搭建而成,中级环境与高级环境分别都是由互联网漏洞事件而收集的漏洞存在的操作环境。部分漏洞是基于Windows操作系统的漏洞所以将WeBug的web环境都装在了一个纯净版的Windows 虚拟机中
安装
虚拟机下载地址:https://pan.baidu.com/s/1k6Th3RwJZTHrmoS2EbO6vA 提取码:pzaq
11、XXE-lab(针对XXE)
xxe-lab由国内大佬@c0ny1开发的,与sqli-labs有些类似,主要专注于XML外部实体注入漏洞这一块。
xxe-lab是一个使用php,java,python,C#四种当下最常用语言的网站编写语言来编写的一个存在xxe漏洞的web demo。
GITHUB地址:https://github.com/c0ny1/xxe-lab
安装
php_xxe
直接放在php web页面下即可运行。
java_xxe
java_xxe是serlvet项目,直接导入eclipse当中即可部署运行。
python_xxe:
安装好Flask模块
python xxe.py
Csharp_xxe
直接导入VS中运行
Bash
12、PHP7 版 sqli-labs
基于第一个 sqli-lab 项目,将所有代码适配到 php7 版本,涉及的技术和测试方法跟第一个项目相差无几,项目地址:
| https://github.com/skyblueee/sqli-labs-php7
13、Mutillidae_2
包含四十多个漏洞,使用 php 语言编写
部署:curl -sSL https://websploit.org/install.sh | sudo bash
4
ASP环境
1、MSSQL-SQLi-labs
https://github.com/Larryxi/MSSQL-SQLi-Labs
关于系统的说明
1.前期使用的架构是Windows 2003上的iis+asp+bootstrap+mssql 2000
2.asp开发参考的书目是《ASP 从入门到精通(放弃)》
3.主要的代码逻辑则仿造的是php版的sqli-labs,完成了前20关的内容,其中也有些小替换
程序的几个关键点
1.asp不支持动态包含文件所以就重复了多次前端页面
2.对于数据库的报错特性,在脚本中设置了捕获陷阱,当有报错时再把错误信息写入到页面中
3.由于使用到Recordset,不能简单地取出某一列来判断SQL语句是否有查询出结果,而是需要同时判断BOF和EOF才更加合理
4.在SQL Server 2000中QUOTED_IDENTIFIER 为 ON 时,双引号只能用于分隔标识符,不能用于分隔字符串,所以在某些关卡中对查询语句进行了替换
详见:NmapRecordSearch && MSSQL-SQLi-Labs 初步开发小结
5
NoSQLi Lab
之前的项目都是针对关系型数据库的利用,这个项目是针对非关系型数据库的漏洞环境,比如 redis、mongoDB 等,测试起来还是有所差别的,项目地址:
| https://github.com/digininja/nosqlilab
apt-get update && apt-get dist-upgrade
apt-get install php-mongodb apache2 vim mongodb git php
cd /var/www/html/
rm index.html
git clone https://github.com/digininja/nosqlilab
Bash
6
GO环境
https://github.com/leveryd/go-sec-code书签:GitHub – leveryd/go-sec-code: Go相关的安全研究
"漏洞类型"包括:
●任意文件读取
●任意文件写入
●SSRF
●命令执行注入
●SQL注入
●模板注入
●并发攻击
7
Node靶场
1、Vulnerable-node
https://github.com/cr0hn/vulnerable-node
2、JuiceShop
使用 Node.js、Express 和 Angular 编写的 web 漏洞靶场环境,同样包含 OWASP Top 10 所有漏洞,比较贴近现在流行的前后端分离的架构,学习如何发现 API 的安全漏洞
curl -sSL https://websploit.org/install.sh | sudo bash
8
Ruby靶场
Ruby靶场
https://github.com/cliffe/secgen
9
API测试环境
1、APISandbox
Pre-Built Vulnerable Multiple API Scenarios Environments Based on Docker-Compose.
APISandbox是一个包含多个场景的API漏洞靶场。
目前有以下几个API漏洞场景靶场:
✔️4ASystem: 4A认证系统下的API平行越权
✔️APIVuln: 生产消费流水线中的API缓存投毒
✔️GraphqlNotebook: 一个使用GraphQL的留言板以及经典API漏洞
✔️InfoSystem: WSDL泄露API越权进后台Getshell
✔️OASystem: SpringBoot微服务架构下的API Gateway配置问题
✔️OWASPApiTop10: 使用go作为后端实现解释OWASP API Top 10的漏洞
欢迎小伙伴提交更多API安全实战思路攻略等,社区会帮忙实现成靶场环境~
安装
在Ubuntu 20.04下安装docker/docker-compose:
# 安装pip
curl -s https://bootstrap.pypa.io/get-pip.py | python3
# 安装最新版docker
curl -s https://get.docker.com/ | sh
# 启动docker服务
systemctl start docker
# 安装compose
pip install docker-compose
bash
其他操作系统安装docker和docker-compose可能会有些许不同,请阅读Docker文档进行安装。
使用
# 下载项目
wget https://github.com/API-Security/APISandbox/archive/refs/heads/main.zip -O APISandbox-main.zip
unzip APISandbox-main.zip
cd APISandbox-main
# 进入某一个漏洞/环境的目录
cd OWASPApiTop10
# 自动化编译环境
docker-compose build
# 启动整个环境
docker-compose up -d
bash
每个环境目录下都有相应的说明文件,请阅读该文件,进行漏洞/环境测试。
测试完成后,删除整个环境
docker-compose down -v
本项目中所有环境仅用于测试,不可作为生产环境使用!
注意事项:为防止出现权限错误,最好使用root用户执行docker和docker-compose命令、docker部分镜像不支持在ARM等架构的机器上运行
项目地址:https://github.com/API-Security/APISandbox
10
云安全测试环境
云安全测试环境
Metarget的名称来源于meta-(元)加target(目标,靶机),是一个脆弱基础设施自动化构建框架,主要用于快速、自动化搭建从简单到复杂的脆弱云原生靶机环境。
安装环境
Ubuntu 16.04或18.04
Python >= 3.6 (不支持Python 2.x!)
pip3
从源码安装
拉取仓库,安装必要库文件:
git clone https://github.com/brant-ruan/metarget.git
cd metarget/
pip install -r requirements.txt
使用Metarget,搭建脆弱场景,例如:
./metarget cnv install cve-2019-5736
基本操作
usage: metarget [-h] [-v] subcommand …
automatic constructions of vulnerable infrastructures
positional arguments:
subcommand description
gadget cloud native gadgets (docker/k8s/…) management
cnv cloud native vulnerabilities management
appv application vulnerabilities management
optional arguments:
-h, –help show this help message and exit
-v, –version show program's version number and exit
Bash
执行./metarget gadget list了解当前支持的云原生组件。
管理云原生组件
usage: metarget gadget [-h] subcommand …
positional arguments:
subcommand description
list list supported gadgets
install install gadgets
remove uninstall gadgets
optional arguments:
-h, –help show this help message and exit
Bash
示例
#安装制指定版docker
./metarget gadget install docker –version 18.03.1
#安装指定版本Kubernetes
./metarget gadget install k8s –version 1.16.5
#安装指定版本的Kata-containers
./metarget gadget install kata –version 1.10.0
#安装指定版本Linux内核
./metarget gadget install kernel –version 5.7.5
Bash
管理“云原生组件”的脆弱场景
usage: metarget cnv [-h] subcommand …
positional arguments:
subcommand description
list list supported cloud native vulnerabilities
install install cloud native vulnerabilities
remove uninstall cloud native vulnerabilities
optional arguments:
-h, –help show this help message and exit
Bash
执行./metarget cnv list了解当前支持的云原生组件脆弱场景。
示例:
#CVE-2019-5736
./metarget cnv install cve-2019-5736
#CVE-2018-1002105
./metarget cnv install cve-2018-1002105
#Kata-containers安全容器逃逸
./metarget cnv install kata-escape-2020
#CVE-2016-5195
./metarget cnv install cve-2016-5195
Bash
目前支持的云原生脆弱场景
场景名称 |
涉及组件 |
场景类型 |
CVSS 3.x |
Writeup |
cve-2018-15664 |
docker |
容器逃逸 |
7.5 |
|
cve-2019-13139 |
docker |
命令执行 |
8.4 |
链接 |
cve-2019-14271 |
docker |
容器逃逸 |
9.8 |
链接 |
cve-2020-15257 |
docker/containerd |
容器逃逸 |
5.2 |
链接 |
cve-2019-5736 |
docker/runc |
容器逃逸 |
8.6 |
|
cve-2019-16884 |
docker/runc |
容器逃逸 |
7.5 |
|
cve-2021-30465* |
docker/runc |
容器逃逸 |
7.6 |
链接 |
cve-2017-1002101 |
k8s |
容器逃逸 |
9.6 |
链接 |
cve-2018-1002105 |
k8s |
权限提升 |
9.8 |
|
cve-2018-1002100 |
k8s/kubectl |
容器逃逸 |
5.5 |
|
cve-2019-1002101 |
k8s/kubectl |
容器逃逸 |
5.5 |
|
cve-2019-11246 |
k8s/kubectl |
容器逃逸 |
6.5 |
|
cve-2019-11249 |
k8s/kubectl |
容器逃逸 |
6.5 |
|
cve-2019-11251 |
k8s/kubectl |
容器逃逸 |
5.7 |
|
cve-2019-11253 |
k8s |
拒绝服务 |
7.5 |
|
cve-2019-9512 |
k8s |
拒绝服务 |
7.5 |
|
cve-2019-9514 |
k8s |
拒绝服务 |
7.5 |
|
cve-2019-9946 |
k8s |
流量劫持 |
7.5 |
|
cve-2020-8554 |
k8s |
中间人攻击 |
5.0 |
|
cve-2020-8555 |
k8s |
服务端请求伪造(SSRF) |
6.3 |
|
cve-2020-8557 |
k8s |
拒绝服务 |
5.5 |
|
cve-2020-8558 |
k8s |
服务暴露 |
8.8 |
|
cve-2020-8559 |
k8s |
权限提升 |
6.8 |
|
cve-2021-25741 |
k8s |
容器逃逸 |
8.1 |
|
cve-2016-5195 |
kernel |
容器逃逸 |
7.8 |
|
cve-2016-8655 |
kernel |
权限提升 |
7.8 |
|
cve-2017-6074 |
kernel |
权限提升 |
7.8 |
|
cve-2017-7308 |
kernel |
容器逃逸 |
7.8 |
链接 |
cve-2017-16995 |
kernel |
权限提升 |
7.8 |
|
cve-2017-1000112 |
kernel |
容器逃逸 |
7.0 |
链接 |
cve-2018-18955 |
kernel |
权限提升 |
7.0 |
|
cve-2020-14386 |
kernel |
容器逃逸 |
7.8 |
|
cve-2021-22555 |
kernel |
容器逃逸 |
7.8 |
|
kata-escape-2020 |
kata-containers |
容器逃逸 |
6.3/8.8/8.8 |
|
cap_dac_read_search-container |
危险配置 |
容器逃逸 |
– |
链接 |
cap_sys_admin-container |
危险配置 |
容器逃逸 |
– |
|
cap_sys_ptrace-container |
危险配置 |
容器逃逸 |
– |
|
privileged-container |
危险配置 |
容器逃逸 |
– |
链接 |
mount-docker-sock |
危险挂载 |
容器逃逸 |
– |
链接 |
mount-host-etc |
危险挂载 |
容器逃逸 |
– |
|
mount-host-procfs |
危险挂载 |
容器逃逸 |
– |
链接 |
mount-var-log |
危险挂载 |
容器逃逸 |
– |
链接 |
管理“云原生应用”的脆弱场景
usage: metarget appv [-h] subcommand …
positional arguments:
subcommand description
list list supported application vulnerabilities
install install application vulnerabilities
remove uninstall application vulnerabilities
optional arguments:
-h, –help show this help message and exit
Bash
执行./metarget appv list了解当前支持的云原生应用脆弱场景。
注意:在构建云原生应用的脆弱场景前,需要先安装Docker及Kubernetes,可以使用Metarget相关命令来完成。
示例:
./metarget appv install dvwa
参考文档:https://github.com/Metarget/metarget/blob/master/README-zh.md
容器测试工具
CDK是一款为容器环境定制的渗透测试工具,在已攻陷的容器内部提供零依赖的常用命令及PoC/EXP。集成Docker/K8s场景特有的 逃逸、横向移动、持久化利用方式,插件化管理。
https://github.com/cdk-team/CDK/wiki/CDK-Home-CN
11
APP靶场
1、DIVA
在APP项目交付的时候经常会测试客户端今天通过靶场来学习一下客户端不规范项。
DIVA (Damn insecure and vulnerable App),是一个故意设计为全身漏洞的APP软件,它能让开发人员、QA、安全人员了解到APP软件一般存在的问题。
| https://github.com/payatu/diva-android
Compile Diva
●Download the source
●Open the project in Android Studio
●For Native library – open command line
●$ cd /app/src/main/jni
●$ make (This needs to be done only once, unless you make changes to the native code – in which case run "make clean && make")
●This will compile the native library and copy all the compiled versions in directory jniLibs which is required when building the app
●From the menu bar: Build->Make Project or Run->Run App
Run Diva
●Compile/download the app
●On your phone settings. Go to security and check Unknown Sources checkbox. This allows you to install apps outside of play store. You don’t need to do this if you are installing the app on an emulator.
●Connect your phone to the computer (make sure USB debugging is enabled on your phone) or run the emulator.
●cd
●adb install
●Start playing.
Current Challenges include:
1.Insecure Logging
2.Hardcoding Issues – Part 1
3.Insecure Data Storage – Part 1
4.Insecure Data Storage – Part 2
5.Insecure Data Storage – Part 3
6.Insecure Data Storage – Part 4
7.Input Validation Issues – Part 1
8.Input Validation Issues – Part 2
9.Access Control Issues – Part 1
10.Access Control Issues – Part 2
11.Access Control Issues – Part 3
12.Hardcoding Issues – Part 2
13.Input Validation Issues – Part 3
不安全日志输出-Insecure Logging
开发人员有意或无意地记录敏感信息(如凭据,会话ID,财务详细信息等)
我们输入的数字”123456789”,使用adb logcat 命令可以看到
E/diva-log( 3575): Error while processing transaction with credit card: 123456789
text
使用jd-gui看下logActivity.class 可以发现
{Log.e("diva-log", "Error while processing transaction with credit card: " + paramView.getText().toString());
Toast.makeText(this, "An error occured. Please try again later", 0).show();}、
Java
代码中使用了log.e,如果开发人员在debug时不小心忘记去掉log输出,将会造成很大的安全隐患。
不安全的数据存储
Insecure Data Storage -Part1
不安全的数据存储也是App常见的安全问题之一,主要有三种方式:
●将敏感数据保存到配置文件中。
●将敏感数据保存在本地的sqlite3数据库中
●将敏感数据保存在临时文件或者sd卡中。
使用了SharedPreferences类,该类是Android平台上一个轻量级的存储类,主要是用来保存一些常用的配置,本例中是用该类存储了用户名和密码,因此是具有风险的。SharedPreferences类存储的数据会以.xml的形式存储在/data/data/apppackagename/shared_prefs目录下
输入用户名和密码都为admin
使用adb连接手机查看文件
InsecureDataStorage1Activity.class
paramView = PreferenceManager.getDefaultSharedPreferences(this).edit();
EditText localEditText1 = (EditText)findViewById(2131493000);
EditText localEditText2 = (EditText)findViewById(2131493001);
paramView.putString("user", localEditText1.getText().toString());
paramView.putString("password", localEditText2.getText().toString());
paramView.commit();
Toast.makeText(this, "3rd party credentials saved successfully!", 0).show();
Java
Insecure Data Storage -Part2
一般app对应的数据库目录: /data/data/apppackagename/databases
输入用户名,密码都为ceshi
使用adb查看数据库
InsecureDataStorage2Activity.class
SQLiteDatabase localSQLiteDatabase = this.mDB;
paramView = new java/lang/StringBuilder;
paramView.<init>();
localSQLiteDatabase.execSQL("INSERT INTO myuser VALUES ('" + localEditText1.getText().toString() + "', '" + localEditText2.getText().toString() + "');");
this.mDB.close();
Toast.makeText(this, "3rd party credentials saved successfully!", 0).show();
Java
Insecure Data Storage -Part3
输入用户名和密码为demo
使用adb查看临时文件,目录在/data/data/apppackagename/
InsecureDataStorage3Activity.class
Object localObject2 = File.createTempFile("uinfo", "tmp", (File)localObject1);
((File)localObject2).setReadable(true);
((File)localObject2).setWritable(true);
localObject1 = new java/io/FileWriter;
((FileWriter)localObject1).<init>((File)localObject2);
localObject2 = new java/lang/StringBuilder;
((StringBuilder)localObject2).<init>();
((FileWriter)localObject1).write(localEditText.getText().toString() + ":" + paramView.getText().toString() + "n");
((FileWriter)localObject1).close();
Toast.makeText(this, "3rd party credentials saved successfully!", 0).show();
Java
Insecure Data Storage -Part4
存储sd卡的目录一般在:/mnt/sdcard
InsecureDataStorage4Activity.class
paramView = (EditText)findViewById(2131493010);
EditText localEditText = (EditText)findViewById(2131493011);
File localFile = Environment.getExternalStorageDirectory();
try
{
Object localObject1 = new java/io/File;
Object localObject2 = new java/lang/StringBuilder;
((StringBuilder)localObject2).<init>();
((File)localObject1).<init>(localFile.getAbsolutePath() + "/.uinfo.txt");
((File)localObject1).setReadable(true);
((File)localObject1).setWritable(true);
localObject2 = new java/io/FileWriter;
((FileWriter)localObject2).<init>((File)localObject1);
localObject1 = new java/lang/StringBuilder;
((StringBuilder)localObject1).<init>();
((FileWriter)localObject2).write(paramView.getText().toString() + ":" + localEditText.getText().toString() + "n");
((FileWriter)localObject2).close();
Toast.makeText(this, "3rd party credentials saved successfully!", 0).show();
return;
}
Java
可以看到使用Environment.getExternalStorageDirectory()来获取sd卡的目录,文件名为.unifo.txt
12
其他测试环境
1、Vulhub
Vulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。项目地址:
| https://vulhub.org/
使用文档:
| https://vulhub.org/#/docs/
当前涉及漏洞环境 200 个,Github 项目地址:
| https://github.com/vulhub/vulhub
2、VulApps
收集各种漏洞环境,为方便使用,统一采用 Dockerfile 形式。同时也收集了安全工具环境。
| 喜欢请点 Star,如果不打算贡献,千万别 Fork
本项目 GitHub 地址: https://github.com/Medicean/VulApps
DockerHub 在线镜像地址
http://vulapps.evalbug.com/
3、vulawdhub
https://github.com/0xs1riu5/vulawdhub
利用docker技术创建的有漏洞的cms环境集合
13
综合靶场环境
1、Metasploitable
它是一个虚拟靶机系统,里面含有大量未被修复的安全漏洞,它主要是用于metasploit-framework测试的漏洞目标。
安装
下载链接:https://github.com/rapid7/metasploitable3
导入Oracle VM VirtualBox虚拟机即可
2、VulnHub
Vulnhub 它是一个提供各种漏洞环境的平台,里面大部分的环境是要用 VMware 或者 VirtualBox 打开运行的。目前该项目已累计设计开发 700+ 靶场,官方网站:
| https://www.vulnhub.com/
3、Vulnstack
红蓝对抗,内网、域渗透最新靶场:地址:http://vulnstack.qiyuanxuetang.net/vuln/
下载靶机,导入虚拟机即可开始
4、Vulntarget
vulntarget靶场系列仅供安全专业人员练习渗透测试技术,此靶场所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用靶场中的技术资料对任何计算机系统进行入侵操作。利用此靶场所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。 vulntarget靶场系列拥有对此靶场系列的的修改、删除和解释权限,未经授权,不得用于其他!!!
vulntarget靶场是我们自行设计搭建的靶场,其中涵盖Web漏洞、主机漏洞、域漏洞、工控漏洞等等。
目前正在不断更新中。。。。。。
靶场下载
vulntrarget-a~vulntarget-f
百度云:链接: 链接: https://pan.baidu.com/s/1sv9qdioNF4PTUliix5HEfg 提取码: 2dwq
5、WebSploit Labs
https://websploit.org/
#安装
curl -sSL https://websploit.org/install.sh | sudo bash
#更新
wget https://websploit.org/update.sh
sudo bash update.sh
Bash
-END-
▎经典文章精选
安全攻防 | APP抓包大全
安全攻防 | frp内网穿透
安全攻防 | mysql安全问题及修复方式
安全攻防 | MSF生成Payload方式总结
安全攻防 | 浅谈ms17-010多种利用方式
安全攻防 | CobaltStrike与水坑攻击的联动
安全攻防 | 记一次sql注入到内网漫游
安全攻防 | 多种方式关闭讨厌的defender!
扫描下方 二维码 加入我们吧!