中华人民共和国网络安全法(出版物)_360百科中华人民共和国网络安全法,《中华人民共和国网络安全法》是为保障网络安全,维护网络空间主权和国家安全、社会公共利益,保护公民、法人和其他组织的合法权益,促进经济社会信息化健康发展而制定的法律。《中华人民共和国网络安全法》由中华人民共和国第十二届全国人民代表大会常务委员会第二十四次会议于2016年11月7日通过,自2017年6月1日起施行。https://baike.so.com/doc/24210940-24838928.html
目录
知识点
SSL
- 简介: SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针。SSI具有强大的功能,只要使用一条简单的SSI 命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI脚本程序等复杂的功能。SSI 可以称得上是那些资金短缺、时间紧张、工作量大的网站开发人员的最佳帮手。
- 原理:SSI 工作原理:
将内容发送到浏览器之前,可以使用 “ 服务器端包含 (SSI)” 指令将文本、图形或应用程序信息包含到网页中。例如,可以使用 SSI 包含时间 / 日期戳、版权声明或供客户填写并返回的表单。对于在多个文件中重复出现的文本或图形,使用包含文件是一种简便的方法。将内容存入一个包含文件中即可,而不必将内容输入所有文件。通过一个非常简单的语句即可调用包含文件,此语句指示 Web 服务器将内容插入适当网页。而且,使用包含文件时,对内容的所有更改只需在一个地方就能完成。
什么是 SHTML
使用 SSI ( Server Side Include )的 html 文件扩展名,(也就是在html之前加了个S) SSI ( Server Side Include ),通常称为 “ 服务器端嵌入 ” 或者叫 “ 服务器端包含 ” ,是一种类似于 ASP 的基于服务器的网页制作技术。
漏洞原理
类似于模板注入,服务器会自动对SHTML扩展名的文件进行命令执行
步骤
- 上传文件
- 点击文件,服务器会执行我们shtml扩展名中的内容。(这时候类似于模板渲染)
SSI是嵌入HTML页面中的指令,在页面被提供时由服务器进行运算,以对现有HTML页面增加动态生成的内容,而无须通过CGI程序提供其整个页面,或者使用其他动态技术。
SSI就是在HTML文件中,可以通过注释行调用的命令或指针,即允许通过在HTML页面注入脚本或远程执行任意代码。
产生条件
- Web 服务器已支持SSI(服务器端包含)
- Web 应用程序未对相关SSI关键字做过滤
- Web 应用程序在返回响应的HTML页面时,嵌入了用户输入
复现过程
平台 bmzctf
1.NOTFOUND,但随后我们访问upload.php页面
2.在桌面创立rce.shtml
3.写入
<!--#exec cmd="id" -->
4. 提交
5. 点击rce.html
6.查看到了用户权限
到这里就成功了
这里我试了一下一条别的语言(重新创了个文件)
<!-- #echo cmd= "SERVER PROTOCOL" -->
SERVER_PROTOCOL:显示客户端请求所使用的协议名称和版本,如HTTP/1.0
上传执行
可以看到还是处理了这条指令。
防御方法
1.可以关闭SSI这个功能。现在很少用
2.过滤特殊字符串(`<,>,#,-,",'`)
思考
- 其实还是服务器执行了我们的恶意代码,没有对我们输入(传入)的东西进行识别。有输入的地方就有可能存在攻击。
- SSL的确为程序运行提高了效率,但同样带来的还有漏洞风险。
-
正常来说程序不太可能运行上传shtml后缀文件,所以下面介绍利用服务器根据我们的输入自动生成shtml文件,再利用的案例(CTF 题目)
参考链接
漏洞复现——Apache SSI远程命令执行 - 爪爪** - 博客园
SSI指令使用详解 _kangojian的专栏-CSDN博客
Apache SSI 远程命令执行漏洞(SSI注入漏洞)_WHOAMIAnony的博客-CSDN博客_shtml漏洞
作者水平有限,有任何不当之处欢迎指正。
本文目的是为了传播web安全原理知识,提高相关人员的安全意识,任何利用本文提到的技术与工具造成的违法行为,后果自负!