深圳专门做网站的公司,微软手机做网站服务器吗,怎么进行推广,称多县网站建设公司CRLF 的缩写是指回车和换行操作#xff0c;其中 CR 为 ASCII 中的第 13 个字符#xff0c;也 写作 \r , LF 是 ASCII 中的第 10 个字符#xff0c;也写作 \n #xff0c;因此 CRLF 一般翻译为回车换行注入漏洞。 什么是CRLF注入漏洞? CRLF 即【回车\r换行\n】的简… CRLF 的缩写是指回车和换行操作其中 CR 为 ASCII 中的第 13 个字符也 写作 \r , LF 是 ASCII 中的第 10 个字符也写作 \n 因此 CRLF 一般翻译为回车换行注入漏洞。 什么是CRLF注入漏洞? CRLF 即【回车\r换行\n】的简称十六进制码为0x0d和0x0a 。在http协议中http header 与 http body是用两个crlf分隔的浏览器就是根据这两个crlf来取出http内容并显示出来的 当http消息头中的字符串外部可控攻击者注入一些恶意的换行比如一些会话cookie或者html代码时就会导致存在安全风险。
CRLF注入漏洞演示1
实战环境vulhub的nginx配置错误导致漏洞
搭建
我用的snap在ubuntu下载安装了docker
参考链接
Vulhub - Docker-Compose file for vulnerability environmentVulhub是一个基于docker和docker-compose的漏洞环境集合进入对应目录并执行一条语句即可启动一个全新的漏洞环境让漏洞复现变得更加简单让安全研究者更加专注于漏洞原理本身。https://vulhub.org/#/environments/nginx/insecure-configuration/
下载Vulhub.ziphttps://github.com/vulhub/vulhub/archive/master.zipgithub链接
git clone GitHub - vulhub/vulhub: Pre-Built Vulnerable Environments Based on Docker-Compose
启动
在项目nginx/insecure-configuration路径下执行以下命令
docker compose up -d
查看docker容器运行状态
sudo docker ps -a 漏洞poc测试
curl -i http://192.168.218.134:8080/%0d%0aheader:header -i 将显示服务器返回的完整响应信息包括响应头和响应体 可以看到header增加了
尝试注入xss
http://192.168.218.134:8080/%0d%0a%0d%0ascriptalert(0)/script 浏览器打开此xss没有执行此xss没有执行成功。原因是重定向时浏览器不会加载响应体..... 因该是有可以打xss的方法笔者暂时没有想到。
漏洞分析 这是nginx配置错误导致的漏洞这样的配置原本的目的是将http跳到https:。但location后的$url是直接拼接之后的为用户可控参数又没有对参数进行过滤间接导致nginx解析了%0d%0a为一个换行 CRLF注入漏洞演示2 下列 Web 应用程序代码会尝试从一个请求对象中读取整数值。如果数值未被解 析为整数输入就会被记录到日志中并附带一条提示相关情况的错误信息。 % page contentTypetext/html;charsetUTF-8 languageJava %
% page importJava.util.logging.Logger %
% page importJava.util.logging.Level %
html
head title日志注入/title
/head body % String valrequest.getParameter(val); Logger log Logger.getLogger(log); log.setLevel(Level.INFO); try{ int value Integer.parseInt(val); System.out.print(value); }catch(Exception e){ log.info(Filed to parse val val); }
% /body
/html 如果用户为“ val ”提交参数 valaaa 则日志会记录以下条目 INFO:Failed to parse valaaa 然而如果攻击者提交字符串val“aaaa %0a%0aINFO:xxxxx则 日志中就会记录以下条目。 INFO:Failed to parse valaaa INFO:xxxxx 显然攻击者可以通过将未经验证的用户输入写入日志文件使日志条目被伪造或者恶意信息被注入日志 CRLF注入漏洞演示3 根据重定向的逻辑我写了一个servlet的demo,用来测试 public class RedirectServlet extends HttpServlet {
}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String input request.getParameter(input);System.out.println(input);response.sendRedirect(success.jsp?message input);}
} 我的servlet配置如下 servletservlet-nameredirectServlet /servlet-nameservlet-classRedirectServlet /servlet-class
/servletservlet-mappingservlet-nameredirectServlet /servlet-nameurl-pattern/redirect/url-pattern
/servlet-mapping 开始测试 curl -i http://localhost:8080/redirect?input123 尝试注入 curl -i http://localhost:8080/redirect?input123%0d%0aheader:header 没有换行没有触发漏洞。
但可以看出来System.out.println 是识别了换行符的当增加%a的时候
curl -i http://localhost:8080/redirect?input123%0d%0a%0a%0a%0a%0aheader:header