Kioptrix系列的靶机,第四个。
先用namp扫一下
可以看到有ssh,http,samba。
用searchSploit 分别搜索对应版本漏洞。
Apache看到一条符合的。
搜索了一下,发现是.htaccess配置文件中的内容不符合规则时,服务器响应头的Allow字段会泄露部分内存的信息。
尝试了一下,并没有触发。
Samba 3.X-4.X有很多漏洞,依次试一下。
尝试了usermap_script,没有成功
尝试第二个的时候发现了samaba的具体版本,searchsploit中并没有合适的exp
看Web,直接进入后是登陆页面。抓包,sqlmap跑找到密码字段是注入点。
得到两个帐号密码
尝试ssh登陆
emm- -
另一个也是同样的
感觉没什么用。
登陆web试试
继续用sqlmap跑mysql库的user表,跑出1个密文密码
除了*号是是40位
dirb爆破目录。
john目录下有个john.php但是没法看到其中内容,访问会被重定向到index
到这里没什么思路了。于是搜索了下。
发现可以通过echo os.system(‘/bin/bash’)来逃逸受限shell,之后提权。
经过搜索,使用udf提权。
在john的shell里跑了一下linpeass.sh
发现系统中有对应的so
登陆mysql,select * from mysql.func
发现已经导入过了
直接 select sys_exec('chmod u+s /bin/bash')
或者select sys_exec('echo "john ALL=(ALL) NOPASSWD: ALL >> /etc/sudoers"')
获得root权限
获得新技能
smbclient -L xxxxx -N 获取Samba版本号
echo os.system绕过命令限制
sqlmap读文件 –file-read=/bin/kshell
getconf LONG_BIT 获取系统位数
mysql UDF
获得新思路
- echo $PATH 查看环境变量
- echo $SHELL查看用的什么shell
- ps -ef 看mysql是否以root权限运行,考虑mysql提权
获得新工具
- 目录扫描工具gobuster
- 目录扫描工具dirsearch
另一种拿shell方式
前面登陆后到这个页面就没思路了。但其实忘记了测试这条url
对此时的url进行fuzz测试,当username不存在时会报错,如下
继续测试修改username=/etc/passwd,发现做了过滤
双写绕过
发现代码逻辑是username/username.php
php版本是5.2.4<5.3.4,可以用%00截断(NUL meta character)
读到了东西
试了下远程包含
不行,试了php://input也不行。
继续本地文件包含
读取一下当前进程的信息
读取当前进程的cmdline
枚举文件描述符
这里发现当用户在web页面登陆成功后,会将用户名和密码写到fd9,应该是php的session。
前面发现密码字段是注入点,所以这里可以构造万能密码登陆,后面再接上一句话木马。
先试一下phpinfo
密码字段填'or+1=1--+<?php+phpinfo();?>
访问fd9
发现phpinfo执行成功
写一个一句话
再次访问,发现还是phpinfo。
经过多次实验,发现在登陆时去掉Cookie,响应会报错,并Set-Cookie这个cookie与之前的不同。把这个cookie写到请求的Cookie请求头再去登陆。请求fd时也带有这个cookie。
发现改变cookie的值,fd中的内容也不同。应该是对于每一个session都起了一个进程。
这时已经可以以www-data的身份执行命令。
前面已经使用mysql UDF chmod u+s /bin/bash来获得root权限。
这里我们安置一个后门,并用root权限运行。
搜一下whereis netcat(看了攻略才知道的,竟然自带netcat)
先用nc传个shell回来,然后把CrossC2生成的C2传过去。
用MySQL的UDFsys_exec()执行木马。
拿到shell后看了member.php的内容
发现allow_url_fopen和allow_url_include都是On
之所以不可以远程文件包含是因为使用了file_exists(),只有本地路径存在才可以执行到include()。
获得新思路
查看/proc/self/fd/xxx看看有没有什么有趣的东西
查看/proc/self/cmdline查看运行符文的命令行