VulnHub-PwnLab: init-靶机渗透学习

访客4年前黑客工具296

靶机地址:https://www.vulnhub.com/entry/pwnlab-init,158/

靶机难度:中级(CTF)

靶机发布日期:2016年8月1日

靶机描述:欢迎访问PwnLab: init,我的之一个Boot2Root虚拟机。我的意思是简单,我希望你喜欢它,也许学到了一些东西。这个CTF的目的是获取根目录并读取de flag。

目标:得到root权限&找到flag.txt

作者:DXR嗯嗯呐


信息收集

nmap 扫描靶机地址

1608924556_5fe63d8c90c1fd604a1a9.png!small?1608924556281

nmap扫描端口

1608924565_5fe63d952cc66a5920b73.png!small?1608924564908

80 http

111 rpcbind

3306 mysql

44225 RPC

先访问80端口

1608924574_5fe63d9e35a2e10a2cee4.png!small?1608924573826

试了一下admin用户不行,不知道密码,没办法,dirb扫描看一下

1608924583_5fe63da71108d6362860f.png!small?1608924582678

发现upload目录

1608924602_5fe63dba7196e30f12754.png!small?1608924602266

测试一下http请求 *** ,看看是否存在put *** ,可不可以上传文件

1608924607_5fe63dbfcc49aa4055bd7.png!small?1608924607474

结果不存在。

nikto扫描,发现config.php文件

1608924728_5fe63e38d26d520e23c8f.png!small?1608924728575

说config文件中有数据库密码,但是访问什么也没有

1608924738_5fe63e42643260818e294.png!small?1608924737985




1608924750_5fe63e4e930d1e775f319.png!small?1608924750250

php://filter利用

我们再看来过来主web界面

1608924756_5fe63e542cd519a9c8eb2.png!small?1608924755762

根据这种形式的url,判断可能存在LFI漏洞

我们先用最基本的来尝试:

http://192.168.16.144/?page=//https://www.freebuf.com/etc/passwd

发现不行

这里看了前辈经验使用php://filter元封装器尝试(php:// 学习)

http://192.168.16.144/?page=php://filter/read=convert.base64-encode/resource=login

  • php://filter:? 是一种元封装器, 设计用于数据流打开时的筛选过滤应用
  • read=<读链的筛选列表>
  • convert.base64-encode:? 如果源文件为.php则很有可能在前台显示不出来。此时我们采用的 *** 是,先让文件转化为base64格式(convert.base64-encode)然后再输出,这样不论是什么格式的文件都可以在前台输出。convert.base64-encode和 convert.base64-decode使用这两个过滤器等同于分别用 base64_encode()和 base64_decode()函数处理所有的流数据。
  • resource=<要过滤的数据流> :? 这个参数是必须的。它指定了你要筛选过滤的数据流。

1608924885_5fe63ed56a22c9a66d3bf.png!small?1608924885127

解码,login文件源码

1608924915_5fe63ef30abd8162553a2.png!small?1608924915227

发现之前的config文件中可能真的有数据库账号密码,而且根据login源码提示应该和login文件同级目录

1608924952_5fe63f18abed9c8182208.png!small?1608924952442

1608924991_5fe63f3fd6c62b45feefe.png!small?1608924991514

确定了数据库的账号密码

$server="localhost";

$username="root";

$password="H4u%QJ_H99";

$database="Users";

连接数据库,发现users表中有几个用户

1608925022_5fe63f5eda543b2a9062e.png!small?1608925022512

Base64解密

kent/JWzXuBJJNy

mike/SIfdsTEn6I

kane/iSv5Ym2GRo

LFI漏洞利用

登陆,有个文件上传,只能上传图片

1608925057_5fe63f81f3ba618d62241.png!small?1608925057656

看一下upload源码

1608925064_5fe63f88650fa42036dfa.png!small?1608925064173

对文件后缀,使用getimagesize检查图片等其他条件,看了一下应该可以使用GIF89A图片头欺骗

msfvenom生成一个php反弹shell

1608925079_5fe63f97dbae0ca11092e.png!small?1608925080075

添加GIF89a图片头

1608925085_5fe63f9d576835cd52fb3.png!small?1608925085139

上传成功

1608925090_5fe63fa25432267e7d9dc.png!small?1608925090008

同时显示了文件的路径

1608925097_5fe63fa9592dd3a289ed4.png!small?1608925096953

1608925101_5fe63fad6df923132d9a7.png!small?1608925100998

getshell

配置msfconsole,监听本地的443端口

1608925113_5fe63fb928034dc6646aa.png!small?1608925112767

访问木马文件,看来没办法执行我们上传的gif文件

1608925119_5fe63fbf54b783ea0b31c.png!small?1608925118975

我们在看一下index的源码,发现一个$_COOKIE函数

1608925203_5fe6401371a5a6defc63b.png!small?1608925203136

根据上面的意思,意味着我们需要修改cookie,修改为lang=图片的位置,这样index.php就会去包含这个图片,执行其中的反向shell代码。

1608925213_5fe6401dc46ad5875dee5.png!small?1608925214665

提权

成功获得shell,看一下没有sudo权限,先去home目录看看,发现四个用户

1608925259_5fe6404b4c885b9b2aaae.png!small?1608925258883

其中kane和kent用户可以登录,在kane用户下发现了一个具有sid权限的文件,文件拥有者为mike用户

