1.Apache HTTPD 换行解析漏洞(CVE-2017-15715)
Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在 一个解析漏洞,在解析PHP时,1.php\x0a将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
影响版本
apache :2.4.0~2.4.29版本
环境搭建
cd vulhub/httpd/CVE-2017-15715
docker-compose up -d
漏洞复现
1.访问网站
2.上传文件并抓包,发送给重发器
3.后缀名为.jpg,因为文件名inf.php.jpg中包含.php,所以解析为php文件,点的HEX值为2e,2e换成0a发送,0a是换行
4.访问页面解析成功
修复建议:
1.升级到高版本
2.将上传的文件重命名为时间戳+随机数+.jpg格式并禁用上传文件目录执行脚本权限
2.Apache多后缀解析漏洞
漏洞描述
httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。
环境搭建
cd vulhub/httpd/apache_parsing_vulnerability
docker-compose up -d
漏洞复现
1.访问网站
2.选择php的一句话木马文件,并将其重命名为shell.php.jpg,然后上传。
上传成功
蚁剑连接成功
防御方法
通过正则方式来对其进行限制;、在配置文件中添加如下内容,匹配样式为 .php. 的文件并拒绝访问(该漏洞环境配置文件位于漏洞环境目录的 conf/docker-php.conf 生产环境中按照具体情况而定)
将原本的 AddHandler application/x-httpd-php .php 注释掉,然后利用正则表达式单独为.php的文件添加处理程序
3.Apache SSI远程命令执行
漏洞描述
1.SSI 注入全称Server-Side Includes Injection,即服务端包含注入。
2.SSI是嵌入HTML页面中的指令,在页面被提供时由服务器进行运算,以对现有HTML页面增加动态生成的内容,而无须通过CGI程序提供其整个页面,或者使用其他动态技术。
3.从技术角度上来说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针,即允许通过在HTML页面注入脚本或远程执行任意代码。
4.在SSI中,默认扩展名是 .stm、.shtm 和 .shtml。
环境搭建
cd vulhub/httpd/ssi-rce
docker-compose up -d
复习过程
1.环境启动后,访问http://your-ip:8080/upload.php,即可看到一个上传表单
2.上传一个php文件,发现错误
3.我们上传一个poc文件(Apache SSI_poc exp.shtml)
注意:shtml跟html类似,也是一种用于网页设计的标记型语言,区别在于:html是一种纯静态的标记型语言,在html文档里面写的内容是什么,用户打开浏览器看到的就是什么,而shtml是一种半静态半动态的标记型语言,在shtml里面可以包含SSI命令,当用户在浏览器浏览shtml文档的时候,里面包含的SSI命令会被解析,然后再呈现内容给用户。
<!--#exec cmd="cat /etc/passwd"-->
4.上传成功
防御方法
1.可以关闭SSI这个功能。
2.过滤特殊字符串(`<,>,#,-,",'`)