win7-10 粘滞键漏洞


原理

按下五次shift可以调用位于c:\windows\system32\sethc.exe的程序, 通过其他方式将这个绑定到cmd上直接调用到cmd, 通过指令对用户密码进行修改或者删除, 从而登录不知道密码的计算机

在没有进入系统的情况下, 运行的程序是以最高权限去运行的

但是部分系统通过补丁对其进行了修复, 有打游戏的会禁用粘滞键

基本流程

  1. 首先,在未登录系统时,连续按5次shift键,弹出程序c:\windows\system32\sethc.exe
  2. 其次,接着强制关机想办法进入"启动启动修复(推荐)"界面,该界面存在一个漏洞,它能打开一个本地的错误TXT文件.
  3. 再次,通过TXT文件的打开选项,在未进入系统之前就打开C盘存放“sethc.exe”的位置,接着将cmd.exe程序复制一个副本,并命名为“sethc.exe”.
  4. 最后,重启计算机再次按下5次Shift键时,会弹出CMD界面,再输入命令修改登录密码.

相关操作

  1. CMD工具路径:c:\windows\system32\cmd
  2. 用户账户密码存储位置:c:\windows\system32\config\SAM
  3. 修改账户密码:net user 用户名 新密码
  4. 创建一个新用户:net user 用户名 新密码 /add
  5. 删除用户:net user 用户名 /del
  6. 提示管理员:net localgroup administrators 用户名 /add

漏洞复现

当出现“正在启动 Windows”界面时, 立刻强制关机电脑; 这是模拟现实生活中突然断电或不正常关机的场景, 从而弹出“修复模式"; (不行就多试几次)

开机进入“windows错误恢复”

image.png

选择启动自动修复(推荐), 然后会弹出来: 您想使用"系统还原"还原计算机吗?点击取消

image.png

点击查看问题详细信息, 而不是不发送和发送有关此问题的信息; 随后翻到最底下点击那个txt文件的超链接

image.png

在记事本上面的选项卡中点击文件 -> 打开 进入c:\windows\system32, 找到sethc文件, 更改其名字;

此时因为未进入系统, 我们拥有最高权限, 这个操作是允许的;

将sethc改名之后, 我们找到cmd并创建一个副本, 将其更名为sethc

退出,重新启动计算机, 然后在登录界面按下五次shift, 发现弹出cmd窗口

image.png

后续操作

更改已经存在的账号

# 设置无密码(此处账户为smith)    
net user smith ""

新增账号

# 新增一个用户(用户abc,密码abcde)
net abc abcde /add

# 给它提权,添加到管理员组中
net localgroup administrators abc /add

# 删除用户
net user abc /del