目录
- CSRF漏洞解释,原理等
- CSRF漏洞检测,案例,防御等
- 防御方案
- 2、设置随机Token
- 3、检验referer来源
- SSRF漏洞会比csrf漏洞重要一些
- SSRF_PHP,JAVA漏洞代码协议运用
- 演示案例:
- SSRF_漏洞代码结合某漏洞利用测试
- 如何查找ssrf漏洞
SSRF漏洞文章分享:https://www.t00ls.com/articles-41070.html
CSRF和SSRF在实战情况下或者搞权限提升的话,一般这两种漏洞都不是很重要的,即使拿到这两个漏洞和权限提升也会有距离,如果提交到SRC平台,有时候也是能够通过的
CSRF漏洞解释,原理等
csrf和xss的区别在于借助一个外部网站来进行攻击、来触发代码,而不是在地址上面来触发代码
CSRF漏洞检测,案例,防御等
一般是点击能够修改信息和更新信息功能的时候,在去测试
抓取数据包,右键bp的插件csrf poc,会弹出一个界面
根据我们的需要,修改数据包的信息,点击regenerate会产生csrf html的代码,在点击test in browser,把url链接粘贴到开了BP代理的浏览器中去访问
点一下submit,在浏览器网络数据包中,我们已经看到这个请求了,我们看一下更新信息界面当中这个信息是否已经修改了,数据包是否构造成功,如果信息界面信息没有修改,说明没有csrf攻击
CSRF漏洞验证文章分享:https://blog.csdn.net/qq_41123867/article/details/104401134
一般csrf是用来修改信息,添加新的东西,例如添加后台管理员、添加用户、修改用户的密码,比如说网站,我们在访问的时候,就是个页面,这个页面没有什么信息,干不了什么事情的话,像这种地方你就没有必要去测试有没有csrf漏洞,因为即使有和没有关系不大,因为我们一般用csrf是用来修改、添加、更新这些功能,所以大家在选取有没有csrf攻击的时候,应该注意在网站上的一个功能,这个操作是一个添加还是更新、删除,如果说你打开一个网站啥也没有,那这里就没有测试的必要了,因为有csrf漏洞,你不能修改、添加的话,也没有什么作用
抓取修改数据的数据包,修改数据包要修改的数据,生成poc html,如果验证修改成功,说明后端代码对要修改的数据,没有进行校验,因为这个时候是通过第三方的服务器发送过来的数据,应该是要不信任的,不能任凭它修改
防御方案
1、当用户发送重要的请求时需要输入原始密码
2、设置随机Token
3、检验referer来源,请求时判断请求链接是否为当前管理员正在使用的页面(管理员在编辑文章,黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
4、设置验证码
5、限制请求方式只能为POST
2、设置随机Token
随机Token是数据包的唯一值,点击网站,会修改数据包的唯一值,如果说数据包前面是有一个编号的话,他是以编号为准,你之前修改的时候,编号为1,我们把数据包放到网站上去,数据包为2,他就会对比,你刚才是不是点了一个修改的数据包,他就可以通过编号来确定,当他发现不是他刚才点的数据包的话,他就直接不给与执行,这个时候就能防止数据包请求的结果,所以这个token相当于给每个数据包上了一个编号,用来判定数据包是不是之前原始的,还是说别人恶意构造的
如果大家在测试的时候,发现数据包里面有token,那就表示对方是有检查数据包唯一性的,那么csrf一般就不会有这个漏洞的,所以大家可以通过数据包的参数和token值,来简单的判断是否有这种漏洞
3、检验referer来源
同源策略:符合在当前网站自己操作自己,而不是通过其它地方来操作我,这种就符合同源
但是这种可以通过我们抓包,二次修改来实现绕过,这种检测来源是不安全的,他可以通过抓包修改来源,来进行攻击
检验referer来源是种防御方案,但是这种方案是不安全的,而那个token没办法,因为token是随机生成的,而且这个位数特别多,你想做暴力破解也是不现实的,这么多位数,得有多少组合,如果存在token值爆破,就不正常了
由于csrf在实战情况下不是很常见,再者这个漏洞大部分网站都是有防护的,他这个漏洞一般会产生在小中型网站,小中型网站对于我们来讲的话,本来网站自己就不强调安全,你有这个漏洞意义就不是很大,并竟我们以后挖漏洞也好,提交漏洞也好,一般针对的就是中大型的目标,但是中大型目标,这种漏洞的话,都会有相对应的防护,简单来说,这个漏洞不是很重要,我们就不细讲了
csrf漏洞比较简单,他不会受到网站脚本、数据库类型的影响,这个漏洞原理,完全就是逻辑上面的一个问题,就是对方有没有去请求数据包的地址,有没有判断数据包的合法性,如果对方有检测合法性,有检测来源的话,那这个csrf漏洞就没有了
比如我现在登录支付宝,然后支付宝向他付款一个数据包,给他抓到了,他知道这个是支付宝的一个付款请求数据包,他把支付宝数据包改成向自己支付数据包,而你的支付宝又是登录状态,这个时候他诱使你打开一下网站,而这个网站就是触发数据包的,在你不知不觉中授权,因为你登录之后,触发付款的数据包。如果说支付宝公司没有检测这种机制的话,那就可以收取他的钱,但是很明显支付宝公司是有检测的
一般小中型网站后台经常有,他是需要很多前提条件的,比如说你想添加后台的账号密码,这个后台添加账号密码的数据包你要知道,这个知道的途径大部分都是要通过你本地搭建跟他一样的源码,然后你自己抓包分析得到的,但是你不知道对方的源码,连什么程序都不清楚,数据包的书写方式、地址信息你也不知道,这个csrf即使有也没有什么作用,这就是造成csrf漏洞不是影响很大的原因
SSRF漏洞会比csrf漏洞重要一些
ssrf漏洞可大可小,你利用的好,就是可大的漏洞,不管是大中小网站,一般都存在ssrf漏洞的安全问题
SSRF漏洞的影响范围主要是涉及到你的内网,内部系统的安全性
黑客借助web服务器存在的SSRF漏洞,来探测到我们内网的一些资产和信息,如果信息收集的足够,他还会去攻击内网,可大可小,利用的好,信息收集的好,是能够危害到内网安全的,你虽然接触不到,但是可以通过这个接口进去
本地上传:将自己本地的图片,做为一个文件上传到对方上面去
远程上传:很明显产生SSRF漏洞的一个应用,输入要上传文件的地址,对方会将文件上传到自己的服务器上去;对方要上传这个地址的文件,肯定需要去请求,去看,就会触发这个文件当中的后门
http协议可以通过地址探针端口是否开放,而且不仅有http协议,还有其它协议
127.0.0.1是请求本地的
请求http://127.0.0.1:3306,连接对方本地3306端口
我们可以根据他的返回信息和返回情况,可以实现对它本地的地址实现端口扫描,一般加载时间过长,说明这个端口没有开放,因为他请求不到这个端口的开放情况,通过ssrf,我们可以实现内网的探针
一个网站,它下面有内网系统,内网系统没有联网,其它的网络连不上去,网站上面有ssrf漏洞,这个漏洞以web服务器为跳板,连接内网服务器,因为黑客连接不上内网
ssrf漏洞其实就是以web服务器漏洞为跳板,以这个服务器为支撑,然后去获取内网信息
在ssrf攻击过程中有个前提条件,那就是内网服务器IP地址,我们可以把IP段做为一个字典去跑一下就可以了,看到那个IP地址有返回信息,就知道那个IP地址是存活的,所以这个前提是能够解决的,后面端口先不用管他,后面在搞个常见端口结合确认已经存活的IP地址去跑
SSRF_PHP,JAVA漏洞代码协议运用
端口扫描:针对的就是内网本机端口扫描
指纹识别:版本号信息
各个协议调用探针: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
可以通过ftp协议,请求到对方ftp服务对应的一些信息,就能看到他上面的盘符信息,能够帮助我们对电脑上面的了解
我们在使用ssrf的时候,协议的支持面跟脚本是有关系的
演示案例:
SSRF_漏洞代码结合某漏洞利用测试
hfs在几年前报过漏洞,先通过信息探测到hfs,然后在利用hfs漏洞攻击到主机
我们都可以命令执行了,我们利用命令去下后门木马执行,然后利用这个后门文件回连就可以了
用命令执行,让他下载转发工具,下到内网系统里,然后你在执行命令,让他把流量转发到外网出去,然后你在连接到外网去不就可以了
如何查找ssrf漏洞
我们先要有功能,才会有关键字,如果关键字有,但是没有这个功能,那也是没用的,所以还是以功能为主
这个漏洞产生的成因就是加载所有输入的数据,输入的数据就会构造成本地地址,或者是内网的IP地址来实现对它本地内网的探针
上传本地图片不可能产生SSRF漏洞,网络图片才有可能
根据网站的应用来取决于有没有这个漏洞,如果网站只是单纯的应用,啥功能都没有,那就说明他不会产生SSRF漏洞,因为SSRF漏洞成因就是会接收一些远程地址,而这个远程地址,我们改成本地地址和内网的一些地址,他会对它的内网或本地进行请求,通过请求的信息来判定本地或者内网的一些资产信息,如果说有漏洞的话,可以直接进行利用,但是这个过程是很漫长的,因为我们要不断的去收集,所以后续的攻击是很麻烦的
一般SSRF漏洞挖到,后面不需要去测试,直接提交,有些厂商可能还是会收的,因为主要是会暴露一些他不希望暴露的东西,因为内网系统之所以放在内网,是因为有些东西他不方便给别人看,而你又利用这个漏洞探针到了,所以它会认为这是严重的