【CSRF,SSRF,XXE,PHP反序列化,Burpsuite】


题目


1.CSRF漏洞原理,危害,防护

原理:
CSRF(Cross-site Request Forgery,跨站请求伪造)是一种针对网站的恶意利用。
CSRF攻击可以利用用户已经登陆或已经授权的状态,伪造合法用户发出请求给受信任的网点,从而实现在未授权的情况下执行一些特权操作。

CSRF与XSS听起来很像,但攻击方式完全不同。
XSS攻击是利用受信任的站点攻击客户端用户,盗取用户cookie
而CSRF是伪装成受信任的用户攻击受信任的站点,利用用户cookie

危害:
1、篡改目标网站上的用户数据;
2、盗取用户隐私数据;
3、作为其他攻击向量的辅助攻击手法;
4、传播 CSRF 蠕虫。
具体的危害跟存在漏洞的具体业务系统有关。

防护:
防御CSRF攻击方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数。
1.验证码
2.验证http referer字段
3.请求地址中添加token并验证
这是目前业内防止CSRF攻击最常用的方法,因为CSRF产生的根本原因是,进行敏感操作时用户每次发送的请求都完全相同,所以一旦可利用cookie信息,漏洞就产生了。而token参数不包含在cookie中,且随机生成,便能防止csrf攻击。
4.尽量使用post方式,减少get方式
5.在http头部中添加自定义属性并验证


2.SSRF漏洞原理,危害,危险函数,防护,与CSRF的区别

原理:
SSRF(服务器端请求伪造)
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址,请求文件做充足的过滤与限制,以至于攻击者可通过篡改这个请求的目标地址来进行伪造请求。

