csrf,ssrf,rce,文件包含漏洞,文件上传漏洞

20 xssWAF绕过与修复              

20.1课程大纲                                                                               

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第1张图片

 

参考链接:【小迪安全】Day28web漏洞-XSS跨站之WAF绕过及修复 - 哔哩哔哩 (bilibili.com)

20.2课程截图                                                                               

20.2.1.在标签前面加入/代表便签结束可以绕过安全狗 

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第2张图片                                        

 

(但是有时候会因为会使得标签失效)

 

20.2.2.xssfuzzer.com可以生成有关xss漏洞的js代码字典   或者也可以使用fuzzdb这个工具生成字典再通过Burp配合进行xss绕过

 

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第3张图片

 

 

 

20.2.3.使用post提交进行绕过                                                                         

首先在源代码中变量的提交方式必须是request(全局接受)或者post接受,同时安全狗设置为不检测post 输入

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第4张图片

 

20.2.4.使用编码进行绕过                                                                                

(但是前提是浏览器本身能够识别这样的编码)

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第5张图片

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第6张图片

 

20.2.5.XSSstrike 有很多这样的工具

使用里面的fuzzer可以得到

可以扫描出那些标签是可以绕过的,哪一些是会被拦截的csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第7张图片

或者采用输入这种方式,让其直接使用内置的payload进行测试

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第8张图片

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第9张图片

 

20.3修复                                                                                     

输入过滤,输出过程,开启httponly等

                                                             21 CSRFSSRF漏洞                        

21.1课程大纲                                                                               

 参考链接: 【小迪安全】Day29web漏洞-CSRF及SSRF漏洞案例讲解 - 哔哩哔哩 (bilibili.com)

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第10张图片

 

 参考①:cnblogs.com/dogecheng/p/11583412.thml

21.2CSRF                                                                                                  

前提条件太多很难实现

21.2.1具体实现  抓到数据包之后可以使用burp抓取数据包,然后制作csrf漏洞进行测试

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第11张图片

 

21.2.2token  选择了token之后数据包会多一个变量叫做token(随机生成)用来表示每次执行的编号,符合同源策略。如果数据包中的token不同就不会顺利执行。

和referer有一点像。

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第12张图片

 

防御方案:

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第13张图片

 

21.3SSRF漏洞                                                                              

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第14张图片

 

21.3.1原理                                                                                                    

通过外网访问服务器(不能直接访问内网),进而获取到服务区所连接的内网的服务器的一些信息。

可以对内网进行一些信息收集

其实就是有时比如上传图片时,上传的图片并不是本地的而是其他网站上的图片时,当前所处的网站就会请求上传的那个网站的地址,那么同理:

我如果输入当前网站的端口号,那么这个网站同样也会进行访问,再同理,我如果输入了一个内网的 ip,这个网站会访问他自己内网的网站(内网的ip其实并不多,网段就那么几个)并进行回显,而这个网站其实外人是不能访问到的由此引发了SSRF漏洞(讲实话有点像远程代码执行漏洞)

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第15张图片

 

然后可以通过下列方式访问数据

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第16张图片

 

各个协议调用探针:http,file,dict,ftp,gopher等

http:192.168.64.144/phpmyadmin/ file:///D:/www.txt dict://192.168.64.144:3306/info ftp://192.168.64.144:21

可以调用这协议实现下列功能

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第17张图片

 

21.3.2攻击流程                                                                                             

首先通过该网站的输入框测试发现该web服务器的内网的主机ip

之后测试这个ip有那些开放的端口,找到端口之后发现有一个文件系统,百度该系统的漏洞,之后通过 web服务器使用该漏洞的payload访问其内网实现添加管理员的操作

 

 

 

21.3.3如何查找该漏洞                                                                                    

比如像百度识图这样的可以输入网站链接的这种,然后直接在其搜索框里面搜索http://127.0.0.1,或者其他ip测试。

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第18张图片

 

                                           22 RCE远程代码以及命令执行漏洞               

参考的链接:【小迪安全】Day30web漏洞-RCE代码及命令执行漏洞全解 - 哔哩哔哩 (bilibili.com)

22.1大纲                                                                                     

原理: 在 Web 应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用代码或命令执行函数去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞。同样调用系统命令处理,将造成命令执行漏洞。

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第19张图片

 

22.2截图以及内容详解                                                                  

一些简单的概念以及该漏洞的利用方式可以参考ctfshow web入门命令执行前篇(web29-web54)_parkour的博客-CSDN博客这里不再过多赘述

22.2.1靶场实例  输入之后发现有对话框弹出(所以推测是本地js验证)/

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第20张图片

 

删除本地验证后然后进行抓包,之后修改提交的post变量为查看flag的命令就行了。

第二个靶场就是将这串代码放到php在线环境下在前面加一个print执行一下,看一下是个什么东西,发现是使用系统执行传入进来的东西之后,直接传入ls之后再读取文件内容就行了。

  csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第21张图片

 

