网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
某58同城-安全工程师扩展
场景题,sql注入如下 ~select * from user where userid = {};~ response中没有返回信息,如何进行sql注入 ,1s就超时,如何进行sql注入 编写一个安全的SDK,sql注入的修复怎么写,预编译 白名单 xss的修复- 实体化转义 业务中需要使用到html的场景,无法通过实体化转义进行防御漏洞,如何处理 白名单限制+黑名单过滤 html标签白名单+事件白名单 RCE的修复(java,python) - 白名单限制+黑名单过滤 XXE的修复 window域内横向-票据伪造,白银票据和黄金票据
一、无回显SQL注入攻击与防御
1. 时间盲注攻击技术
攻击原理:
当注入结果无回显但存在响应时间差异时,攻击者通过构造条件语句触发数据库延时操作(如SLEEP(2)
),根据响应是否超时判断条件真伪。例如:sql
' UNION SELECT IF(SUBSTRING(database(),1,1)='a', SLEEP(2), 0)--
若数据库名首字母为
a
,则响应延迟2秒,否则立即返回。Payload优化技术:
- 二分法加速枚举:将字符比较范围从全字符遍历(26字母)压缩为对数级次数(如
SUBSTRING(database(),1,1) BETWEEN 'a' AND 'm'
)。- 条件堆叠注入:通过分号叠加多个延时判断(如
'; IF (condition) WAITFOR DELAY '0:0:2';--
),单次请求探测多数据点。防御方案(SDK层):
- 参数化查询强制化:在SDK中封装预编译接口,确保所有SQL语句均通过
PreparedStatement
(Java)或cursor.execute(sql, params)
(Python)执行。- 输入白名单校验:
- 数值型参数:正则验证
userid
为纯数字(^\d+$
)。- 字符串参数:拒绝包含空格、引号等特殊字符(如
^[a-zA-Z0-9_]+$
)。- 执行耗时监控:在数据库驱动层拦截异常长查询(如超过500ms),触发告警并终止会话。
二、富文本XSS防御体系设计
1. 混合过滤策略
- 白名单标签与属性:
- 基础标签:允许
<p>, <div>, <span>
等,禁用<script>, <iframe>
。- 属性控制:允许
class, style
(需过滤expression()
等危险值),禁止onerror, onclick
等事件属性。- 使用库:集成DOMPurify或OWASP Java HTML Sanitizer,配置白名单规则:
java
PolicyFactory policy = new HtmlPolicyBuilder() .allowElements("p", "div") .allowAttributes("class").onElements("div") .toFactory();
- CSP动态防护: 在HTTP头中设置:
仅允许携带特定nonce的脚本执行,阻断未授权脚本注入。Content-Security-Policy: default-src 'self'; script-src 'nonce-{随机值}'; style-src 'unsafe-inline'
2. 沙箱化渲染
- iframe隔离技术:将用户提交的HTML嵌入沙箱iframe,配置
sandbox="allow-same-origin"
限制DOM访问。- 浏览器端过滤:前端渲染前二次校验(如React的
dangerouslySetInnerHTML
结合DOMPurify)。
三、RCE防御全链路方案
1. Java RCE防御
- 运行时沙箱:启用SecurityManager,限制敏感操作:
java
System.setSecurityManager(new SecurityManager() { @Override public void checkExec(String cmd) { throw new SecurityException("Process execution blocked"); } });
- 反序列化防护:替换默认的ObjectInputStream为SafeObjectInputStream,校验反序列化类白名单。
2. Python RCE防御
- 命令执行白名单:使用shlex模块过滤参数:
python
allowed_commands = {'ls': ['-l'], 'cat': ['/var/log/*.log']} command, *args = user_input.split() if command not in allowed_commands or args not in allowed_commands[command]: raise BlockedCommandError
- 动态代码拦截:覆盖
__import__
和eval
函数,阻止危险模块加载:python
original_import = __import__ def safe_import(name, *args, **kwargs): if name in ['os', 'subprocess']: raise ImportError("Blocked module") return original_import(name, *args, **kwargs) __builtins__.__import__ = safe_import
四、XXE漏洞防御纵深体系
1. XML解析加固
- 禁用外部实体(Java示例):
java
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setFeature("http://xml.org/sax/features/external-general-entities", false); dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
- 安全解析器切换:优先使用JSON或YAML,若必须使用XML则选用defusedxml库(Python)或StAX解析器(Java)。
2. 网络层防护
- 出站流量管控:防火墙规则禁止应用服务器主动连接外部IP(除必要服务端口),阻断通过XXE发起的SSRF攻击。
五、Windows域票据攻击与防御
1. 黄金票据伪造
- 攻击原理:利用krbtgt账户的NTLM Hash生成任意用户的TGT票据,绕过密码验证。
- 防御措施:
- 定期重置krbtgt密码:每180天更换一次,使旧票据失效。
- 启用特权账户审计:监控Event ID 4624(特权登录)和4672(特权分配)。
2. 白银票据防御
- 服务SPN加固:为每个服务配置独立账户,避免使用域管理员账户运行服务。
- PAC验证强化:启用KDC签名验证(
Kerberos Enforce strict PAC validation
组策略)。
技术总结与扩展
- 自动化漏洞检测集成:在SDK中嵌入Hook机制,如Java Agent监控所有SQL执行,自动识别拼接语句。
- 上下文感知的XSS防御:针对不同HTML上下文(HTML Body、Attribute、JavaScript)采用差异化转义规则。
- RCE行为特征分析:通过机器学习模型识别异常命令执行模式(如
cat /etc/passwd
后接wget
下载行为)。- Kerberos协议增强:部署Windows Defender Credential Guard,隔离LSASS进程内存。
- 零信任架构融合:所有数据库访问需携带JWT令牌,网关校验令牌声明中的操作权限(如允许SELECT但拒绝对
user
表的UPDATE)。