将堆栈保护删除标志添加到apache编译脚本

时间:2013-03-04 11:16:05

标签: security compilation makefile

出于研究目的,我想在旧的1.3.x版本的apache webserver上测试一些缓冲区溢出漏洞。 无论如何,我有堆栈保护,所以它不起作用或至少我认为它不是出于这个原因。 为了禁用保护,我必须使用这些标志进行编译:

-fno-stack-protector -z execstack

但我不知道如何将它们添加到apache编译过程中..我从未做过这样的事情! 你能救我吗?

1 个答案:

答案 0 :(得分:2)

尝试:

CFLAGS="-fno-stack-protector" LDFLAGS="-z execstack" ./configure [...]

CFLAGS用于编译器,execstack是链接器选项,因此应该进入LDFLAGS。或者,如果支持,您可以让编译器传递链接器选项-with -Wl,所以:

CFLAGS="-fno-stack-protector -Wl,-z,execstack" ./configure [...] 

有关详细信息,请参阅Apache源存档中的INSTALL文件。

检查或比较生成的顶级Makefile非常有用,您应该在EXTRA_CFLAGSEXTRA_LDFLAGS中的任何一个或两个中看到您的参数。

根据您的任务,如果您正在运行具有定期pre-linkingASLR任务的Linux发行版,则应检查是否将Apache安装到未执行的路径进行处理,否则当你的Apache二进制文件被“修复”一晚时,你的测试可能会很复杂......

检查prelink是否已安装

 dpkg -l prelink      # Ubuntu/Debian derived
 rpm -qv prelink      # CentOS/Red Hat derived

并检查/etc/prelink.conf中的配置(通常)以及/etc/defaults/prelink/etc/sysconfig/prelink中的一个。

/usr/local/binsbinlib下的Ubuntu(但不是在CentOS / RH上)目录上包含在内进行处理。如果您将Apache安装到默认的/usr/local/apache,那么它应该不受影响,或者如果您想要彻底,可以将目录黑名单(-b)行添加到/etc/prelink.conf