第三个靶场:webmin

流程直接网上搜索webmin的漏洞

由于已经提前知道是rce漏洞之后,且知道是POST里面出了问题,所以查看数据包,然后从POST中发现一个id(linux李里面的一个命令)猜测就是这里出了问题,改成ls之后就有回显了这里补充有关ls的知识

 ls当前目录;ls ..上一级目录;ls ~自己的home目录;ls / 根目录;ls ../..目录的上上两层

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第22张图片

 

靶场四: 这个靶场其实就是有关Stucts漏洞的一个利用就是了,直接网上找一下怎么利用这个漏洞然后复制一下 exp直接利用就是了。

补充 :poc验证漏洞,exp利用漏洞

 

22.3RCE漏洞的函数                                                                     

22.3.1代码执行漏洞                                                                                       

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第23张图片

 

22.3.2命令执行漏洞                                                                                       

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第24张图片

 

还有个反引号

22.4小知识:有关vulhub的安装                                                    

不论是kali还是ubuntu都容易卡在这一步。

前面的步骤:kali 安装Vulhub靶场B6胶囊的博客-CSDN博客kali安装vulhub后面的:https://blog.51cto.com/u_15057832/4132281

会出现的问题基本都在里面https://blog.csdn.net/qq_45722897/article/details/117906317 前面最基础的几步可以跟着网站上的教程一步一步去做

如果觉得网速太慢了,同样也可以百度如何切换国内的服务器提高下载速度直到在执行

docker-compose build(ubuntu的话需要在前面加上sudo不然的话会出现一些奇奇怪怪的错误)

docker-compose up -d

的时候出现访问网站不成功超时的情况可以按下列步骤操作,这个配置文件不存在也会直接创建。如果输入了之后仍然超时就换一个别的镜像,然后使用systemcall命令重启docker服务继续尝试直到成功为止(就算一下成功了,之后还是有可能会出现这样的错误),推荐使用阿里云的镜像。当出现一个绿色的 done标志时表示成功安装。

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第25张图片

 

                                                                     23.文件包含漏洞                            

23.1大纲   

       csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第26张图片                                                                           

 

参考链接:【小迪安全】Day31web漏洞-文件操作之文件包含漏洞全解 - 哔哩哔哩 (bilibili.com)

23.1.1文件包含漏洞原理简介                                                                          

各个脚本语言的文件包含的代码形式

<% include file=”head.jsp”%>

23.1.2文件包含原理                                                                                       

使用include函数传递一个参数(可以是一个文件),然后PHP脚本包含这个文件,则无论这个文件是什么格式,访问PHP脚本,传递参数的文件里面的代码将以php的格式执行。

23.2截图以及内容详解                                                                  

23.2.1本地无限制跨目录 包含..代表跨了几级目录

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第27张图片

 

如果在include($filename."txt ")后面加了参数即在filename后面加上txt 解决办法:

1.加上%00截断(版本小于php5.3.4)

2.长度截断直接在filename后面加上一些特殊符号(前面文件上传漏洞时提到的windows不识别的符号如.

./ 等)长度大于256,linux是要大于4096

23.2.2远程文件包含 如果在远程文件包含的文件中有后门代码并被php执行之后可以用菜刀连接

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第28张图片

 

如果Incude有限制,可以在文件后加%20,%23,?进行绕过

23.2.3各种协议流的玩法                                                                                 

 file:// — 访问本地文件系统

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第29张图片

 

 http:// — 只读访问 HTTP(s) 网址

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第30张图片

 

ftp:// — 访问 FTP(s) URLs

php:// — 访问各个输入/输出流(I/O streams)

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第31张图片

 

zlib:// — 压缩流 data:// — 数据(RFC 2397) glob:// — 查找匹配的文件路径模式

phar:// — PHP 归档

ssh2:// — Secure Shell 2 rar:// — RAR ogg:// — 音频流 expect:// — 处理交互式的流\

  csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第32张图片

 

1.Php协议读取1.txt文件的源码(注意:PHP协议只能在PHP脚本适用)

http://192.168.102.143:8888/test.php?filename1=php://filter/read=convert.base64-encode/resource=1.txt

---原理:在文件输入之前先过滤,读取过滤器内的内容,其中resource为要过滤的数据流。

--- base64加密原因:有时候读取由于编码方式的不同造成乱码,这里加密后,就不会乱码

2.以PHP格式执行文件

---- http://192.168.102.143:8888/test.php?filename1=php://input

----post提交数据:

----原理:php://input可以读取没有处理过的POST数据。相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小,并且不需要特殊的php.ini设置。php://input不能用于enctype=multipart/form-data

 3.Php协议写入一句话后门代码

---- http://192.168.102.143:8888/test.php?filename1=php://input

----post提交数据:'); ?>

----原理:用fopen打开或者创建一个shell.php的文件,用fputs将字符串''写入shell.php文件中

