分类 web 下的文章

HackBar-v2.3.1.zip
hackbar是一款Firefox/chrome浏览器下的黑客插件 安全人员可以十分方便的用来进行sql注入以及xss测试或进行各种编码功能等.

1.安装
浏览器-设置-扩展程序-搜索或"加载已解压的扩展程序"
2.使用
按F12键
出现如下:单击"HackBar"
2023-03-18T02:08:35.png
(1)单击"Load URL",加载网址,可以修改网址信息
(2)单击"Execute",执行提交

参考文档1
参考文档2
一、 简介
ModSecurity 是一个 Web 应用程序防火墙 (WAF),并且具有一个强大的持续维护的规则库,其有以下优点。

实时监控和攻击检测
实时监控 HTTP 流量以检测攻击,并且提供可自定义的日志记录功能。
预防攻击和虚拟补丁
可以拦截利用已知漏洞进行的攻击,并且可以打虚拟补丁,对于一些异常的行为可以对其ip等进行打分行为,从而跟踪行为,最终判定是否拦截。
灵活的规则引擎
CRS(coreruleset)是ModSecurity体系的核心,规则体系强大并且灵活,下文也将重点介绍其规则体系。
嵌入式模式部署
ModSecurity 是一个嵌入式 Web 应用程序防火墙,这样可以缩小性能开销,并且对于https流量也能直接处理。
基于网络的部署
可以部署在反向代理服务器上,用于保护后端服务。

apt update

安装apache2:
apt install apache2

安装apache2的mod-security模块:
apt-get install libapache2-mod-security2

启用mod-security
a2enmod security2

重命名配置文件:
cd /etc/modsecurity
mv modsecurity.conf-recommended modsecurity.conf

修改配置文件modsecurity.conf
SecRuleEngine On

重新启动apache2,使得modsecurity的配置生效
systemctl restart apache2

测试:
http://ip/index.php?exec=/bin/bash
sql注入指令
http://ip/index.php?id=1 AND 1=1
会出现"Forbidden"提示信息

检查apache日志
cat /var/log/apache2/error.log |grep index.php

规则写法:
SecRule VARIABLES OPERATOR [TRANSFORMATION_FUNCTIONS, ACTIONS]

示例:
SecRule REQUEST_METHOD "^(?:PUT|CONNECT|TRACE|DELETE)$" "phase:1,id:49,log,block,t:none"
SecRule REQUEST_METHOD "^(?:HEAD|PUT|DELETE|CONNECT|TRACE)$" "id:50,log,block,msg:'block_msg',t:none"
SecRule ARGS "@rx attack" "phase:1,log,deny,id:1"
SecRule REMOTE_ADDR "@ipMatch 192.168.1.101" "id:xxx"
SecRule REMOTE_PORT "@lt 1024" "id:xxx"
SecRule REQUEST_HEADERS:Content-Length "@eq 0" t:none
SecRule REQUEST_LINE "@beginsWith GET" "id:xxx" #检测以“GET”开头的请求行
SecRule REQUEST_LINE "@contains .php" "id:xxxx" #在请求行中的任何位置检测是否包含“.php”字符串
SecRule ARGS "@containsWord select" "id:xxx" #在ARGS的任何地方检测是否包含“select”字符串
SecRule ARGS "@rx attack" "phase:1,log,deny,id:1"

VARIABLES:
REQUEST_METHOD 请求方法

操作符 operator:
beginsWith,contains,rx

动作Actions :
chain:使用紧随其后的规则与当前规则进行链接,形成规则链。
drop: 关闭TCP连接
block:执行SecDefaultAction定义的阻断性动作
msg: 将自定义信息分配给规则或规则链。 该消息将与每次警报一起记录到日志中。

一、安装 Apache2
sudo apt update
sudo apt install apache2 openssl

安装之后,apache2服务器已经启动,并且会随系统自动启动;

Apache2 配置
Apache配置文件在/etc/apache2目录下。

主配置文件是apache2.conf,其中引用了其他配置文件。

a2query命令可以获取服务器当前的运行配置。

环境变量
envvars文件中配置了Apache用到的环境变量,这些环境变量也可以在配置文件中引用。

模块配置
所有模块配置在mods-available目录下,启用后会在mods-enabled目录下建立符号链接;
启用模块用a2enmod命令,禁用模块用a2dismod命令。

监听端口配置
ports.conf 文件中配置了Apache服务器监听的端口,包括HTTP端口和HTTPS端口
默认包括HTTP端口80,如果加载了SSL或TLS模块,还会监听443端口。
除了这里的配置,各虚拟主机配置里也会配置其对应的端口。

其他可选配置
其他可选配置在conf-available目录下,启用的配置会链接到conf-enabled中。
启用配置用a2enconf命令,禁用配置用a2disconf命令。

网站(虚拟主机)配置
网站配置包含了HTTP配置和HTTPS配置,根据需要选择。
所有网站配置都放在sites-available子目录中,而启用的网站则会链接到sites-enabled目录下。
要启动网站可以用a2ensite命令,禁用网站则用a2dissite命令。

网站配置
HTTP网站配置
默认配置中已经启用了一个http网站000-default,
其中配置了网站主目录DocumentRoot /var/www/html等信息,可参考 000-default.conf 在 sites-available 目录下配置其他网站,配置后通过 a2ensite 命令启动。

配置后可以通过 http://127.0.0.1 访问
注意使用的地址要与配置文件中的ServerName匹配

二、配置HTTPS网站
启用HTTPS必须要加载ssl模块

a2enmod ssl
systemctl restart apache2

启动SSL网站

a2ensite default-ssl
systemctl reload apache2

这里使用的是默认的SSL网站配置default-ssl,与HTTP的区别在于启用了SSL引擎SSLEngine on,并且配置了SSL需要的证书和密钥,以及其他SSL运行需要的参数。

默认的SSL配置中使用的是自签名的SSL证书,在使用浏览器打开网站时会收到安全警告,在真正使用时需要申请自己的密钥和证书。
编辑default-ssl.conf
sudo nano sites-enabled/default-ssl.conf
检查下面信息:
2023-03-13T01:30:46.png

三、实现从http到https自动跳转
下面是启用mod_rewrite模块的方法。
第一种方式:
sudo a2enmod rewrite

第二种方式:
sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

不管使用哪种方法,都是在 /etc/apache2/mods-enabled/
这个目录下面建立了一个链接,只要重启服务器之后就可以生效。 当然要使rewrite生效,还需要修改额外的配置:
sudo vim /etc/apache2/sites-enabled/000-default.conf

<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>

在网站文件夹创建.htaccess文件
sudo nano /var/www/html/.htaccess
添加以下内容:

RewriteEngine on
#RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]

解释:

%{SERVER_PORT} —— 访问端口
%{SERVER_NAME} —— 比如如果url是 http://localhost/tz.php,则是指 localhost
%{HTTPS} off ——检查是否是https,如果不是,则应用RewriteRule这条规则。
以上规则的意思是,如果访问的url的端口不是443,则应用RewriteRule这条规则。