linux – 从内存中读取变量
发布时间:2020-12-14 02:29:27 所属栏目:Linux 来源:网络整理
导读:我有一个简单的脚本,读取用户的输入(密码)并将其保存到变量 read -s -p "password: " PASSWD; printf "%b" "n" 显然这不安全,因为它存储在内存中的明文中,并且可以通过核心转储访问它?我如何从内存中读取此变量. 请注意,我不是在寻找更好的解决方案我只是
我有一个简单的脚本,读取用户的输入(密码)并将其保存到变量
read -s -p "password: " PASSWD; printf "%b" "n" 显然这不安全,因为它存储在内存中的明文中,并且可以通过核心转储访问它?我如何从内存中读取此变量. 解决方法
root总是可以(几乎所有的值总是)读取进程内存,因此无论它是如何存储的,都可以提取它(即使密码被发送到安全的存储设备,如智能卡,总会有一个小窗口,iButton或TPM硬件).
在您的示例中,PASSWD将存储在本地变量中.进程的环境变量存储在/ proc / PID / environ中,可由该用户或root读取: [choad ~]$read -s -p "password: " PASSWD; echo password: [choad ~]$echo $PASSWD soopersekrit [choad ~]$ls -al /proc/self/environ -r-------- 1 michael michael 0 May 6 14:46 /proc/self/environ [choad ~]$grep PASSWD /proc/self/environ [choad ~]$export PASSWD [choad ~]$tr ' 00' 'n' < /proc/self/environ | grep PASSWD PASSWD=soopersekrit [choad ~]$echo $$ 19613 [choad ~]$gdb -p 19613 (gdb) info proc mappings 0x91f2000 0x9540000 0x34e000 0 [heap] (gdb) dump memory /tmp/bash.mem 0x91f2000 0x9540000 [choat ~]$strings /tmp/bash.mem |grep ^PASSWD PASSWD=soopersekrit PASSWD=soopersekrit N.B.:某些发行版启用了Yama的ptrace_scope限制,这些限制会阻止附加到同一用户拥有的任意进程. N.B.:最谨慎的是通过命令行传递密码.没有什么可以作为全世界都无法知道的论点.命令行不受保护. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – 如何从磁盘上追踪进程执行的文件?
- 【漏洞测试】SUDO:CVE-2019-14287
- 是否有一个简单的命令行工具,用于在Linux上嗅探单个命令?
- vsftp 500 OOPS: cannot change directory:/home/xyp
- linux – 为什么第二次cp命令更快
- linux centos7安装mysql
- linux – 自动同步两个Amazon S3存储桶,除了s3cmd?
- linux – Matlab – 运行文件而不打开GUI,然后退出
- linux – 如何在centos 7中启用apache-http / 2?
- linux – 如何grep包含日志文件中特定单词的行?