1608925275_5fe6405b1e7b12ea1f988.png!small?1608925274710

Strings 看一下文件内容

1608925287_5fe64067a4e577cbf618e.png!small?1608925287333

发现cat mike目录下一个文件,他有权限吗???

先执行文件,看看

1608925357_5fe640ad262ea089fcf8a.png!small?1608925356705

报错cat不到文件,那我们正好可以找个随便找个目录,做一个骚操作

首先进入/tmp目录,将/bin/bash写入名为cat的文件中,并赋权

echo /bin/bash > cat

1608925382_5fe640c604ef77874e224.png!small?1608925381672

在修改环境变量,将环境变量中执行命令查找如下目录/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games,修改为首先查找/tmp目录下

修改前:

1608925398_5fe640d662430de86e0a1.png!small?1608925397990

执行命令

export PATH=/tmp:$PATH

修改后:

1608925435_5fe640fb7c3875b6d4511.png!small?1608925435086

修改之后,执行msgmike文件,这样执行到cat: /home/mike/msg.txt部分,优先在tmp目录查找cat命令,执行名为cat的二进制文件,实际我们在/tmp/cat文件中写入的是/bin/bash,这用等于在mike用户权限下执行了bash,获得了mike用户的shell

1608925454_5fe6410e639556b703992.png!small?1608925454042

在mike目录发现msg2root文件具备sid权限并且文件拥有者为root

1608925511_5fe641470273d34b8f9c4.png!small?1608925510612

老规矩先strings看一下函数,发现fgets()函数

  • fgets():从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内

1608925524_5fe6415472e0c2e7976f7.png!small?1608925524331

只读取一行?,测试一下

1608925536_5fe641603c4c91c3d6653.png!small?1608925535862

只输出了id,ls命令执行了

1608925542_5fe64166e3cd36a914a60.png!small?1608925542519

这样就很容易了,直接/bin/sh获得root权限

1608925552_5fe641703e5e39fcd7877.png!small?1608925551925

。。。。。。忘记了cat命令让我设置为/bin/bash了。我说的怎么读不出来。因为只是UID和GID为root权限,环境变量还是mike用户的。关于SID、UID、GID的概念我这里就不多介绍了。可兴趣的同学去度娘看看更好,提权经常用到相关概念。

滴滴滴滴,完成!!!

总结

  • 1、首先通过利用php://filter读取config文件中数据库信息,
  • 2、登陆数据库,登陆web界面,找到上传点,通过GIF89a图片头欺骗,上传木马。
  • 3、因为靶机无法执行图片中反向shell代码,通过在index源码中发现,indexhttp消息头中cookie读取lang参数。
  • 4、将lang的值修改为图片的目录,这样index.php包含了图片中的代码,成功获得shell
  • 5、在kane目录下,发现sid权限的文件,并且拥有者为miko
  • 6、通过修改环境变量和命令内容,成功获得miko权限
  • 8、在miko目录下发现一个sid权限的文件,文件拥有者为root
  • 9、发现msg2root脚本使用fgets()只能读取一行,对输入用 ; 隔开,提权成功获得root用户



相关文章

鲜茶道什么最好喝(鲜茶道加盟店须具备这些条

鲜茶道什么最好喝(鲜茶道加盟店须具备这些条

说到喝喝茶,流传着很多“传说”,比如喝茶睡不着,头泡不能喝等等,这些都是真的吗?这这些是真是假,我们看看本文就知道了。 ①睡前喝茶影响睡眠? “咖啡碱有兴奋神经的作用。不同个体对咖啡碱的耐受程...

黑客小程序,网络黑客非你莫属,怎么用黑客手段获得别人qq密码

通配符是一种特殊语句,主要有型号(*)和问号(?),用来对字符串进行模糊匹配(比如文件名,参数名)。 当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或懒得输入完整名字时,常常使用...

东亚五国包括哪些国家【东亚地区包括哪些国家】

  亚太哪些国家(亚太等国过中秋佳节)会出现明月,在手机上玩酒。中秋佳节,是家人团聚、吃月饼、赏月的情况下了。尽管时间和空间把大家隔在了地球上的各部,可是夜里有一轮明月高悬,确实是太美了。中秋佳节一过...

国际权威医学期刊:美建筑红线国应对新冠疫情几乎每一

  国际权威医学期刊:美国应对新冠疫情几乎每一步都失败   新华社华盛顿10月9日电 世界医疗领域顶级学术期刊、美国《新英格兰医学杂志》8日刊文说,新冠疫情给全球带来危机,也给领导力带来巨大考验,但...

30岁以下创业领袖榜(胡润公布30位30岁以下创业领袖)

30岁以下创业领袖榜(胡润公布30位30岁以下创业领袖) 2017胡润30X30创业领袖 据新浪科技报道,胡润研究院发布《2017胡润30X30创业领袖》 (Hurun 30 Under 30 f...

亚马逊跨境电商关联怎么办(跨境电商新手必备

亚马逊跨境电商关联怎么办(跨境电商新手必备

做亚马逊跨境电商关联问题一定是卖家们需要掌握的,毕竟这是一个会导致大家账号被封的情况,而账号无论大家是在什么平台上开店,这都是最为基础的因素,那么这次超级浏览器又为大家带来了哪些卖家们在亚马逊跨境电商...