导语:在Windows系统下,剪贴板是一个常见的功能,这其中有哪些可被利用的地方呢?本文将尝试整理这部分内容
0x00 前言
在Windows系统下,剪贴板是一个常见的功能,这其中有哪些可被利用的地方呢?本文将尝试整理这部分内容。
0x01 简介
本文将要介绍以下内容:
· 写入剪贴板的方法
· 读取剪贴板的方法
· 利用思路
0x02 剪贴板简介
剪贴板是指windows操作系统提供的一个暂存数据和共享数据的模块,可理解为数据中转站
剪贴板的内容保存在内存中,所以系统重启后,保存的数据丢失
XP系统支持剪贴板查看器clipbrd.exe(Win7后移除),可查看剪贴板内容
剪贴板查看器clipbrd.exe不需要安装,可直接在其他系统(例如Win7)下使用
复制数据后,在剪贴板查看器clipbrd.exe中实时显示复制的内容,如下图
0x03 写入剪贴板的方法
1、Ctrl+C
复制数据,或者通过快捷键Ctrl+C,数据保存到剪贴板中
2、cmd下的方法
将whoami输出的内容复制到剪贴板上:
whoami|clip
如下图
将11.txt的内容复制到剪贴板上:
clip<11.txt
如下图
3、程序调用API实现
c++测试代码如下:
#include <windows.h> BOOL CopyToClipboard(char* pszData) { if(::OpenClipboard(NULL)) { ::EmptyClipboard(); HGLOBAL clipbuffer; char *buffer; clipbuffer = ::GlobalAlloc(GMEM_DDESHARE, strlen(pszData)+1); buffer = (char *)::GlobalLock(clipbuffer); strcpy_s(buffer,strlen(pszData)+1, pszData); ::GlobalUnlock(clipbuffer); ::SetClipboardData(CF_TEXT, clipbuffer); ::CloseClipboard(); return TRUE; } return FALSE; } int main(int argc, char* argv[]) { CopyToClipboard("clipcopydatatest"); return 0; }
执行如下图
0x04 读取剪贴板的内容
1、Ctrl+V
粘贴数据,或者通过快捷键Ctrl+V,读取剪贴板中保存的数据
2、读取工具
剪贴板查看器clipbrd.exe
3、程序调用API实现
c++测试代码如下:
#include <windows.h> BOOL GetTextFromClipboard() { if(::OpenClipboard(NULL)) { HGLOBAL hMem = GetClipboardData(CF_TEXT); if(NULL != hMem) { char* lpStr = (char*)::GlobalLock(hMem); if(NULL != lpStr) { printf("%s",lpStr); ::GlobalUnlock(hMem); } } ::CloseClipboard(); return TRUE; } return FALSE; } int main(int argc, char* argv[]) { GetTextFromClipboard(); return 0; }
成功读取剪贴板内容,执行如下图
注:
也可以模拟键盘输入Ctrl+V,获得剪贴板内容
0x05 利用思路
1、实时捕获剪贴板内容
渗透测试中,在取得系统控制权限后,会尝试读取用户的剪贴板内容,获得有价值的信息
而实际利用上,最好能够实时捕获剪贴板的内容,配合键盘记录,能够全面监控用户的登录输入内容
在程序实现上,可以加一个循环判断,如果剪贴板内容改变,就记录下来
(1) 使用c++读取当前系统的剪贴板信息
代码参考上节内容,加入循环判断,写入文件的功能,代码暂略
(2) 使用powershell读取当前系统的剪贴板信息
参考地址:
测试如下图
2、Pastejacking
用作钓鱼网站,欺骗用户复制网址中的一段内容,劫持copyTextToClipboard事件,在复制的内容中加入恶意代码
复制内容echo "not evil",实际剪贴板获得的内容为echo "evil"
测试如下图
3、修改配置允许IE浏览器读取剪贴板内容
页面内容:
<!DOCTYPE html> <html> <script type="text/javascript"> var content = clipboardData.getData("Text"); if (content!=null) { document.write(content); } else { document.write('No text found in clipboard.'); } </script> </html>
用户通过IE浏览器访问,默认情况下会弹框提示是否允许此网页访问剪贴板
如下图
选择允许访问,网页获得剪贴板内容,如下图
注:
Chrome、Firefox浏览器不允许通过getData访问用户的剪贴板内容
如果获得了用户系统的权限,可以修改IE配置,允许网页访问剪贴板
修改方式如下:
Internet选项 -> 安全 -> 自定义级别
设置 -> 脚本 -> 允许对剪贴板进行编程访问 -> 启用
如下图
对应注册表键值HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3下的1407
· 0表示允许
· 1表示提示
· 3表示禁止
修改注册表设置允许访问剪贴板的命令为:
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3" /v 1407 /t REG_DWORD /d 00000000 /f
重启IE浏览器后,配置生效
访问网页自动获得剪贴板内容,如下图
0x06 小结
本文介绍了Windows系统下剪贴板在渗透测试中的相关利用技巧,通过实例演示后渗透阶段的利用方法