1 SSRF
SSRF漏洞的产生原因:服务器提供了从其他服务器获取数据的功能,并且没有对地址和协议进行过滤和限制。比如:2020年10月ByteCTF的easy_scrapy。
这种漏洞在CTF中也很常见,可以用来攻击内网中的应用,如:Redis、discuz7、fastcgi、memcache、webdav、struts、jboss、axis2等应用。
防御方式:
- 限制请求的端口只能是Web端口
- 限制不能访问内网的IP(IPTable)
- 屏蔽返回的内容
参考文章:
- 浅析SSRF原理及利用方式:https://www.anquanke.com/post/id/145519
2 文件上传
文件上传漏洞产生原因:文件上传的路径和文件类型没有进行限制,导致上传后的文件可以被当作代码执行。
文件上传的绕过方式:
- JS检测绕过
- 文件后缀绕过
- 文件类型绕过(HTTP包的Conten-Type)
- 竞争条件(在删除文件前另外创建一个文件)
防御方式
- 白名单判断文件后缀是否合法(黑名单容易过滤不全)
- 对上传后的文件进行重命名。
3 暴力破解
暴力破解产生的原因:服务器没有做访问限制,攻击者可以进行逐个测试(弱密码)。
常见的暴力破解方式:
- 用户名和密码错误次数都无限制(可以随便暴力破解)
- 单时间段内用户的密码错误次数限制(例如:锁QQ。只限制了单个用户的密码次数,可以考虑更换用户名再进行暴力破解,只需要用一个用户列表即可)
- 单时间段内IP登陆错误次数限制(IP池绕过)
暴力破解的关键在于字典,如果想要提升暴力破解的成功率,就需要缩小破解范围(例如:获取学号的列表范围,然后使用默认密码爆破,如果密码是生日,那字典的生成最好符合日期的范围)。
防御方法:
- 使用较高级别的验证码
- 使用多因素验证
- 用户登陆次数超过设置的阀值,则锁定账号。
- 单个IP登陆次数超过设置的阀值,则锁定IP。
4 命令执行
命令执行的原因:类似SQL注入、XSS漏洞,都是将文本当作代码进行执行。
防御方法:
- 尽量不要使用直接命令执行的函数,可以考虑找封装后的包来用。
- 执行函数前进行过滤。
5 XXE漏洞
XXE漏洞的原因:类似SQL注入、XSS漏洞、命令执行,都是将文本当作代码进行执行(为什么能代码执行呢?XML文件被导入时能引入外部实体)。
XXE漏洞的危害有很多,比如可以文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等。
防御方法
- 禁止引用外部实体
- 过滤XML中的数据