声明:该篇文章仅供学习网络安全技术参考研究使用,请勿使用相关技术做违法操作。本公众号的技术文章可以转载,能被更多人认可本文的创作内容属实荣幸之至,请在转载时标明转载来源即可.也欢迎对文章中出现的不足和错误进行批评指正!
实战打靶系列第 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。
一个简单的页面,但是有两个输入框并且进行说,请展示你的sql技巧,很明显,这里有sql注入漏洞,但是两边都输入' or 1=1#(万能密码),发现没有什么用处
先进行一个目录爆破
dirsearch -u http://192.168.166.141/
发现了很多的目录,那么这里对一些目录进行访问
像是一个文件上传的点
没有信息
一个phpinfo(),但是最下面暴露了其路径/var/www/in.php
phpmyadmin的登录后台,使用弱口令,root/admin,发现登录不进去
既然有phpmy的路径,那么去对这个路径及逆行爆破,看是否有文件配置信息
dirsearch -u http://192.168.166.141/phpmy/
其中,发现有/phpmy/config.inc和/phpmy/config.inc.php文件
提示file为空,那么猜测这里可能有文件包含
信息收集中,有几个值得注意的路径,/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登录
发现直接得到了root账号的权限(路线一就是这样子)
路线二中,先看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