hoshi靶机—难度medium知识点-文件包含+表达式注入+盲水印 #
Nmap扫描发现端口 80和22 #
我们先访问看看WEB什么效果
index.php 好吧又是经典的界面 现在看到这种界面就感觉难度不低
这里提交反馈会在下面生成在uploads文件夹生成你的文件名
我们再看admin.php
这里需要密码 我们看看源码然后这里爆破了下都没发现什么 先放在这里
目录扫描到一个/robots.txt 文件我们访问看看
这里卡了很久问了下作者说是用盲水印 工具就选这个 bwm.py
python bwmforpy3.py decode MAZ.png int.png 123.png
前面maz是原图 int是水印图 123.png是生成图片
我们访问目录 - 这里只有一个GIFT.PHP我们访问
这种看着就有点像带参数 我们FUZZ下
wfuzz -w /usr/share/zidian/SecLists-2023.2/Discovery/Web-Content/common.txt -u http://IP/hoshi/gift.php?FUZZ=index.php --hl 0
他返回了index.php界面 也就是说可能是 文件包含
这里我有一个思路 不是一开始生成产生了txt文件吗 我们把txt文件包含不就行了
如图他只能包含html下的 不能出现/ .. 符号 有没有可能把txt文件放上来呢
这里我在名字前面加../果然他目录发生了变化不在uploads里面放到了html里面然后我去包含试试
看到上面就发现不行了txt里面需要完整php代码但是被实体化了肯定加载不了了
都变成了文字
然后卡了很久问下下作者
才想到密码文件还没用这里就是猜密码了 这里我用密码生成工具生成hoshi模板密码都没用
然后试了域名 结果把客服电话放上去发现可以了 400-123-4567
但是吧也没注意什么这里又卡了几个小时吧
然后问作者XD 结果发现了一个
这里你可以试试静态页面肯定就是html页面了 也就是说你生成的反馈文件会被admin.php生成admin.html
但是HTML怎么执行系统命令呢 有PHP语句也不行啊 但是你忘了还有一个文件包含点了吗 而且我们文件名是随便取得
拿到shell权限 #
我们创建一个这样名字得反馈文件然后先访问admin.html看看有没有
访问admin.html 因为我们没有执行admin.php所以还没加载进去
访问看看是否加载了
确实加载了我们得html应该也变了 我们再包含试试
可以看到成功执行
接着我们上传一个
<?php system($_GET["a"]) ?>
然后反弹busybox
成功拿到SHELL
这里有疑问
1:你生成<?phhxxx?>文件你直接包含admin.php不行吗
1.1 admin.php生成的是html代码 - > 里面有php命令 但是被注释了 因为HTML代码会把PHP注释掉
所以包含html里面会执行PHP代码
拿root #
这里家目录有一个welcome用户 但是要找密码
在/var/backups 有一个shadow~
使用john解码获得密码loveme2 然后登录
sudo一下这种一看就是NC访问
我们访问执行下
这里有一个日志可以看怎么执行得
这里猜出来很大概率是拼接 那我们可以表达式注入这里禁用了很多字符如| & ; 但是&&没有这里给出payload
exec_cmd whoami' && chmod +s /bin/bash '
exec_cmd id' && ls -al && '
exec_cmd whoami' $(chmod +s /bin/bash) '
总结一下 #
1:累死了 但是学到了