网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
奇安信安全工程师
1. MVC框架详细说明
MVC(Model-View-Controller) 是一种分层设计模式,用于将应用程序的逻辑、数据和界面分离,提升代码可维护性和扩展性。
- Model(模型):
- 职责:处理数据逻辑(如数据库操作、数据验证)。
- 示例:用户数据存取、订单状态更新。
- View(视图):
- 职责:展示数据(UI界面)。
- 示例:HTML页面、JSON响应。
- Controller(控制器):
- 职责:接收用户输入,协调Model和View。
- 示例:处理HTTP请求、调用Model处理数据、返回View渲染结果。
交互流程:
- 用户发起请求(如访问URL)。
- Controller接收请求,调用Model处理数据。
- Model返回数据结果给Controller。
- Controller将数据传递给View渲染,最终返回给用户。
实际应用框架:
- Spring MVC(Java):通过
@Controller
注解定义控制器。- Ruby on Rails:约定优于配置,自动路由映射。
2. SQL注入详细介绍
原理:攻击者通过构造恶意输入,篡改原始SQL语句逻辑,实现非授权数据操作。
常见类型:
- 联合查询注入:
- 示例:
' UNION SELECT username, password FROM users--
- 利用:通过
UNION
合并查询结果,泄露敏感数据。- 布尔盲注:
- 示例:
' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE id=1)='a'--
- 利用:通过页面返回状态差异推断数据内容。
- 报错注入:
- 示例:
' AND updatexml(1,concat(0x7e,(SELECT version())),1)--
- 利用:触发数据库报错并回显敏感信息。
防御措施:
- 参数化查询(核心方法):使用预编译语句(如
PreparedStatement
)。- 输入过滤:禁止特殊字符(如
'
、--
)。- 最小权限原则:数据库账户仅授予必要权限。
3. XSS和CSRF的区别
特征 XSS(跨站脚本攻击) CSRF(跨站请求伪造) 攻击目标 用户浏览器 用户已登录的Web应用 利用方式 注入恶意脚本到页面 伪造用户身份发起请求(如转账) 防御手段 输入过滤、输出编码(如HTML实体转义) CSRF Token校验、SameSite Cookie属性 典型案例 盗取Cookie、页面劫持 自动提交表单、修改用户设置
4. XXE漏洞原理
原理:利用XML解析器的外部实体(External Entity)功能,读取本地文件、发起网络请求或执行远程代码。
触发条件:
- XML解析器未禁用外部实体(如PHP的
libxml_disable_entity_loader(false)
)。- 用户可控的XML输入(如上传XML文件、API请求参数)。
攻击示例:xml
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <data>&xxe;</data>
防御方案:
- 禁用外部实体解析:设置
LIBXML_NOENT
为禁用状态。- 使用JSON替代XML:避免解析不可信数据。
5. XXE涉及的关键函数
- PHP:
simplexml_load_string()
:解析XML字符串。DOMDocument::loadXML()
:加载XML文档。- Java:
DocumentBuilder.parse()
:解析XML输入流。- 防御函数:
- PHP的
libxml_disable_entity_loader(true)
:禁用外部实体。
6. 文件上传漏洞
原理:未对上传文件类型、内容、路径进行严格校验,导致恶意文件(如Webshell)被执行。
常见绕过手段:
- 扩展名绕过:
- 修改后缀:
shell.php.jpg
→ 服务器仅检查最后一个后缀。- 大小写混淆:
shell.PhP
。- 文件内容绕过:
- 添加图片头(如
GIF89a
)伪装为图片。- 利用Apache解析漏洞:
shell.php.xxx
可能被解析为PHP。防御措施:
- 白名单校验:仅允许特定扩展名(如
.jpg
、.png
)。- 文件内容检测:检查文件魔数(Magic Number)。
- 存储隔离:上传文件存放到非Web目录。
7. 常见Web漏洞类型
- 注入漏洞:SQL注入、命令注入。
- 跨站脚本(XSS):存储型、反射型。
- 跨站请求伪造(CSRF):伪造用户操作。
- 文件上传漏洞:上传恶意文件。
- 不安全配置:默认密码、目录遍历。
- 反序列化漏洞:执行恶意代码。
- 逻辑漏洞:越权访问、支付金额篡改。
8. Apache 7.0文件上传黑名单绕过
绕过方法:
- 双扩展名:
shell.php.jpg
→ Apache可能忽略.jpg
。- 特殊字符:
shell.php%00.jpg
(需PHP版本<5.3.4)。- .htaccess覆盖:上传
.htaccess
文件,定义解析规则(如AddType application/x-httpd-php .xxx
)。- 大小写混淆:
shell.PHp
。防御建议:
- 禁用危险解析规则(如
php.conf
中限制扩展名)。- 使用
mime_content_type()
检测真实文件类型。
9. 对称加密与非对称加密
类型 特点 常见算法 对称加密 加密解密使用相同密钥,速度快 AES、DES、3DES 非对称加密 公钥加密、私钥解密,安全性高 RSA、ECC、DSA 应用场景:
- 对称加密:大数据加密(如文件传输)。
- 非对称加密:密钥交换、数字签名。
10. MD5是否是非对称加密?
答案:否。
- MD5是哈希算法(Hash),用于生成固定长度摘要(如32位十六进制值),不可逆。
- 非对称加密需满足加密/解密双向操作(如RSA)。
11. Apache可以执行PHP文件吗?
答案:是。
- 配置方式:
- 安装PHP模块(如
mod_php
)。- 配置
httpd.conf
添加AddHandler application/x-httpd-php .php
。- 注意:错误配置(如允许上传
.php
文件)可能导致代码执行漏洞。
12. 反序列化漏洞原理
原理:将序列化数据还原为对象时,若未校验数据来源,可能触发恶意代码执行。
触发条件:
- 存在危险的反序列化函数(如PHP的
unserialize()
、Java的ObjectInputStream.readObject()
)。- 攻击者可控序列化数据。
攻击示例(PHP):php
// 恶意序列化数据 $data = 'O:8:"Example":1:{s:3:"cmd";s:10:"calc.exe";}'; unserialize($data); // 触发__destruct()或__wakeup()方法执行系统命令
防御方案:
- 避免反序列化不可信数据。
- 使用安全反序列化库(如Java的
SerialKiller
)。