基于Centos7的lamp环境下进行搭建
LAMP搭建方式请百度。
常规sql注入漏洞测试源码:
<?php
echo '<h1>';
echo 'SQL常规回显注入环境';
echo '</h1>';
$conn=mysqli_connect('127.0.0.1', 'root', '123456');// 连接mysql
if (!$conn){//判断连接是否成功
echo '连接MySQL发生错误:'.mysqli_error($conn);
}else{
echo '成功连接MySQL!';
}
echo '<hr>';
// mysqli_select_db() -- 查询库,or die(str) -- 上一个函数执行错误则输出str
mysqli_select_db($conn, "test") or die ("无法正确连接到数据库!");
// mysqli_query() -- 执行sql命令
// set names utf-8 -- 写入数据库采用的编码(utf-8)
mysqli_query($conn, 'set names utf-8');
// 接收参数text
if(isset($_GET['text'])){
$text=$_GET['text'];
}
// 拼接sql语句并执行
$sql="SELECT * FROM admin WHERE id='$text' LIMIT 0,1";
echo 'SQL拼接结果:'.$sql;
echo '<hr>';
// 执行sql语句并返回结果
$result=mysqli_query($conn, $sql);
if(!$result){
printf("Error: %s\n", mysqli_error($conn));
}
$row=mysqli_fetch_array($result, MYSQLI_BOTH);
if ($row){ //回显结果
echo '<table>';
echo '<tr>';
echo '<td>UID</td><td>NAME</td><td>PASS</td>';
echo '</tr><tr>';
echo '<td>'.$row['id'].'</td>';
echo '<td>'.$row['OP_Adminname'].'</td>';
echo '<td>'.$row['OP_Adminpass'].'</td>';
echo '</tr>';
echo '</table>';
}
?>
请自行创建数据库与数据表。
搭建好后如图所示,其存在常规注入漏洞
接下来对waf进行部署。
ModSecurity部署
1.安装前置环境库:
yum install gcc make libxml2 libxml2-devel httpd-devel pcre-devel curl-devel –y
2.安装modsecurity
yum install mod_security –y
成功人
3.apache服务重启
Services httpd restart
4.配置modsecurity规则,进入/etc/httpd目录下
5.由于modsecurity安装并不完整,需要手动添加规则集,此处利用github上的预定义OWASP的modsecurity规则添加到服务器,使用
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
接下来利用mv指令将其命名成为ModScurity-CRS
mv owasp-modsecurity-crs ModScurity-CRS
6.将工作目录更改为modscurity-crs,将crs-setup.conf.example重命名为crs-setup.conf
在apache配置文件中添加模块在httpd.conf进行添加
nano /etc/httpd/conf/httpd.conf
粘贴如下内容并保存
LoadModule security2_module modules/mod_security2.so
<IfModule security2_module>
Include /etc/httpd/modscurity-crs/crs-setup.conf
Include /etc/httpd/modscurity-crs/rules/*.conf
</IfModule>
最后重启apache服务;
在此访问,离谱的事情就发生了,我的页面直接无法被php解析了
来尝试解决一下这个问题,猜测可能是由于规则没有自定义配置好,导致的默认OAWSP配置全部生效,所以这边来自定义一个自己的规则
在modsecuirty.d目录下创建whitelist.conf
vi /etc/httpd/modsecuirty.d/whitelist.conf
复制如下内容进入
#Whitelist file to control ModSec
<IfModule mod_security2.c>
SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess On
SecDataDir /tmp
</IfModule>
保存后重启apache服务
配置说明:
1.SecRuleEngine
是接受来自ModSecurity-CRS目录下的所有规则的安全规则引擎。因此,我们可以根据需求设置不同的规则。要设置不同的规则有以下几种。
SecRuleEngine On: 将在服务器上激活ModSecurity防火墙。它会检测并阻止该服务器上的任何恶意攻击。
SecRuleEngine Detection Only: 如果这个规则是在whitelist.conf文件中设置的,它只会检测到所有的攻击,并根据攻击产生错误,但它不会在服务器上阻止任何东西。
SecRuleEngine Off:: 这将在服务器上上停用ModSecurity的防火墙。
2.SecRequestBodyAccess: 它会告诉ModSecurity是否会检查请求。它起着非常重要的作用,当一个Web应用程序配置方式中,所有的数据在POST请求中。它只有两个参数,ON或OFF。我们可以根据需求设置。
3.SecResponseBodyAccess: 在whiltelist.conf文件,如果此参数设置为ON,然后ModeSecurity可以分析服务器响应,并做适当处理。它也有只有两个参数,ON和Off。我们可以根据求要进行设置。
4.SetDataDirectory: 在本文中,我们定义的ModSecurity的工作目录。该目录将作为ModSecurity的临时目录使用。
暂无评论内容