- 第40天:JAVA安全-JWT安全及预编译CASE注入等
- 第41天:JAVA安全-目录遍历访问控制XSS等安全问题
- 第42天:漏洞发现- *** 作系统之漏洞探针类型利用修复
- 第43天:漏洞发现-WEB应用之漏洞探针类型利用修复
- 第44天:漏洞发现-APP应用之漏洞探针类型利用修复
- 第45天:漏洞发现-API接口服务之漏洞探针类型利用修复
通过前期的WEB漏洞的学习,掌握了大部分的安全漏洞的原理及利用,但在各种脚本语言开发环境的差异下,会存在新的安全问题,其中脚本语言类型PHP,Java,Python等主流开发框架会有所差异。
什么是JWT
JSON Web Token(JSON Web 令牌)是一种跨域验证身份的方案。JWT不加密传输的数据,但能够通过加密的数字签名来验证数据是否被篡改。
JWT分为三部分,头部(Header),声明(Claims),签名(Signature),三个部分以英文句号“.”隔开。JWT的内容以base64URL进行编码。
头部(Header)
{ "alg":"HS256", "typ":"JWT" }
“alg”是该JWT的签名使用的算法参数,常见值用HS256(默认),HS512等,也可以为None。
“typ”是该token的类型,值为“JWT”
声明(Claims)
存放有效信息的地方。这些有效信息包含三个部分:标准中注册的声明、公共的声明、私有的声明。
标准中注册的声明 (建议但不强制使用) :
iss:JWT签发者
sub:JWT所面向的用户
aud:接收JWT的一方
exp:JWT的过期时间,这个过期时间必须要大于签发时间
nbf:定义在什么时间之前,该JWT都是不可用的
iat:JWT的签发时间
jti:JWT的唯一身份标识,主要用来作为一次性token,从而回避重放攻击
公共的声明 :
公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息。但不建议添加敏感信息,因为该部分在客户端可解密。
私有的声明 :
私有声明是提供者和消费者所共同定义的声明,一般不建议存放敏感信息,因为base64是对称解密的,意味着该部分信息可以归类为明文信息。
签名(Signature)
用头部中指定的算法对base64加密后的头部和base64加密后的声明用此密码进行加盐加密,生成的字符串就是JWT的签名。
JWT颁发流程
1、用户端登录,用户名和密码在请求中被发往服务器
2、(确认登录信息正确后)服务器生成JSON头部和声明,将登录信息写入JSON的声明中(通常不应写入密码,因为JWT是不加密的),并用secret用指定算法进行加密,生成该用户的JWT。此时,服务器并没有保存登录状态信息。
3、服务器将JWT(通过响应)返回给客户端
4、用户下次会话时,客户端会自动将JWT写在HTTP请求头部的Authorization字段中
5、服务器对JWT进行验证,若验证成功,则确认此用户的登录状态
6、服务器返回响应
SQL Injection(mitigation)
sql注入的防御,主要依靠以下方法session,参数绑定,存储过程。
session
session储存在服务器端,其内容正常情况下是用户无法修改的
**参数绑定,**利用sql预编译技术
数据库在完成SQL指令的编译后,才套用参数运行。参数化查询可以阻止大部分的SQL注入。
可以通过使用“case when”语句将“order by”后的“orderexpression”表达式中添加select语句。
如果被攻击的应用有涉及排序 *** 作的话,就可以断定有“order by” *** 作,可以尝试该方法
演示案例知识点
JWT无密钥伪造攻击
将头部的“alg”改为“None”,按需要修改声明中的内容,声明中有“secretid”则改为“[]”,删掉签名的内容
JWT密钥爆破攻击
带入头部和声明,看用哪个盐“secret”时加密结果会与签名相等
其他
加密是用的是base64URL,与一般的base64相比就是把字符“+”和“/”分别变成“-”和“_”,末尾的“=”号去掉
确保JWT有效,可以改时间戳
JWT一般是用在请求头里的Authorization,并加上Bearer标注:
'Authorization': 'Bearer ' + token
JWT还会传递数据,可能会导致其他漏洞
涉及资源:
解码、验证和生成JWT:https://jwt.io/#encoded-jwt
CTFHub-历年真题:https://www.ctfhub.com/#/challenge
数据库预编译为何能防止SQL注入?:https://www.zhihu.com/question/43581628
Java代码审计入门:WebGoat8(再会):https://www.freebuf.com/vuls/216457.html
JDBC编程之预编译SQL与防注入:https://www.cnblogs.com/klyjb/p/11473857.html
第41天:JAVA安全-目录遍历访问控制XSS等安全问题本次课程注重代码分析,熟悉javaweb开发结构,掌握javaweb代码审计流程,
其次才是相关漏洞解释(因前期漏洞原理已基本讲解完毕),通过本次课程务必学会分析相关代码路径,结构,框架等知识点。
代码分析(Java代码分析=== Apk_App分析)
模块引用(框架,自带等),路由地址,静态文件(html.js 等),简易代码理解等
通过“import”部分,了解代码有哪些引用,分清自带和框架
按“ctrl”点击跳转到引用部分
类似于“@XxxXx”的是接收数据的,后面括号内就是接受的变量名,如:“@RequestParam(“uploadFile”) MultiparFile file”意为接收一个名为“uploadFile”的变量的值,类型为“MultiparFile”变量为“file”
“fullName.replace(“…/”,””)”的意思是将“…/”替换为空
“.jar”是编译型文件;“html”是静态文件,网站显示的界面;“js”是加载Javascript代码的文件
如果文件是前端验证,那么代码会在html中,或者html中加载的js文件里
如果是前端调用的js代码,会有如“th:src=”@{/lesson_js/credentials.js}”的声明,有如“javascript:submit_secret_credentials()”的调用
代码中有“String[] xxx = xxx.split(“/”)”,意为该字符串由“/”分割,具体分隔符看引号内符号是什么。
第42天:漏洞发现- *** 作系统之漏洞探针类型利用修复
系统漏洞发现意义?
由于应用是基于服务器的,如果 *** 作系统本身有漏洞,就不需要针对特定的应用寻找漏洞
漏洞类型危害情况?
对漏洞分类可以帮助了解漏洞的危害、效果和利用漏洞的前期条件,从而在需要的到达某些效果时可以找到对应的漏洞
如何做好未卜先知?
需要大量的经验和实战案例
漏洞发现- *** 作系统之漏洞探针类型利用修复
**角色扮演:** *** 作系统权限的获取会造成服务器上的安全问题
**漏扫工具:**Goby,Nmap,Nessus,Openvas,Nexpose等
**漏洞类型:**权限提升,缓冲器溢出,远程代码执行,未知Bug等
**漏洞利用:**工具框架集成类,漏洞公布平台库类,复现文章参考等
**漏洞修复:**打上漏洞补丁,关闭对应入门点,加入防护软件硬件等
名词解释
EXP 利用;POC 验证
https://blog.csdn.net/qq_38055050/article/details/80214684
CVSS(Common Vulnerability Scoring System)
CVSS是安全内容自动化协议(SCAP)的一部分
通常CVSS与CVE一同由美国国家漏洞库(NVD)发布并保持数据的更新
分值范用:0—10
不同机构按CVSS分值定义威胁的中,高、低威胁级别
CVSS体现弱点的风险,威材级别(severity)表示弱点风险对企业的影向程度
CVSS分值是业标准,但威助级别不是
CVE(Common Vulnerabilities and Exposures)
己公开的信息安全漏洞字典,统一的漏洞编号标准
MITRE公司负责维护(非盈利机构)
扫描器的大部分扫描项都对应一个CVE编号
实现不同厂商之间信息交换的统一标准
CVE发布流程
发现漏洞
CAN负责指定CVE ID
发布到CVE List—CVE-2008-4250
漏洞扫描工具演示-Goby,Nmap,Nessus
Goby
用法:
点击“Scan”,在“IP/Domain”位置输入攻击目标,网段和IP地址都可以,在“Port”处选择扫描的端口,一般为默认
点击“Advanced”,可以单独选择扫描某个漏洞,编辑任务名
点击“Start”开始扫描
点击“Asset”查看整体扫描情况,有红色叹号提示代表高危漏洞,单击查看详细情况
优点:
可视化界面,比较快
缺点:
漏洞库没有其他软件全
Nmap
Nmap除了扫端口,也可以扫漏洞。这既可以通过官方插件,也可以通过第三方探针来完成
Nmap --script=vuln 默认nse插件
vulscan、vulners 第三方库探针
https://www.cnblogs.com/shwang/p/12623669.html
Nessus
Nessus 安装-使用-插件库加载扫描
安装nessus执行命令的时候一定要管理员运行执行
用法:
选择“新建扫描”“进阶扫描”,在“目标”一栏填入目标IP,根据需要调整其他设置
点击“▶”开始扫描,点击整条扫描记录了解扫描的实时动态
漏洞利用框架演示-metasploit,Searchsploit等
Searchsploit
https://www.jianshu.com/p/bd8213c53717
使用方法:
Searchsploit 关键词
选项:
-c, --case[Term] 执行区分大小写的搜索,缺省是对大小写不敏感。
-e, --exact [Term] 对exploit标题执行EXACT匹配(默认为AND)
-h, --help 在屏幕上显示帮助
-j, --json[Term] 以JSON格式显示结果
-m, --mirror [EDB-ID] 将一个漏洞利用镜像(副本)到当前工作目录,后面跟漏洞ID号
-o, --overflow [Term] Exploit标题被允许溢出其列
-p, --path[EDB-ID] 显示漏洞利用的完整路径(如果可能,还将路径复制到剪贴板),后面跟漏洞ID号
-t, --title[Term] 仅仅搜索漏洞标题(默认是标题和文件的路径)
-u, --update 检查并安装任何exploitdb软件包更新(deb或git)
-w, --www [Term] 显示Exploit-DB.com的URL而不是本地路径(在线搜索)
-x, --examine[EDB-ID] 使用$PAGER检查(副本)漏洞利用
–colour 在搜索结果中禁用颜色突出显示
–id 显示EDB-ID值而不是本地路径
–nmap[file.xml] 使用服务版本检查Nmap XML输出中的所有结果(例如:nmap -sV -oX file.xml)使用“-v”(详细)来尝试更多的组合
–exclude=“term” 从结果中删除值,通过使用“|”分隔多个值,例如:–exclude =”term1 | term2 | term3”
metasploit
使用方法:
通过msfconsole控制台来访问和使用metasploit
“search”加关键字搜索漏洞相关的信息
search 关键词
“use”加路径使用对应的功能模块
use 路径
“show options”查看配置属性
show options
“set”加参数名加参数值,设置参数
设置好全部参数后,“run”或“exploit”来执行参数
可以用“show targets”“set target 参数”来设定攻击目标
WSL (Windows Subsystem for Linux)Windows下的Linux子系统
涉及资源:
nmap:https://nmap.org
goby:https://cn.gobies.org
国家信息安全漏洞共享平台:https://www.cnvd.org.cn
知道创宇-洞悉漏洞:https://www.seebug.org
Exploit database:https://www.exploit-db.com
vulscan:https://github.com/scipag/vulscan
nmap-vulners:https://github.com/vulnersCom/nmap-vulners
Exploit database离线版:https://github.com/offensive-security/exploitdb
nmap 扩展漏洞扫描模块:https://www.cnblogs.com/shwang/p/12623669.html
Nessus:https://zh-cn.tenable.com/products/nessus
searchsploit使用攻略:https://www.jianshu.com/p/bd8213c53717
第43天:漏洞发现-WEB应用之漏洞探针类型利用修复
已知CMS
如常见的dedecms,discuz,wordpress等源码结构,这种一般采用非框架类开发,但也有少部分采用的是框架类开发。针对此类源码程序的安全检测,我们要利用公开的漏洞进行测试,如不存在可采用白盒代码审计自行挖掘。
开发框架
如常见的thinkphp,spring,flask等开发的源码程序,这种源码程序正常的安全测试思路:先获取对应的开发框架信息(名字、版本),再通过公开的框架类安全问题进行测试,如不存在可采用白盒代码审计自行挖掘。
未知CMS
如常见的企业或个人内部程序源码,也可以是某CMS二次开发的源码结构,针对此类的源码程序测试思路:能识别二次开发就按已知CMS思路进行,不能确定二次开发的话可以采用常规综合类扫描工具或脚本进行探针,也可以采用人工探针(功能点,参数,盲猜),同样在有源码的情况下也可以进行代码审计自行挖掘。
示例思路
尝试了解网站的CMS、开发框架->寻找对应CMS、开发框架的漏洞->漏洞验证
修改网址使网站报错,在报错页面中看是否有框架或CMS信息
wpscan
wpscan使用方法:wpscan --url 目标网址 --api token Token的值
使用wpscan需要申请一个免费的账号,使用API Token
代码审计过程,
以一个SQL注入为例
1.查看SQL命令执行的情况
2.找到其中存在的变量
3.查找对应页面的select语句,如果没有对应的语句,则查找包含文件。也可以用全局搜索
4.找到对应语句后,查找其中的变量是怎么来的
5.根据程序构造SQL语句
实 *** 演示过程
CMS识别,结果为DedeCMS
通过CMS收集信息,DedeCMS下有robots.txt,还有data/admin/ver.txt可以知道网站版本
寻找CMS的漏洞,未果
代码审计,困难
尝试后台弱口令,发现默认后台地址被改
搜索CMS爆后台路径的方法,获得.inc文件,找到后台地址
尝试弱口令,未果
nmap扫端口,nmap -sV www.xxx.com,发现开放了21、80、443、888、8888端口,怀疑使用了宝塔,未果
在某路径下发现备份文件
找到数据库配置文件,用Navicat连接,被宝塔阻拦
翻出以前的备份,找到数据库配置文件,用Navicat连接,成功
查看admin信息
涉及资源:
Vulhub:https://vulhub.org/
wpscan注册:https://wpvulndb.com/users/sign_up
wpscan:https://github.com/wpscanteam/wpscan
CMSScan:https://github.com/ajinabraham/CMSScan
墨者学院-WordPress插件漏洞分析溯源:https://www.mozhe.cn/bug/detail/S0JTL0F4RE1sY2hGdHdwcUJ6aUFCQT09bW96aGUmozhe
第44天:漏洞发现-APP应用之漏洞探针类型利用修复
思路说明:
反编译提取URL或抓包获取URL,进行WEB应用测试,如不存在或走其他协议的情况下,需采用网络接口抓包进行数据获取,转至其他协议安全测试!
app->WEB、app->其他、app->逆向
抓包工具WEB协议面使用说明
burpsuite抓包
burpsuite优点:在“HTTP history”记录历史数据包,且可以排序,点击空白处还可以筛选数据包;可以抓包还可以在线提交测试,可以做漏洞扫描
抓包前设置代理:在模拟器上将本机设为代理,注意不是127.0.0.1;在burpsuite上也添加对应的代理并勾选
使用需要抓包的app,产生大量数据包
数据包的“Host”数据以“http://”开头,可知其为HTTP数据包;“Params”处有对勾“√”说明该数据有参数,可以测试漏洞;“Extension”为文件类型,“Status”为状态码
将“Host”中的网址输入到浏览器,发现是网站,按照网站思路测试
Charles抓包
抓包前设置代理:“Proxy”“Proxy Settings…”填写HTTP代理的端口,然后选择“Proxy”“Windows Proxy”
使用需要抓包的app,产生大量数据包
Charles会将抓包产生的数据按网址分类,每次产生新数据时,对应的网址会有黄色高亮,注意排除调用接口
选择网址会显示有关的数据,有的能够显示网站的结构,有的只能显示抓取的数据包
将与app相关的网址输入到浏览器,无法访问,只有用手机的数据包才能访问
只能修改数据包来访问,如何做漏洞扫描:在扫描工具的设置里面修改扫描的http头部/被动扫描
抓包精灵抓包
打开软件,点击右上角的箭头
使用需要抓包的app,产生大量数据包
回到抓包精灵,数据包分条显示,内容包括app的图标和进程,点开有详细信息
抓包精灵只抓WEB协议
Fiddler与Charles用法类似
抓包工具非WEB协议面使用说明
wireshark抓包
选择要抓取的网络接口,由于手机模拟器使用的本机网络出口,所以这里抓取本机的网络出口,也就是“以太网”,显示的IP地址和本机的一致
软件左上方,红色方块表示暂停,蓝色鲨鱼鳍代表开始抓包,可以筛选
选择一条数据,下方会显示数据包的内容
安卓逆向便捷APK一键提取URL演示
漏了个大洞apk数据提取
将apk文件放在“apps”文件夹下
运行apkAnalyser.exe
程序会在“result”文件夹下创建以apk文件名命名的文件夹来存放反编译文件
文件夹中有“urls.txt”存放apk中涉及的网站,没有该文件则没有对应内容
建议逆向和抓包并用,综合获取的信息
利用Burp筛选及联动功能打出军体拳
xray联动burpsuite(awvs也可以)
burpsuite到“User options”“Connections”的“Upstream Proxy Servers”部分,添加一条代理规则:“Destination host”为“*”,意为转发一切内容,“Proxy host”为“127.0.0.1”,“Proxy port”填写一个未被占用的端口。别忘记勾选
在模拟器上将burpsuite设置为代理
管理员运行PowerShell,来到xray的文件夹,“.xray_windows_amd64.exe”
执行命令“.xray_windows_amd64.exe webscan --listen 127.0.0.1:端口号”来监听端口,端口号与前面一致
使用需要抓包的app,产生的数据因为代理会先发送到burpsuite,burpsuite再转发给xray
可以在xray再加参数,将扫描结果保存到本地
涉及资源:
xray与burp联动被动扫描:https://www.cnblogs.com/L0ading/p/12388928.html
Wireshark:https://www.wireshark.org
Charles:https://www.charlesproxy.com
NetWorkPacketCapture(抓包工具):https://github.com/huolizhuminh/NetWorkPacketCapture
第45天:漏洞发现-API接口服务之漏洞探针类型利用修复信息收集最大化
从登记人、域名登记、特有信息入手,收集信息。其中域名信息要考虑二级域名不变,一、三级域名改变的情况,众测平台常出现这种情况。
扫描时不仅要进行域名扫描还要进行端口扫描,扫描每一个域名的每一个端口
弱口令爆破
Snetcracker(超级弱口令检查工具)、Hydra
端口服务类安全测试
根据前期信息收集针对目标端口服务类探针后进行的安全测试,主要涉及攻击方法:口令安全、WEB类漏洞、版本漏洞等,其中产生的危害可大可小。属于端口服务/第三方服务类安全测试面。一般在已知应用无思路的情况下选用的安全测试方案。
API接口-
WebService RESTful API
https://xz.aliyun.com/t/2412
根据应用自身的功能方向决定,安全测试目标需有API接口调用才能进行此类测试,主要涉及的安全问题:自身安全,配合WEB,业务逻辑等,其中产生的危害可大可小,属于应用API接口网络服务测试面,一般也是在存在接口调用的情况下的测试方案。
WSDL
WSDL(网络服务描述语言,Web Services Description Language)是一门基于XML的语言,用于描述Web Services以及如何对它们进行访问。
判断是否有API接口
从功能点判断
有无特定的漏洞关键字
API漏洞扫描
使用Acunetix扫描
漏洞关键字:
配合 shodan,fofa,zoomeye 搜索也不错哦~
inurl:jws?wsdl
inurl:asmx?wsdl
inurl:aspx?wsdl
inurl:ascx?wsdl
inurl:ashx?wsdl
inurl:dll?wsdl
inurl:exe?wsdl
inurl:php?wsdl
inurl:pl?wsdl
inurl:?wsdl
filetype:wsdl wsdl
http://testaspnet.vulnweb.com/acuservice/service.asmx?WSDL
端口常见漏洞
Web服务类
Tomcat --80/8080/8000
manager弱口令 put上传webshell HTTP慢速攻击 ajr文件包含漏洞--CVE-2020-1938
Jboss --8080
后台弱口令 console后台部署war包 JAVA反序列化 远程代码执行
WebSphere --9080
后台弱口令 任意文件泄漏 JAVA反序列化
Weblogic --7001/7002
后台弱口令 console后台部署war包 SSRF 测试页面上传webshell JAVA反序列化--CVE-2018-2628、CVE-2018-2893、CVE-2017-10271、CVE-2019-2725、CVE-2019-2729
Glassfish --8080/4848
暴力破解 任意文件读取 认证绕过
Jetty --8080
远程共享缓冲区溢出
Apache --80/8080
HTTP慢速攻击 解析漏洞 目录遍历
Apache Solr --8983
远程命令执行--CVE-2017-12629、CVE-2019-0193
IIS --80
put上传webshell IIS解析漏洞 IIS提权 IIS远程代码执行--CVE-2017-7269
Resin --8080
目录遍历 远程文件读取
AXIS2 --8080
后台弱口令
Lutos --1352
后台弱口令 信息泄漏 跨站脚本攻击
Nginx --80/443
HTTP慢速攻击 解析漏洞
数据库类
MySQL --3306
弱口令 身份认证漏洞--CVE-2012-2122 拒绝服务攻击 phpmyadmin万能密码/弱口令 UDF/MOF提权
MsSQL --1433
弱口令 存储过程提取
Oracle --1521
弱口令 未经授权访问
Reids --6379
弱口令 未经授权访问
PostgreSQL --5432
弱口令 缓冲区溢出--CVE-2014-2669
MongoDB --27001
弱口令 未经授权访问
DB2 --5000
安全限制绕过进行未经授权 *** 作--CVE-2015-1922
Sysbase --5000/4100
弱口令 命令注入
Memcache --11211
未经授权访问 配置漏洞
ElasticSearch --9200/9300
未经授权访问 远程代码执行 文件办理 写入webshell
大数据类
Hadoop --50010
远程命令执行
Zookeeper --2181
未经授权访问
文件共享
FTP --21
弱口令 匿名访问 上传后门 远程溢出 跳转攻击
NFS --2049
未经授权访问
Samba --137
弱口令 未经授权访问 远程代码执行--CVE-2015-0240
LDAP --389
弱口令 注入 未经授权访问
远程访问
SSH --22
弱口令 28退格漏洞 OpenSSL漏洞 用户名枚举
Telent --23
弱口令
RDP --3389
弱口令 Shitf粘滞键后门 缓冲区溢出 MS12-020 CVE-2019-0708
VNC --5901
弱口令 认证口令绕过 拒绝服务攻击--CVE-2015-5239 权限提升--CVE-2013-6886
Pcanywhere --5632
拒绝服务攻击 权限提升 代码执行
X11 --6000
未授权访问--CVE-1999-0526
邮件服务
SMTP --25/465
弱口令 未经授权访问 邮件伪造
POP3 --110/995
弱口令 未经授权访问
IMAP --143/993
弱口令 任意文件读取
其他服务
DNS --53
DNS区域传输 DNS劫持 DNS欺骗 DNS缓存投毒 DNS隧道
DHCP --67/68
DHCP劫持 DHCP欺骗
SNMP --161
弱口令
Rlogin --512/513/514
rlogin登录
Rsync --873
未经授权访问 本地权限提升
Zabbix --8069
远程代码执行
RMI --1090/1099
JAVA反序列化
Docker --2375
未经授权访问
涉及资源:
API 接口渗透测试:https://xz.aliyun.com/t/2412
Acunetix的测试站点中的API接口:http://testaspnet.vulnweb.com/acuservice/service.asmx
soapui(接口测试,非安全必须):https://github.com/SmartBear/soapui
超级弱口令检查工具:https://github.com/shack2/SNETCracker
安全扫描工具Acunetix即AWVS_13.x系列破解版Linux & Windows:https://www.cnblogs.com/xyongsec/p/12370488.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)