VulnHub靶机-Billu_b0x | 红队打靶
2023-6-5 12:54:45 Author: 0x00实验室(查看原文) 阅读量:15 收藏

 声明:该篇文章仅供学习网络安全技术参考研究使用,请勿使用相关技术做违法操作。本公众号的技术文章可以转载,能被更多人认可本文的创作内容属实荣幸之至,请在转载时标明转载来源即可.也欢迎对文章中出现的不足和错误进行批评指正!

实战打靶系列第 11 篇文章 

这台靶机涉及的知识点,SQL注入,文件上传,文件包含,内核提权
并且这台靶机将讲解两种思路

一、主机发现

arp-scan -l

那么

靶机ip:192.168.166.141

kali的ip:192.168.166.128

二、信息收集

靶机开放的端口,端口运行的服务以及操作系统类型检测

nmap -sT -O -sV -p- 192.168.166.141

22,80端口开放,22是ssh服务,80是http服务,操作系统探测是Linux 3.2-4.9。

使用浏览器对80端口进行查看

一个简单的页面,但是有两个输入框并且进行说,请展示你的sql技巧,很明显,这里有sql注入漏洞,但是两边都输入' or 1=1#(万能密码),发现没有什么用处

先进行一个目录爆破

对80端口进行目录爆破

dirsearch -u http://192.168.166.141/

发现了很多的目录,那么这里对一些目录进行访问

/add.php

像是一个文件上传的点

/c

没有信息

/in

一个phpinfo(),但是最下面暴露了其路径/var/www/in.php

/phpmy

phpmyadmin的登录后台,使用弱口令,root/admin,发现登录不进去

既然有phpmy的路径,那么去对这个路径及逆行爆破,看是否有文件配置信息

dirsearch -u http://192.168.166.141/phpmy/

其中,发现有/phpmy/config.inc和/phpmy/config.inc.php文件

/test.php

提示file为空,那么猜测这里可能有文件包含

三、web渗透

攻击路线一:通过文件包含进行渗透,获取账号密码

信息收集中,有几个值得注意的路径,/test.php,/phpmy,/add.php

/test.php中可能存在文件包含,那么先对其进行探测,/test.php中提到file为空,那么在url中添加一个file变量,数值为../../../../../etc/passwd

发现没有回显信息和刚才一样

更换http的提交方式,使用burp的拦截功能,将数据包发送到repeater模块

右键change request method,更改提交方式

发现返回了/etc/passwd的内容,

因为路径爆破的过程中有发现一些目录或者文件,那么利用这里的文件包含进行读取

in.php(前面访问in路径的时候暴露出来的文件名称)

发现返回的并不是phpinfo页面,而是源代码,那么这里应该不是文件包含漏洞,应该是任意文件下载漏洞

文件包含是将文件的内容解析加载出来,而任意文件下载是将文件源代码展示出来

当访问到c.php的时候,发现有数据库的账号密码泄露

使用账号密码可以登录phpmy的后台

在后台ica_lab表中的auto中,发现另外一个账号密码,猜测应该是index.php的sql技巧那里的,因为这个数据库是为这个页面进行数据存储的

使用文件任意下载进行查看phpmy的配置文件,/phpmy/config.inc.php文件(/phpmy/config.inc查看表示没有该文件)

在配置文件中,又发现了账号密码

尝试使用该账号密码登录phpmy

发现登录不进去,从前面的信息收集中,除了22端口之外,没有可以登录的地方了(80端口的默认面的账号密码在数据库中看到了,如果80端口的默认页面有这个账号密码,应该数据库中看得到)

使用ssh登录

ssh [email protected]

发现直接得到了root账号的权限(路线一就是这样子)

攻击路线二:sql注入,文件上传,文件包含

路线二中,先看sql注入

sql注入有三种方法可以直接登录

1、利用上面的任意文件下载漏洞,查看到phpmy的账号密码,登录phpmy之后auto中看到的账号密码可以登录

2、使用任意文件下载读取index.php的源码,构造万能密码登录

sql语句

$uname=str_replace(''','',urldecode($POST['un']));$pass=str_replace(''','',urldecode($POST['ps']));$run='select * from auth where  pass=''.$pass.'' and uname=''.$uname.''';

可以构造万能密码 :

username填 ' or 1=1#

password 填 \'

SQL语句变成了'select * from auth where  pass=‘ ’ and uname=‘ or 1=1#

3、使用sql注入的一些万能密码的payload结合burp进行注入

因为这个过程需要用到很多的payload,直接显示找到了万能密码的payload文件

seclists中的sql的payload文件,/usr/share/seclists/Fuzzing/SQLi/Generic-SQLi.txt(对应username)

burp专业版中自带的针对SQL注入的字典(对应password)

使用以上的三种方法可以直接登录,登录成功,跳转到panel.php,如果没有登陆,直接访问panel.php,会跳回index.php

来到panel.php

这里可以展示用户

还可以添加用户,添加用户这里可以上传图片,但是看到这个上传的感觉很熟悉,和前面的add.php一样

猜测添加用户这里调用了add.php

先进行添加用户

上传一个php的一句话木马,shell.php,只允许jpg,png,gif的图片格式上传

将一句话木马更改为jpg格式,通过burp,更改Content-Type和文件头

上传成功

查看账户,确实多了aa这个账户

访问shell.jpg并且通过cmd传入id这个值,发现没有信息显示,那么shell.jpg没有被解析成PHP代码并执行

前面看到添加用户那里,可能调用add.php这个文件,那么抓取添加文件的数据包,发现通过post方式传入了一个add的数值,尝试一下这里是否有文件包含

将add换成in.php(in.php这里为phpinfo的页面)看是否会回显phpinfo的页面

发现返回了phpinfo的页面

尝试是否有远程包含,直接包含它存在的图片,没有返回图片信息,那么应该不存在远程包含

这里是否可以将文件解析成PHP代码并执行,将上传的一句话的木马的地址更换这个地方,并传入id这个数值

发现没有返回id这个命令执行后的信息,那么这里是不是不允许传入参数,但是有执行这个文件呢

上传一个反弹shell(仍然以图片格式上传)

添加成功

利用文件包含,尝试一下是否有执行(监听1234端口)

成功获取初始shell

四、提权

攻击路线二的提权

python -c 'import pty;pty.spawn("/bin/bash")'    提高shell的交互性

输入uname -a

发现linux版本很低

searchsploit 3.13.0

发现有内核提权脚本,将脚本下载到传输到靶机上(记得寻找一个有权限的目录,如tmp)

gcc 37292.c -o exp   编译

运行exp(有警告和报错是正常的)

获得root权限

参考资料:https://www.aqniukt.com/goods/show/2434?targetId=16289&preview=0

文章来源: http://mp.weixin.qq.com/s?__biz=Mzg5MDY2MTUyMA==&mid=2247490360&idx=1&sn=addd63c1eea25adb9b22f1b130b90be8&chksm=cfd864c7f8afedd19cc8e499ffd6318128768215fd8959e6c4477d2ba3b29bf70607dcf6fcc0#rd
如有侵权请联系:admin#unsafe.sh