4.file协议读取文件内容(所有脚本都适用)

http://192.168.102.143:8888/test.php?filename1=file://C:/phpstudy/PHPTutorial/WWW/sqli-labs-master/1.txt

5.data协议来执行指定的PHP脚本代码

---条件:allow_url_fopenallow_url_include开启

http://192.168.102.143:8888/test.php?filename1=data://text/plain,

23.3实例解析                                                                               

在CTF的比赛中一般都是简单的页面,不需要使用工具进行漏洞扫描

1.实例1             

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第33张图片                                                                                                               

 

当file=后面给的值的文件名访问之后与直接访问该文件而不进行传参的结果是一样的就说明index.php这个文件里面进行了传参说明存在有文件包含漏洞。

之后使用首先会考虑使用php://input协议直接访问命令行指令,但是在使用了input协议之后发现协议被过滤了那么就还可以选择先使用file协议直接访问文件源码

http://192.168.102.143:8888/test.php?filename1=php://filter/read=convert.base64-encode/resource=index.php 之后再进行解密即可获得flag

2.实例2                                                                                                                            

这里其实就是简单的一个文件包含漏洞

可以直接使用php://input协议查看(这里小知识:但是使用cat查看文件的时候如果发现网页没有回显则有两个可能,一个是被过滤了,另一个就是flag可能隐藏在网页中,所以养成一个查看网页源代码的好习惯!!!)

3.实例3获得的一些知识点                                                                             

1.后门代码可以使用{}原因:文件包含这个函数就会让里面的代码以PHP脚本执行,而传统<>是告诉电脑以PHP脚本执行,因此,这里不需要写<>。

2 为什么不直接使用文件上传漏洞

  1. 首先是上传点的问题,文件上传总需要找一个上传点吧。
  2. 其次,文件包含漏洞中的include函数是可以把文件中的内容当作php代码执行的更方便解析,而文件上传则不是。

23.4.修复  加入固定后 ,如果要传参那么就对参数进行过滤变形,能不传参就不传吧文件名写死 直接使用WAF

                                                                           24.文件下载                               

原理:就是通过右键点击能够下载的文件链接查看链接中有没有类似下面这种明显的变量名,有的话就可以通过这个变量的名字下载到网站目录里的其他文件(当然前提是必须对于常用的敏感文件名比较熟)

小知识:下载上一级的目录使用符号为../

http://127.0.0.1/pikachu/vul/unsafedownload/execdownload.php?filename=ai.png 漏洞发现:

1.扫描工具爬行或者扫描地址,如铸剑等

2.从下载好的文件代码里找(可能可以翻到一些文件的路径)

通过扫描出的文件可能对后续的测试工作进行帮助

参考链接:【小迪安全】Day32web漏洞-文件操作之文件下载读取全解 - 哔哩哔哩 (bilibili.com)

24.1大纲                                                                                     

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第34张图片

 

24.2内容以及详解                                                                         

http://127.0.0.1/pikachu/vul/unsafedownload/execdownload.php?filename=ai.png 当下载链接是这种格式的时候就容易产生文件下载漏洞。

csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第35张图片

 

24.2.1知识点                                                                                                

1.文件直接通过url进行访问和下载文件之后的内容是不一样的,访问文件地址显示的内容仅仅知识执行代码后的内容

2.WEB 配置文件 WEB-INF/web.xml的简介

---文件包含:配置servlet的基本信息,配置全局初始化参数,session过期时间,错误页面跳转等基本信息。(和PHP脚本不同,Javaweb文件有编译,文件一般写在class类里面,命名也不一样)

24.3靶场实例                                                                               

24.3.1javaweb的靶场                                                                                     

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第36张图片

 

首先一打开靶场发现有一个help文档可以下载,猜测是有文件下载漏洞然后就是正常的文件下载的流程了

在java中一般下载文件的参数是以post的请求发送的

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第37张图片

 

之后下载含有有关这个网站信息的WEB-INF/web.xml这个文件

通过burp抓包查看回包的信息就可以获取到网站的目录信息列表之后通过这个列表发现了flag

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第38张图片 

 

但是这里又有有关与java 的一些知识点了:

在java中是需要找类文件的通过网站的报错回显可以将flag的位置定位到

 WEB-INF/classes/com/wm/ctf/FlagController.class 中访问文件获取flag

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第39张图片

 

24.3.2百度杯靶场                                                                                          

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第40张图片

 

一打网站提示要登录点击minizone之后抓包

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第41张图片

 

将login后面的值改为1表示能够登入

之后的几部也是同样的操作然后出现了一个叫module的变量名,这个意思就是指文件名的意思,后面的 name就是文件的后 的意思,module类似于filename这里的文件下载漏洞就出现在这里。

 csrf,ssrf,rce,文件包含漏洞,文件上传漏洞_第42张图片

 

你可能感兴趣的:(web安全)