apache如何打开压缩包

哎呀,当时,2 02 2 年,在某个城市,我下载了一个Apache的安装包。
我当时就一头雾水,不知道怎么打开这个东西。
后来我找了一些压缩软件,把安装包拖进去,解压的时候,哎,这东西解压下来还蛮大的,肯定有几十兆了。
然后我找到了一个conf文件夹,里面有一个httpd.conf文件。
这个东西要改,轨道要改,配置也要改。
当时我不太明白,所以花了很长时间摆弄电脑屏幕。
最后,我打开CMD窗口,以管理员身份运行它,运行到bin文件夹并输入httpdkinstall命令。
这样,Apache服务就安装好了。
当我看到它时,它确实在服务列表中。
当时还挺高兴的,但是想把服务名改成apache,于是又去服务管理器里摆弄了一下。
最后,我启动了 Apache 服务,打开浏览器并输入 http://localhost。
你好,欢迎页面出来了,我知道安装成功了。
你好,这个过程还是蛮有趣的,不过最后打开压缩包、解压、安装都是基本操作,需要慢慢来。

文件上传漏洞原理和绕过方式

说实话,文件上传漏洞还是挺有趣的。
我在一家公司做安全审计的时候见过很多这样的东西。
当时有一个项目,用户可以上传头像。
但后端并没有检查文件类型,直接让PHP解析所有上传的文件。
你猜怎么着?有人上传了包含 PHP 代码的 .jpg 文件。
结果服务器直接将其作为脚本执行,Web服务器几乎被彻底攻破。

这个漏洞的原理是Web应用程序过于“诚实”。
例如,默认情况下,如果 Apache 服务器遇到未知的文件扩展名,它将从文件名末尾开始向前搜索,直到找到它识别的扩展名(例如 .php、.)。
攻击者利用此功能上传名为 a.asp;.jpg 的文件。
Apache 将首先解析 asp 部分,并将 .jpg 文件作为 asp 脚本执行。

有趣的是,一些服务器有更多邪恶的怪癖。
例如,IIS6 .0中存在一个Bug。
分号后面的扩展名根本没有被解析,所以有人上传文件名为shell;.jpg。
结果,shell部分作为asp文件执行。
这简直比写小说还要复杂。

有很多方法可以绕过它。
我记得有一个案例,攻击者直接修改HTTP header的content-type值,将.txt文件伪装成image/jpeg,而服务器愚蠢地将其处理为图像。
还有更邪恶的操作,比如把文件名写成a.asp..jpg,Windows会自动吃掉冒号作为分隔符,最后变成.asp.jpg,服务器就会认为这是一个asp文件。

白名单机制其实比较危险,因为它只需要绕过黑名单即可。
没有asp的项目被列入黑名单,但攻击者将文件名写入.asp.jpg,并利用浏览器或服务器漏洞将文件名截断为零字节。
结果后面就没有任何东西了,只剩下.asp了,服务器就勤奋地执行了。

至于Nginx,之前就存在安全漏洞。
攻击者上传了一个名为 shell.php.jpg 的文件。
Nginx 将看到 .php 文件并执行它,完全忽略 .jpg 文件。
这让我想起了我之前的测试,当时我使用Burpsuite抓包并更改后缀,但客户端JavaScript有一半被阻止了。
我不得不使用Fiddler再次更改它以绕过服务器级别。

更严重的是,有些系统甚至不检查文件内容。
例如,如果图像检查GIF头是否为GIF8 9 a,则攻击者直接添加一行代码。
GIF8 9 a 之后的 PHP 文件,服务器仍将其显示为图像。
一个客户的网站就这样被黑客入侵,命令执行框居然出现在黑客上传的图片的右下角。

说实话,这些弯路让我很头疼,但它们提醒我们,安全不能视为理所当然。
例如,我上传了一个文件名为a.asp.的项目,它成功地绕过了黑名单,因为Windows将点作为分隔符。
现在我们实现文件上传功能的时候,还要关上几道关——客户端检查放水点,服务端采用白名单+内容验证,然后配合服务端分析漏洞补丁。