危害:
1.内网探测:对内网服务器办公机器进行端口扫描、资产扫描、漏洞扫描
2.窃取本地和内网敏感数据(访问和下载内网的敏感数据,利用file协议
3.攻击服务器本地或内网应用:利用发现的漏洞,可以进一步发起攻击利用,例如DOS攻击,溢出攻击等
4.跳板攻击: 利用SSRF漏洞,对内或对外发起攻击,以隐藏自己的真实IP(肉鸡)
5.绕过安全防御: 比如防火墙 CDN

危险函数:
当危险函数(PHP)在攻击者层面是可控的,即可能存在SSRF漏洞。
1.file_get_contents():
将整个文件或一个URL指向的文件,以字符串的性质展示给用户
2.fsockopen():
用于打开一个网络连接,该函数会使用socket跟服务器建立TCP连接,进行传输原始数据
3.curl_exec():
对远程的URL发起请求访问,并将请求的结果返回至前端页面

防护:
1.设置协议头的白名单或黑名单,过滤除了HTTP和HTTPS之外的所有协议头
2.设置URL的白名单或黑名单(比如百度翻译:不允许访问DNSlog和bbc)
3.设置访问IP的白名单或黑名单,过滤访问的IP(看需求)
4.过滤返回的信息和统一错误的信息

与CSRF的区别:
1.SSRF是服务端请求伪造,SSRF是诱导服务器访问,欺骗的是服务端(服务器)
2.CSRF是跨站请求伪造,CSRF是通过诱导用户点击,欺骗的是客户端(浏览器)


3.XXE漏洞原理,危害,防护

原理:
XXE漏洞就是XML外部实体注入,就是当xml引用外部实体并解析的时候会产生的漏洞。xml解析器去获取其中的外部资源并存储到内部实体中,攻击者可引用外部实体对目标进行文件读取、命令执行、DDOS、内网探测等。

危害:
1.任意文件读取
2.系统命令执行
3.内网端口探测
4.攻击内网网站
5.钓鱼

防护:
1.配置XML处理器使用禁用DTD(文档类型定义)、禁止外部实体解析。
2.通过黑名单过滤用户提交的XML数据。
过滤关键词 <!DOTYPE>,<!ENTITY SYSTEM、PUBLIC>
3.使用开发语言提供的禁用外部实体的方法
PHP:
libxml_disable_entity_loade(true)
python,java等


4.PHP序列化与反序列化漏洞,利用条件,常用魔术方法,防护建议

序列化与反序列化:
序列化:
函数 : serialize()
把复杂的数据类型压缩到一个字符串中 数据类型可以是数组,字符串,对象等
序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。
例如:
O:4:“User”:1:{s:6:“benben”;s:19:“system(“ipconfig”);”;}
反序列化:
函数: unserialize()
恢复原先被序列化的变量

利用条件:
① unserialize()函数中参数可控
② 存在可利用的类,且类中有魔术方法
反序列化漏洞是基于序列化和反序列化的操作,在反序列化——unserialize()时存在用户可控参数,而反序列化会自动调用一些魔术方法,如果魔术方法内存在一些敏感操作和函数,例如eval(),system()函数,而且参数是通过反序列化产生的,那么用户就可以通过改变参数来执行敏感操作,这就是反序列化漏洞。

魔术方法:
__construct 当一个对象创建时被调用,
__destruct 当一个对象销毁时被调用,
__toString 当一个对象被当作一个字符串被调用。
__wakeup() 使用unserialize时触发
__sleep() 使用serialize时触发
__call() 在对象上下文中调用不可访问的方法时触发
__callStatic() 在静态上下文中调用不可访问的方法时触发
__get() 用于从不可访问的属性读取数据
__set() 用于将数据写入不可访问的属性
__isset() 在不可访问的属性上调用isset()或empty()触发
__unset() 在不可访问的属性上使用unset()时触发
__toString() 把类当作字符串使用时触发,返回值需要为字符串
__invoke() 当脚本尝试将对象调用为函数时触发

漏洞原理:
漏洞的形成的根本原因是程序没有对用户输入的序列化字符串进行充分检测,使得攻击者可以绕过一些魔法函数或更改命令,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列不可控的后果。

防护建议:
1、对传入的对象进行严格的过滤检查
2、检测反序列化过程执行的文件读写、命令或代码执行函数中是否有用户可控的参数。和大多数漏洞一样,反序列化的问题也是用户参数的控制问题引起的,所以好的预防措施就是不要把用户的输入或者是用户可控的参数直接放进反序列化的操作中去


5.burpsuite常用模块,工作原理

常用模块:
1.Proxy(代理):
是一个拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。
2. Spider(蜘蛛爬行):
Spider 的蜘蛛爬行功能可以帮助我们了解系统的结构,其中Spider爬取到的内容将在Target 中展示
3. Intruder(入侵):
可配置的工具,对web应用程序进行自动化攻击。此功能有多种用途,如漏洞利用、Web应用程序模糊测试、进行暴力破解等。
4.Repeater(重放):
手动操作来触发单独的HTTP请求,并进行应用程序响应的工具。此功能用于根据不同的情况修改和发送相同的请求并分析,通过调整Request的参数,不断尝试,通过Response查看状态。从而节省在浏览器中操作的时间。
5.Decoder(解码器):
解码器是一个进行手动执行或对应用程序数据者智能解码编码的工具。此功能可用于解码数据找回原来的数据形式,或者进行编码和数据加密
6.Comparer(对比):
通常是通过一些相关的请求和响应得到两项数据的一个可视化“差异”。此功能主要用于执行任意两个请求,响应或任何其他形式的数据之间的比较
7.Extender(扩展):
可以让你加载Burp Suit的扩展,使用你自己的或第三方代码来扩展BurpSuit的功能
例如可以加载一些xss插件去检测xss漏洞,还有下载sqlmap插件,对可能存在sql注入的数据做自动化注入

工作原理:
BurpSuite代理工具是以拦截流量的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务器端的返回信息等。BurpSuite 主要拦截HTTP 和HTTPS 协议的流量,通过拦截, BurpSuite 以中间人的方式对客户端的请求数据、服务端的返回信息做各种处理,以达到安全测试的目的。


总结

本期主要介绍了CSRF,SSRF,XXE,PHP反序列化等漏洞,和bp常用模块

猜你喜欢

转载自blog.csdn.net/qq_61872115/article/details/126086482