ModSecurity搭建渗透记录

基于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的临时目录使用。

然后我反复调还是无法解析,有没有师傅知道原因,求解

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发