提醒:本文已经超过 1307 天未修改,其中某些信息可能已经过时,请谨慎使用!
你似乎正在查看一篇很久远的文章。
为了你这样的访客,我特地保留了我的历史博文。不要笑话过去的我,用温柔的目光看下去吧。
#什么是RASP
RASP技术(应用运行时自我保护),直接注入到被保护应用的服务中提供函数级别的实时防护,可以在不更新策略以及不升级被保护应用代码的情况下检测/防护未知漏洞,尤其适合大量使用开源组件的互联网应用以及使用第三方集成商开发的金融类应用。
对比传统WAF,RASP作为PHP扩展安装,可以联系上下文来精准拦截攻击,只有造成危害的攻击才会拦截,对于传统WAF触发策略就拦截来说能减少很多误报误杀,但其也有不足之处,比如无法防护静态文件,导致敏感文件被下载,其性能也需要提高,在高并发网站上不建议安装RASP,RASP不能防御CC攻击,反而因为请求都需要RASP检测而导致服务器负载过大。
#安装和配置openRASP
安装过程非常简单,官方文档https://rasp.baidu.com/doc/install/manual/php.html 已经写的非常详细了这里不再作过多赘述。
华为云Elasticsearch镜像(如果你打算安装联机版的话):https://mirrors.huaweicloud.com/elasticsearch/
值得注意的是安装完成后需要手动开启拦截,找到你RASP的安装目录,比如你安装时执行的是php install.php -d /opt/rasp
命令,那么就去/opt/rasp目录下找到official.js,然后按照情况开启各种算法,我会在文章结尾放上本站配置的插件。
#检查RASP是否安装到位
安装RASP后需要重启PHP让RASP生效。
在网站目录下新建一个php文件,并写入:
<?php echo phpinfo(); ?>
如果安装成功的话可以在PHPInfo看到RASP已经正常加载。
接下来进行木马测试,写一个简单的一句话木马:
<?php eval($_GET['shell']) ?>
在浏览器请求/?shell=echo 1;
正常情况下会被RASP拦截并记录日志,如果RASP未正常工作则会输出1。
接下来测试XSS拦截效果,写一个简单的PHP:
<?php echo $_GET['text']; ?>
浏览器请求/?text=<img></img>
正常情况会被RASP拦截。
附:幽灵PHP大马过WAF被RASP拦截:
#附件
#官方插件配置
参考配置: http://download.gymxbl.com/rasp/plugins.zip
备用链接:
分享链接:https://cloud.ilolita.cn/#s/6wUBxigg
访问密码:uUpF4
#拦截扫描器插件
注:这不是RASP的本职工作!本质上该插件是UA黑名单,安装时只需要新建一个002-detect-scanner.js文件并写入即可。
const plugin_version = '2018-1000-1000'
const plugin_name = '002-detect-scanner'
var plugin = new RASP(plugin_name)
var clean = {
action: 'ignore',
message: '无风险',
confidence: 0
}
// BEGIN ALGORITHM CONFIG //
var algorithmConfig = {}
// END ALGORITHM CONFIG //
plugin.register('request', function(params, context) {
// 已知的扫描器识别
var foundScanner = false
var scannerUA = [
"attack", "scan", "vulnerability", "injection", "xss",
"exploit", "grabber", "cgichk", "bsqlbf", "sqlmap",
"nessus", "arachni", "metis", "sql power injector",
"bilbo", "absinthe", "black widow", "n-stealth", "brutus",
"webtrends security analyzer", "netsparker", "jaascois", "pmafind",
".nasl", "nsauditor", "paros", "dirbuster", "pangolin", "nmap nse",
"sqlninja", "nikto", "webinspect", "blackwidow", "grendel-scan",
"havij", "w3af", "hydra"]
var headers = context.header
if (headers['acunetix-product'] || headers['x-wipp']) {
foundScanner = true
} else {
var ua = headers['user-agent']
if (ua) {
for (var i = 0; i < scannerUA.length; i++) {
if (ua.indexOf(scannerUA[i].toLowerCase()) != -1) {
foundScanner = true
break
}
}
}
}
// 扫描器识别 DEMO //
if (foundScanner) {
return {
action: 'block',
message: '已知的扫描器探测行为,UA 特征为: ' + scannerUA[i],
confidence: 90
}
}
return clean
})
plugin.log('002-detect-scanner 加载完成')
#Nginx敏感文件配置
将下列规则写到Nginx的配置文件中去:
location ~* \.(ini|docx|doc|log|data|jsp|asp|aspx|sql|zip|rar|c|py|psd|7z|tar.gz|gz|tar|sh|)$ {
return 444;
}
if ($host = !你的域名){
return 444;
}
版权声明:转载时请以超链接形式标明文章原始出处和作者信息,来源孤影墨香本文链接: https://www.gymxbl.com/2407.html
访问时间:2024-10-10 02:53:57
Comments | 3 条评论
博主 Teyvat.
你好,我通过自动化安装和手动安装,都不能正常拦截。phpinfo显示openrasp模块正常。
不知道是什么情况,请问博主这该如何处理?
博主 small_xu038
@Teyvat. 首先确认您的php版本安装是否正确,其次是安装后默认不开启拦截,只记录,需要手动修改插件文件,然后重启php,如果仍然无法解决,请加入官方QQ群259318664联系项目负责人
博主 匿名