Hack The Box - Shared
整体思路
1.Nmap扫描
使用工具nmap扫描所有开放端口
命令:nmap ip -p- -v --min-rate=10000
扫描已开放端口的具体信息
命令:nmap ip -A -sC -sV -p 22,80,443 -T4
这里可以看到80端口处提示会重定向到http://shared.htb,所以下一步我们将share.htb添加到hosts中
2.网站漏洞分析
正常访问域名,得到一个购物界面,页面最底部提示我们这个网站用的框架是PrestaShop,但是没有说具体的版本
用searchsploit搜索一下该框架的漏洞,利用最新的sql注入试了一下,跟这个网站不太相符
再回到原网站中点击商品链接,尝试购买
网页跳转到另一个域名checkout.shared.htb,将新域名添加到hosts中,在当前浏览器成功访问,并的到购物车中数据
当我们换另一个浏览器访问时,无法调取数据库中的商品数据,这里考虑可能存在Sql注入,使用Burpsuite进行测试
在原字符串末尾添加单引号,商品编号处显示"Not Found",在原字符串末尾添加"’ – -",商品编号变回原样
现在可以确定这里存在Sql注入漏洞
3.Sql注入漏洞利用
使用字符"’ union select 1,2,3,…"检测数据库信息写出位置
将原字符串改造为:%7B%22asd**' union select 1,2,4-- -**%22%3A%221%22%7D
,得到输出
现在可以确定,数据库在第二个字段中输出,接下来继续构造payload
' union select 1,(select group_concat(schema_name) from INFORMATION_SCHEMA.SCHEMATA),3-- -
成功返回数据库名称
构造payload得到checkout数据库的所有表并返回用户表中的信息
' union select 1,(select group_concat(TABLE_NAME,':',COLUMN_NAME) from INFORMATION_SCHEMA.COLUMNS where TABLE_SCHEMA like 'checkout'),3-- -
' union select 1,(select group_concat(username,':',password) from user),3-- -
成功得到用户信息,james_mason:fc895d4eddc2fc12f995e18c865cf273
经过MD5密码破解,得到密码Soleil101
ssh登入
进入/var/www/shared.htb/ps/var/cache/prod/ContainerGwumvvn/appProdProjectContainer.php中找到一段数据库信息
成功进入数据库中,但没有找到什么有用的信息
经过一番探索,我发现这个用户并没有什么权限,继续尝试横向提权
4.Ipython漏洞利用
我们看到用户dan_smith可以访问user.txt,并且这里ipython的版本为8.0.0,搜索一下相关rce
这个漏洞的版本正好符合,我们照葫芦画瓢,接下来新建文件夹/tmp/profile_default/startup/shell.py,并进行漏洞利用
另外开一个窗口进行反弹shell,这里我们可以看到,反弹得到的仍然是之前的权限
使用linpeas提权工具进行扫描,根据扫描结果的提示,我们可以尝试将刚才创建的反弹shell文件放到**/opt/scripts_review**下,然后系统会在1min之内执行下面这些命令,ipython命令执行完毕后反弹shell
横向提权得到dan_smith用户权限,但这个shell窗口只能持续一段时间,
我们根据得到的用户私钥,使用命令ssh -i key得到稳定的shell窗口
找到属于当前用户所在组的所属文件夹,从文件夹名称可以看出与redis有关,使用命令nc -nvlp 6379,对redis并且把这个文件夹传回到本地
5.redis漏洞利用
我尝试执行这个文件,这里说端口6379无法连接,我们打开本地的6379监听,之后继续运行redis_connector_dev,得到了一串输出
回到靶机中尝试连接redis,搜索一些可以利用的redis漏洞,成功找到一个可以反弹shell的漏洞,这里通过加载一个模块,加载后可以运行system.exec命令,再利用这个命令执行反弹shell命令
redis的身份认证是有时间限制的,大约1min后之前的一切操作都需要从头开始
反弹得到shell,最终得到root的flag
打完收工!
知识点汇总
1.在vi编辑器中使用命令**%s/;/\r/g**,vi编辑器换行时使用,将文本中的分号改为换行;
2.find / -group developer -ls 找到属于developer组的文件夹,这也很可能是提权的关键点;
3.使用命令2>/dev/null忽略错误提示;
4.grep -i -R pass . | less -S 在当前文件中寻找包含’pass’关键字的那一行,并且忽略大小写,在每行行尾直接截断,不换行;
5.命令**scp -i rsa username@ip:file .**从目标机器中下载file到当前位置,另一种用法:**scp -i rsa file username@ip:将当前位置的file上传到目标机器/home/username/**中;
工具汇总
1.nmap
2.BurpSuite
3.HackTricks
4.Linpeas
5.Searchexploit
6.CrackStation
漏洞利用
继续加油 :)