修复的方法就是对fileName进行白名单格式检查,比如,只允许出现字符数字以及.。
示例3(不安全的格式化字符串):
b.py
target是个url格式的串,未经过滤。并且还有潜在威胁,deep使用了%s,其实它必须是个int,使用%d才对,假如以后有机会感染deep变量,那就xxoo了。
代码如下:
cmd = 'python b.py --task_id "%s" -s %s --deep %s --check_level %s -b' %(taski,target,deep,check_level)
cmd = 'python b.py --task_id "%s" -s %s --deep %s --check_level %s -b' %(taski,target,deep,check_level)
示例4(无法利用的命令注入):
c.py
site_report函数,tid参数未经格式化,目前无法利用是因为有一个查询数据库的语句:
get_object_or_404(Task, get_domain_query(request), id=tid)#这里会让带了特殊符号的tid查不到记录,所以变为404,暂时保护了位于下文的cmd拼接。
一旦该语句变更,就会导致新的命令注入漏洞
cmd = 'sh /opt/report %s >/tmp/export_report.log 2>&1' % tid
更多关于Discuz论坛内容来自木庄网络博客
标签:Discuz论坛
相关阅读 >>
discuz 论坛注册的时候提示 内部错误,无法显示此内容的解决方法
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
discuz!x3.2版设置论坛qq在线客服号码无法发起聊天的问题解决办法
更多相关阅读请进入《Discuz论坛》频道 >>
相关推荐
评论
管理员已关闭评论功能...
- 欢迎访问木庄网络博客
- 可复制:代码框内的文字。
- 方法:Ctrl+C。